Sfoglia il codice sorgente

Merge commit 'refs/pull/578/head' of https://gitee.com/zuohuaijun/Admin.NET into next

zuohuaijun 3 anni fa
parent
commit
031e20dfab

+ 5 - 5
Web/package.json

@@ -11,9 +11,10 @@
 	},
 	"dependencies": {
 		"@element-plus/icons-vue": "^2.0.10",
+		"@microsoft/signalr": "^6.0.10",
 		"@wangeditor/editor": "^5.1.23",
 		"@wangeditor/editor-for-vue": "^5.1.12",
-		"@microsoft/signalr": "^6.0.10",
+		"animate.css": "^4.1.1",
 		"axios": "^1.2.1",
 		"countup.js": "^2.3.2",
 		"cropperjs": "^1.5.13",
@@ -25,6 +26,7 @@
 		"js-table2excel": "^1.0.3",
 		"jsplumb": "^2.15.6",
 		"mitt": "^3.0.0",
+		"monaco-editor": "^0.34.1",
 		"nprogress": "^0.2.0",
 		"pinia": "^2.0.28",
 		"print-js": "^1.6.0",
@@ -38,12 +40,10 @@
 		"vue-clipboard3": "^2.0.0",
 		"vue-grid-layout": "^3.0.0-beta1",
 		"vue-i18n": "^9.2.2",
-		"vue-router": "^4.1.6",
 		"vue-json-pretty": "^2.2.3",
+		"vue-router": "^4.1.6",
 		"vue-signature-pad": "^3.0.2",
-		"vue3-tree-org": "^4.1.1",
-		"animate.css": "^4.1.1",
-		"monaco-editor": "^0.34.1"
+		"vue3-tree-org": "^4.1.1"
 	},
 	"devDependencies": {
 		"@types/node": "^18.11.13",

+ 293 - 206
Web/pnpm-lock.yaml

@@ -101,73 +101,40 @@ devDependencies:
   sass: registry.npmmirror.com/sass/1.58.3
   typescript: registry.npmmirror.com/typescript/4.9.5
   vite: registry.npmmirror.com/vite/4.1.3_hlkwzk2izwsolfmdrejei4vrty
-  vite-plugin-vue-setup-extend: registry.npmmirror.com/vite-plugin-vue-setup-extend/0.4.0_vite@4.1.3
+  vite-plugin-vue-setup-extend: 0.4.0_vite@4.1.3
   vue-eslint-parser: registry.npmmirror.com/vue-eslint-parser/9.1.0_eslint@8.34.0
 
 packages:
 
-  registry.npmmirror.com/@babel/helper-string-parser/7.19.4:
-    resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz}
-    name: '@babel/helper-string-parser'
-    version: 7.19.4
+  /@babel/helper-string-parser/7.19.4:
+    resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==}
     engines: {node: '>=6.9.0'}
+    dev: true
 
-  registry.npmmirror.com/@babel/helper-validator-identifier/7.19.1:
-    resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz}
-    name: '@babel/helper-validator-identifier'
-    version: 7.19.1
+  /@babel/helper-validator-identifier/7.19.1:
+    resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
     engines: {node: '>=6.9.0'}
+    dev: true
 
-  registry.npmmirror.com/@babel/parser/7.20.15:
-    resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.20.15.tgz}
-    name: '@babel/parser'
-    version: 7.20.15
+  /@babel/parser/7.20.15:
+    resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==}
     engines: {node: '>=6.0.0'}
     hasBin: true
     dependencies:
-      '@babel/types': registry.npmmirror.com/@babel/types/7.20.7
-
-  registry.npmmirror.com/@babel/runtime/7.20.13:
-    resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.13.tgz}
-    name: '@babel/runtime'
-    version: 7.20.13
-    engines: {node: '>=6.9.0'}
-    dependencies:
-      regenerator-runtime: registry.npmmirror.com/regenerator-runtime/0.13.11
-    dev: false
+      '@babel/types': 7.20.7
+    dev: true
 
-  registry.npmmirror.com/@babel/types/7.20.7:
-    resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.20.7.tgz}
-    name: '@babel/types'
-    version: 7.20.7
+  /@babel/types/7.20.7:
+    resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/helper-string-parser': registry.npmmirror.com/@babel/helper-string-parser/7.19.4
-      '@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier/7.19.1
-      to-fast-properties: registry.npmmirror.com/to-fast-properties/2.0.0
-
-  registry.npmmirror.com/@ctrl/tinycolor/3.6.0:
-    resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz}
-    name: '@ctrl/tinycolor'
-    version: 3.6.0
-    engines: {node: '>=10'}
-    dev: false
-
-  registry.npmmirror.com/@element-plus/icons-vue/2.0.10_vue@3.2.47:
-    resolution: {integrity: sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz}
-    id: registry.npmmirror.com/@element-plus/icons-vue/2.0.10
-    name: '@element-plus/icons-vue'
-    version: 2.0.10
-    peerDependencies:
-      vue: ^3.2.0
-    dependencies:
-      vue: registry.npmmirror.com/vue/3.2.47
-    dev: false
+      '@babel/helper-string-parser': 7.19.4
+      '@babel/helper-validator-identifier': 7.19.1
+      to-fast-properties: 2.0.0
+    dev: true
 
-  registry.npmmirror.com/@esbuild/android-arm/0.16.17:
-    resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz}
-    name: '@esbuild/android-arm'
-    version: 0.16.17
+  /@esbuild/android-arm/0.16.17:
+    resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==}
     engines: {node: '>=12'}
     cpu: [arm]
     os: [android]
@@ -175,10 +142,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/android-arm64/0.16.17:
-    resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz}
-    name: '@esbuild/android-arm64'
-    version: 0.16.17
+  /@esbuild/android-arm64/0.16.17:
+    resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==}
     engines: {node: '>=12'}
     cpu: [arm64]
     os: [android]
@@ -186,10 +151,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/android-x64/0.16.17:
-    resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz}
-    name: '@esbuild/android-x64'
-    version: 0.16.17
+  /@esbuild/android-x64/0.16.17:
+    resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==}
     engines: {node: '>=12'}
     cpu: [x64]
     os: [android]
@@ -197,10 +160,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/darwin-arm64/0.16.17:
-    resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz}
-    name: '@esbuild/darwin-arm64'
-    version: 0.16.17
+  /@esbuild/darwin-arm64/0.16.17:
+    resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==}
     engines: {node: '>=12'}
     cpu: [arm64]
     os: [darwin]
@@ -208,10 +169,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/darwin-x64/0.16.17:
-    resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz}
-    name: '@esbuild/darwin-x64'
-    version: 0.16.17
+  /@esbuild/darwin-x64/0.16.17:
+    resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==}
     engines: {node: '>=12'}
     cpu: [x64]
     os: [darwin]
@@ -219,10 +178,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/freebsd-arm64/0.16.17:
-    resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz}
-    name: '@esbuild/freebsd-arm64'
-    version: 0.16.17
+  /@esbuild/freebsd-arm64/0.16.17:
+    resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==}
     engines: {node: '>=12'}
     cpu: [arm64]
     os: [freebsd]
@@ -230,10 +187,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/freebsd-x64/0.16.17:
-    resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz}
-    name: '@esbuild/freebsd-x64'
-    version: 0.16.17
+  /@esbuild/freebsd-x64/0.16.17:
+    resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==}
     engines: {node: '>=12'}
     cpu: [x64]
     os: [freebsd]
@@ -241,10 +196,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/linux-arm/0.16.17:
-    resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz}
-    name: '@esbuild/linux-arm'
-    version: 0.16.17
+  /@esbuild/linux-arm/0.16.17:
+    resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==}
     engines: {node: '>=12'}
     cpu: [arm]
     os: [linux]
@@ -252,10 +205,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/linux-arm64/0.16.17:
-    resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz}
-    name: '@esbuild/linux-arm64'
-    version: 0.16.17
+  /@esbuild/linux-arm64/0.16.17:
+    resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==}
     engines: {node: '>=12'}
     cpu: [arm64]
     os: [linux]
@@ -263,10 +214,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/linux-ia32/0.16.17:
-    resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz}
-    name: '@esbuild/linux-ia32'
-    version: 0.16.17
+  /@esbuild/linux-ia32/0.16.17:
+    resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==}
     engines: {node: '>=12'}
     cpu: [ia32]
     os: [linux]
@@ -274,10 +223,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/linux-loong64/0.16.17:
-    resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz}
-    name: '@esbuild/linux-loong64'
-    version: 0.16.17
+  /@esbuild/linux-loong64/0.16.17:
+    resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==}
     engines: {node: '>=12'}
     cpu: [loong64]
     os: [linux]
@@ -285,10 +232,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/linux-mips64el/0.16.17:
-    resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz}
-    name: '@esbuild/linux-mips64el'
-    version: 0.16.17
+  /@esbuild/linux-mips64el/0.16.17:
+    resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==}
     engines: {node: '>=12'}
     cpu: [mips64el]
     os: [linux]
@@ -296,10 +241,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/linux-ppc64/0.16.17:
-    resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz}
-    name: '@esbuild/linux-ppc64'
-    version: 0.16.17
+  /@esbuild/linux-ppc64/0.16.17:
+    resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==}
     engines: {node: '>=12'}
     cpu: [ppc64]
     os: [linux]
@@ -307,10 +250,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/linux-riscv64/0.16.17:
-    resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz}
-    name: '@esbuild/linux-riscv64'
-    version: 0.16.17
+  /@esbuild/linux-riscv64/0.16.17:
+    resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==}
     engines: {node: '>=12'}
     cpu: [riscv64]
     os: [linux]
@@ -318,10 +259,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/linux-s390x/0.16.17:
-    resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz}
-    name: '@esbuild/linux-s390x'
-    version: 0.16.17
+  /@esbuild/linux-s390x/0.16.17:
+    resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==}
     engines: {node: '>=12'}
     cpu: [s390x]
     os: [linux]
@@ -329,10 +268,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/linux-x64/0.16.17:
-    resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz}
-    name: '@esbuild/linux-x64'
-    version: 0.16.17
+  /@esbuild/linux-x64/0.16.17:
+    resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==}
     engines: {node: '>=12'}
     cpu: [x64]
     os: [linux]
@@ -340,10 +277,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/netbsd-x64/0.16.17:
-    resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz}
-    name: '@esbuild/netbsd-x64'
-    version: 0.16.17
+  /@esbuild/netbsd-x64/0.16.17:
+    resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==}
     engines: {node: '>=12'}
     cpu: [x64]
     os: [netbsd]
@@ -351,10 +286,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/openbsd-x64/0.16.17:
-    resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz}
-    name: '@esbuild/openbsd-x64'
-    version: 0.16.17
+  /@esbuild/openbsd-x64/0.16.17:
+    resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==}
     engines: {node: '>=12'}
     cpu: [x64]
     os: [openbsd]
@@ -362,10 +295,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/sunos-x64/0.16.17:
-    resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz}
-    name: '@esbuild/sunos-x64'
-    version: 0.16.17
+  /@esbuild/sunos-x64/0.16.17:
+    resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==}
     engines: {node: '>=12'}
     cpu: [x64]
     os: [sunos]
@@ -373,10 +304,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/win32-arm64/0.16.17:
-    resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz}
-    name: '@esbuild/win32-arm64'
-    version: 0.16.17
+  /@esbuild/win32-arm64/0.16.17:
+    resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==}
     engines: {node: '>=12'}
     cpu: [arm64]
     os: [win32]
@@ -384,10 +313,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/win32-ia32/0.16.17:
-    resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz}
-    name: '@esbuild/win32-ia32'
-    version: 0.16.17
+  /@esbuild/win32-ia32/0.16.17:
+    resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==}
     engines: {node: '>=12'}
     cpu: [ia32]
     os: [win32]
@@ -395,10 +322,8 @@ packages:
     dev: true
     optional: true
 
-  registry.npmmirror.com/@esbuild/win32-x64/0.16.17:
-    resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz}
-    name: '@esbuild/win32-x64'
-    version: 0.16.17
+  /@esbuild/win32-x64/0.16.17:
+    resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==}
     engines: {node: '>=12'}
     cpu: [x64]
     os: [win32]
@@ -406,6 +331,197 @@ packages:
     dev: true
     optional: true
 
+  /@interactjs/interact/1.10.17:
+    resolution: {integrity: sha512-NyKsf8EFudvdahBjPz1Gt5QnynVwa/2LUfBc2/w8QOnOBiyzUm0HLloJSaB8a50QbQkSWN243/Lgpd8GTMQvuQ==}
+    requiresBuild: true
+    dependencies:
+      '@interactjs/core': registry.npmmirror.com/@interactjs/core/1.10.17_@interactjs+utils@1.10.17
+      '@interactjs/types': registry.npmmirror.com/@interactjs/types/1.10.17
+      '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
+    dev: false
+    optional: true
+
+  /@sxzz/popperjs-es/2.11.7:
+    resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
+    dev: false
+
+  /@vue/compiler-core/3.2.47:
+    resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==}
+    dependencies:
+      '@babel/parser': 7.20.15
+      '@vue/shared': 3.2.47
+      estree-walker: 2.0.2
+      source-map: 0.6.1
+    dev: true
+
+  /@vue/compiler-dom/3.2.47:
+    resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==}
+    dependencies:
+      '@vue/compiler-core': 3.2.47
+      '@vue/shared': 3.2.47
+    dev: true
+
+  /@vue/compiler-sfc/3.2.47:
+    resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==}
+    dependencies:
+      '@babel/parser': 7.20.15
+      '@vue/compiler-core': 3.2.47
+      '@vue/compiler-dom': 3.2.47
+      '@vue/compiler-ssr': 3.2.47
+      '@vue/reactivity-transform': 3.2.47
+      '@vue/shared': 3.2.47
+      estree-walker: 2.0.2
+      magic-string: 0.25.9
+      postcss: 8.4.21
+      source-map: 0.6.1
+    dev: true
+
+  /@vue/compiler-ssr/3.2.47:
+    resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==}
+    dependencies:
+      '@vue/compiler-dom': 3.2.47
+      '@vue/shared': 3.2.47
+    dev: true
+
+  /@vue/reactivity-transform/3.2.47:
+    resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==}
+    dependencies:
+      '@babel/parser': 7.20.15
+      '@vue/compiler-core': 3.2.47
+      '@vue/shared': 3.2.47
+      estree-walker: 2.0.2
+      magic-string: 0.25.9
+    dev: true
+
+  /@vue/shared/3.2.47:
+    resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==}
+    dev: true
+
+  /estree-walker/2.0.2:
+    resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+    dev: true
+
+  /fsevents/2.3.2:
+    resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /magic-string/0.25.9:
+    resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
+    dependencies:
+      sourcemap-codec: 1.4.8
+    dev: true
+
+  /nanoid/3.3.4:
+    resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
+    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+    hasBin: true
+    dev: true
+
+  /picocolors/1.0.0:
+    resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+    dev: true
+
+  /postcss/8.4.21:
+    resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==}
+    engines: {node: ^10 || ^12 || >=14}
+    dependencies:
+      nanoid: 3.3.4
+      picocolors: 1.0.0
+      source-map-js: 1.0.2
+    dev: true
+
+  /source-map-js/1.0.2:
+    resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /source-map/0.6.1:
+    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /sourcemap-codec/1.4.8:
+    resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+    deprecated: Please use @jridgewell/sourcemap-codec instead
+    dev: true
+
+  /to-fast-properties/2.0.0:
+    resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /vite-plugin-vue-setup-extend/0.4.0_vite@4.1.3:
+    resolution: {integrity: sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==}
+    peerDependencies:
+      vite: '>=2.0.0'
+    dependencies:
+      '@vue/compiler-sfc': 3.2.47
+      magic-string: 0.25.9
+      vite: registry.npmmirror.com/vite/4.1.3_hlkwzk2izwsolfmdrejei4vrty
+    dev: true
+
+  registry.npmmirror.com/@babel/helper-string-parser/7.19.4:
+    resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz}
+    name: '@babel/helper-string-parser'
+    version: 7.19.4
+    engines: {node: '>=6.9.0'}
+
+  registry.npmmirror.com/@babel/helper-validator-identifier/7.19.1:
+    resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz}
+    name: '@babel/helper-validator-identifier'
+    version: 7.19.1
+    engines: {node: '>=6.9.0'}
+
+  registry.npmmirror.com/@babel/parser/7.20.15:
+    resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.20.15.tgz}
+    name: '@babel/parser'
+    version: 7.20.15
+    engines: {node: '>=6.0.0'}
+    hasBin: true
+    dependencies:
+      '@babel/types': registry.npmmirror.com/@babel/types/7.20.7
+
+  registry.npmmirror.com/@babel/runtime/7.20.13:
+    resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.13.tgz}
+    name: '@babel/runtime'
+    version: 7.20.13
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      regenerator-runtime: registry.npmmirror.com/regenerator-runtime/0.13.11
+    dev: false
+
+  registry.npmmirror.com/@babel/types/7.20.7:
+    resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.20.7.tgz}
+    name: '@babel/types'
+    version: 7.20.7
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-string-parser': registry.npmmirror.com/@babel/helper-string-parser/7.19.4
+      '@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier/7.19.1
+      to-fast-properties: registry.npmmirror.com/to-fast-properties/2.0.0
+
+  registry.npmmirror.com/@ctrl/tinycolor/3.6.0:
+    resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz}
+    name: '@ctrl/tinycolor'
+    version: 3.6.0
+    engines: {node: '>=10'}
+    dev: false
+
+  registry.npmmirror.com/@element-plus/icons-vue/2.0.10_vue@3.2.47:
+    resolution: {integrity: sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz}
+    id: registry.npmmirror.com/@element-plus/icons-vue/2.0.10
+    name: '@element-plus/icons-vue'
+    version: 2.0.10
+    peerDependencies:
+      vue: ^3.2.0
+    dependencies:
+      vue: registry.npmmirror.com/vue/3.2.47
+    dev: false
+
   registry.npmmirror.com/@eslint/eslintrc/1.4.1:
     resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz}
     name: '@eslint/eslintrc'
@@ -473,7 +589,7 @@ packages:
       '@interactjs/core': 1.10.17
       '@interactjs/utils': 1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/actions/1.10.17_farzh4kmmmdsqeu7trbjloi3zi:
@@ -488,7 +604,7 @@ packages:
       '@interactjs/core': registry.npmmirror.com/@interactjs/core/1.10.17_@interactjs+utils@1.10.17
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/auto-scroll/1.10.17_@interactjs+utils@1.10.17:
@@ -501,7 +617,7 @@ packages:
     dependencies:
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/auto-start/1.10.17:
@@ -512,7 +628,7 @@ packages:
       '@interactjs/core': 1.10.17
       '@interactjs/utils': 1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/auto-start/1.10.17_farzh4kmmmdsqeu7trbjloi3zi:
@@ -527,7 +643,7 @@ packages:
       '@interactjs/core': registry.npmmirror.com/@interactjs/core/1.10.17_@interactjs+utils@1.10.17
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/core/1.10.17_@interactjs+utils@1.10.17:
@@ -552,7 +668,7 @@ packages:
     dependencies:
       '@interactjs/modifiers': registry.npmmirror.com/@interactjs/modifiers/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/dev-tools/1.10.17_xbmse7bb75tf4dexy2xpppeyve:
@@ -567,7 +683,7 @@ packages:
       '@interactjs/modifiers': registry.npmmirror.com/@interactjs/modifiers/1.10.17_farzh4kmmmdsqeu7trbjloi3zi
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/inertia/1.10.17_orxel6eubagr4ggpgjxuetzvmi:
@@ -585,7 +701,7 @@ packages:
       '@interactjs/offset': registry.npmmirror.com/@interactjs/offset/1.10.17_farzh4kmmmdsqeu7trbjloi3zi
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/interact/1.10.17:
@@ -627,7 +743,7 @@ packages:
     dependencies:
       '@interactjs/snappers': registry.npmmirror.com/@interactjs/snappers/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/modifiers/1.10.17_farzh4kmmmdsqeu7trbjloi3zi:
@@ -643,7 +759,7 @@ packages:
       '@interactjs/snappers': registry.npmmirror.com/@interactjs/snappers/1.10.17_@interactjs+utils@1.10.17
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/offset/1.10.17_farzh4kmmmdsqeu7trbjloi3zi:
@@ -658,7 +774,7 @@ packages:
       '@interactjs/core': registry.npmmirror.com/@interactjs/core/1.10.17_@interactjs+utils@1.10.17
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/pointer-events/1.10.17_farzh4kmmmdsqeu7trbjloi3zi:
@@ -673,7 +789,7 @@ packages:
       '@interactjs/core': registry.npmmirror.com/@interactjs/core/1.10.17_@interactjs+utils@1.10.17
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/reflow/1.10.17_farzh4kmmmdsqeu7trbjloi3zi:
@@ -688,7 +804,7 @@ packages:
       '@interactjs/core': registry.npmmirror.com/@interactjs/core/1.10.17_@interactjs+utils@1.10.17
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/snappers/1.10.17:
@@ -698,7 +814,7 @@ packages:
     peerDependencies:
       '@interactjs/utils': 1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/snappers/1.10.17_@interactjs+utils@1.10.17:
@@ -711,7 +827,7 @@ packages:
     dependencies:
       '@interactjs/utils': registry.npmmirror.com/@interactjs/utils/1.10.17
     optionalDependencies:
-      '@interactjs/interact': registry.npmmirror.com/@interactjs/interact/1.10.17
+      '@interactjs/interact': 1.10.17
     dev: false
 
   registry.npmmirror.com/@interactjs/types/1.10.17:
@@ -817,12 +933,6 @@ packages:
       fastq: registry.npmmirror.com/fastq/1.15.0
     dev: true
 
-  registry.npmmirror.com/@sxzz/popperjs-es/2.11.7:
-    resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz}
-    name: '@sxzz/popperjs-es'
-    version: 2.11.7
-    dev: false
-
   registry.npmmirror.com/@transloadit/prettier-bytes/0.0.7:
     resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz}
     name: '@transloadit/prettier-bytes'
@@ -1638,7 +1748,7 @@ packages:
       normalize-path: registry.npmmirror.com/normalize-path/3.0.0
       readdirp: registry.npmmirror.com/readdirp/3.6.0
     optionalDependencies:
-      fsevents: registry.npmmirror.com/fsevents/2.3.2
+      fsevents: 2.3.2
     dev: true
 
   registry.npmmirror.com/claygl/1.3.0:
@@ -1854,7 +1964,7 @@ packages:
       '@ctrl/tinycolor': registry.npmmirror.com/@ctrl/tinycolor/3.6.0
       '@element-plus/icons-vue': registry.npmmirror.com/@element-plus/icons-vue/2.0.10_vue@3.2.47
       '@floating-ui/dom': registry.npmmirror.com/@floating-ui/dom/1.2.1
-      '@popperjs/core': registry.npmmirror.com/@sxzz/popperjs-es/2.11.7
+      '@popperjs/core': /@sxzz/popperjs-es/2.11.7
       '@types/lodash': registry.npmmirror.com/@types/lodash/4.14.191
       '@types/lodash-es': registry.npmmirror.com/@types/lodash-es/4.17.6
       '@vueuse/core': registry.npmmirror.com/@vueuse/core/9.13.0_vue@3.2.47
@@ -1918,28 +2028,28 @@ packages:
     hasBin: true
     requiresBuild: true
     optionalDependencies:
-      '@esbuild/android-arm': registry.npmmirror.com/@esbuild/android-arm/0.16.17
-      '@esbuild/android-arm64': registry.npmmirror.com/@esbuild/android-arm64/0.16.17
-      '@esbuild/android-x64': registry.npmmirror.com/@esbuild/android-x64/0.16.17
-      '@esbuild/darwin-arm64': registry.npmmirror.com/@esbuild/darwin-arm64/0.16.17
-      '@esbuild/darwin-x64': registry.npmmirror.com/@esbuild/darwin-x64/0.16.17
-      '@esbuild/freebsd-arm64': registry.npmmirror.com/@esbuild/freebsd-arm64/0.16.17
-      '@esbuild/freebsd-x64': registry.npmmirror.com/@esbuild/freebsd-x64/0.16.17
-      '@esbuild/linux-arm': registry.npmmirror.com/@esbuild/linux-arm/0.16.17
-      '@esbuild/linux-arm64': registry.npmmirror.com/@esbuild/linux-arm64/0.16.17
-      '@esbuild/linux-ia32': registry.npmmirror.com/@esbuild/linux-ia32/0.16.17
-      '@esbuild/linux-loong64': registry.npmmirror.com/@esbuild/linux-loong64/0.16.17
-      '@esbuild/linux-mips64el': registry.npmmirror.com/@esbuild/linux-mips64el/0.16.17
-      '@esbuild/linux-ppc64': registry.npmmirror.com/@esbuild/linux-ppc64/0.16.17
-      '@esbuild/linux-riscv64': registry.npmmirror.com/@esbuild/linux-riscv64/0.16.17
-      '@esbuild/linux-s390x': registry.npmmirror.com/@esbuild/linux-s390x/0.16.17
-      '@esbuild/linux-x64': registry.npmmirror.com/@esbuild/linux-x64/0.16.17
-      '@esbuild/netbsd-x64': registry.npmmirror.com/@esbuild/netbsd-x64/0.16.17
-      '@esbuild/openbsd-x64': registry.npmmirror.com/@esbuild/openbsd-x64/0.16.17
-      '@esbuild/sunos-x64': registry.npmmirror.com/@esbuild/sunos-x64/0.16.17
-      '@esbuild/win32-arm64': registry.npmmirror.com/@esbuild/win32-arm64/0.16.17
-      '@esbuild/win32-ia32': registry.npmmirror.com/@esbuild/win32-ia32/0.16.17
-      '@esbuild/win32-x64': registry.npmmirror.com/@esbuild/win32-x64/0.16.17
+      '@esbuild/android-arm': 0.16.17
+      '@esbuild/android-arm64': 0.16.17
+      '@esbuild/android-x64': 0.16.17
+      '@esbuild/darwin-arm64': 0.16.17
+      '@esbuild/darwin-x64': 0.16.17
+      '@esbuild/freebsd-arm64': 0.16.17
+      '@esbuild/freebsd-x64': 0.16.17
+      '@esbuild/linux-arm': 0.16.17
+      '@esbuild/linux-arm64': 0.16.17
+      '@esbuild/linux-ia32': 0.16.17
+      '@esbuild/linux-loong64': 0.16.17
+      '@esbuild/linux-mips64el': 0.16.17
+      '@esbuild/linux-ppc64': 0.16.17
+      '@esbuild/linux-riscv64': 0.16.17
+      '@esbuild/linux-s390x': 0.16.17
+      '@esbuild/linux-x64': 0.16.17
+      '@esbuild/netbsd-x64': 0.16.17
+      '@esbuild/openbsd-x64': 0.16.17
+      '@esbuild/sunos-x64': 0.16.17
+      '@esbuild/win32-arm64': 0.16.17
+      '@esbuild/win32-ia32': 0.16.17
+      '@esbuild/win32-x64': 0.16.17
     dev: true
 
   registry.npmmirror.com/escape-html/1.0.3:
@@ -2280,16 +2390,6 @@ packages:
     version: 1.0.0
     dev: true
 
-  registry.npmmirror.com/fsevents/2.3.2:
-    resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz}
-    name: fsevents
-    version: 2.3.2
-    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
-    os: [darwin]
-    requiresBuild: true
-    dev: true
-    optional: true
-
   registry.npmmirror.com/function-bind/1.1.1:
     resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz}
     name: function-bind
@@ -3134,7 +3234,7 @@ packages:
     engines: {node: '>=14.18.0', npm: '>=8.0.0'}
     hasBin: true
     optionalDependencies:
-      fsevents: registry.npmmirror.com/fsevents/2.3.2
+      fsevents: 2.3.2
     dev: true
 
   registry.npmmirror.com/run-parallel/1.2.0:
@@ -3471,19 +3571,6 @@ packages:
     version: 3.0.10
     dev: false
 
-  registry.npmmirror.com/vite-plugin-vue-setup-extend/0.4.0_vite@4.1.3:
-    resolution: {integrity: sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite-plugin-vue-setup-extend/-/vite-plugin-vue-setup-extend-0.4.0.tgz}
-    id: registry.npmmirror.com/vite-plugin-vue-setup-extend/0.4.0
-    name: vite-plugin-vue-setup-extend
-    version: 0.4.0
-    peerDependencies:
-      vite: '>=2.0.0'
-    dependencies:
-      '@vue/compiler-sfc': registry.npmmirror.com/@vue/compiler-sfc/3.2.47
-      magic-string: registry.npmmirror.com/magic-string/0.25.9
-      vite: registry.npmmirror.com/vite/4.1.3_hlkwzk2izwsolfmdrejei4vrty
-    dev: true
-
   registry.npmmirror.com/vite/4.1.3_hlkwzk2izwsolfmdrejei4vrty:
     resolution: {integrity: sha512-0Zqo4/Fr/swSOBmbl+HAAhOjrqNwju+yTtoe4hQX9UsARdcuc9njyOdr6xU0DDnV7YP0RT6mgTTOiRtZgxfCxA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-4.1.3.tgz}
     id: registry.npmmirror.com/vite/4.1.3
@@ -3519,7 +3606,7 @@ packages:
       rollup: registry.npmmirror.com/rollup/3.17.2
       sass: registry.npmmirror.com/sass/1.58.3
     optionalDependencies:
-      fsevents: registry.npmmirror.com/fsevents/2.3.2
+      fsevents: 2.3.2
     dev: true
 
   registry.npmmirror.com/vue-clipboard3/2.0.0:

+ 12 - 1
Web/src/components/cropper/index.vue

@@ -36,6 +36,7 @@
 						:show-file-list="false"
 						:auto-upload="false"
 						:on-change="selectPicture"
+						:on-exceed="selectPictureExceed"
 						style="display: inline-block; position: absolute; right: 172px"
 					>
 						<el-button icon="ele-Picture">选择图片</el-button>
@@ -49,10 +50,12 @@
 </template>
 
 <script setup lang="ts" name="cropper">
-import { reactive, nextTick } from 'vue';
+import { reactive, nextTick, ref } from 'vue';
 import mittBus from '/@/utils/mitt';
 import Cropper from 'cropperjs';
 import 'cropperjs/dist/cropper.css';
+import { genFileId } from 'element-plus';
+import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus';
 
 const props = defineProps({
 	title: {
@@ -61,6 +64,7 @@ const props = defineProps({
 	},
 });
 
+const uploadSignRef = ref<UploadInstance>();
 // 定义变量内容
 const state = reactive({
 	isShowDialog: false,
@@ -119,6 +123,13 @@ const selectPicture = async (file: any) => {
 	state.cropper.replace(state.cropperImg);
 };
 
+// 选择图片超出数量限制时执行
+const selectPictureExceed: UploadProps['onExceed'] = (files) => {
+	uploadSignRef.value!.clearFiles();
+	const file = files[0] as UploadRawFile;
+	file.uid = genFileId();
+	uploadSignRef.value!.handleStart(file);
+};
 // 暴露变量
 defineExpose({
 	openDialog,

+ 2332 - 0
Web/src/theme/font-awesome/font-awesome.scss

@@ -0,0 +1,2332 @@
+/*!
+ *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
+ *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+@font-face {
+	font-family: 'FontAwesome';
+	src: url('/@/theme/font-awesome/fontawesome-webfont.eot?v=4.7.0') format('embedded-opentype'), url('/@/theme/font-awesome/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),
+		url('/@/theme/font-awesome/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('/@/theme/font-awesome/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),
+		url('/@/theme/font-awesome/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+.fa {
+	display: inline-block;
+	font: normal normal normal 14px/1 FontAwesome;
+	font-size: inherit;
+	text-rendering: auto;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+.fa-lg {
+	font-size: 1.33333333em;
+	line-height: 0.75em;
+	vertical-align: -15%;
+}
+.fa-2x {
+	font-size: 2em;
+}
+.fa-3x {
+	font-size: 3em;
+}
+.fa-4x {
+	font-size: 4em;
+}
+.fa-5x {
+	font-size: 5em;
+}
+.fa-fw {
+	width: 1.28571429em;
+	text-align: center;
+}
+.fa-ul {
+	padding-left: 0;
+	margin-left: 2.14285714em;
+	list-style-type: none;
+}
+.fa-ul > li {
+	position: relative;
+}
+.fa-li {
+	position: absolute;
+	left: -2.14285714em;
+	width: 2.14285714em;
+	top: 0.14285714em;
+	text-align: center;
+}
+.fa-li.fa-lg {
+	left: -1.85714286em;
+}
+.fa-border {
+	padding: 0.2em 0.25em 0.15em;
+	border: solid 0.08em #eee;
+	border-radius: 0.1em;
+}
+.fa-pull-left {
+	float: left;
+}
+.fa-pull-right {
+	float: right;
+}
+.fa.fa-pull-left {
+	margin-right: 0.3em;
+}
+.fa.fa-pull-right {
+	margin-left: 0.3em;
+}
+.pull-right {
+	float: right;
+}
+.pull-left {
+	float: left;
+}
+.fa.pull-left {
+	margin-right: 0.3em;
+}
+.fa.pull-right {
+	margin-left: 0.3em;
+}
+.fa-spin {
+	-webkit-animation: fa-spin 2s infinite linear;
+	animation: fa-spin 2s infinite linear;
+}
+.fa-pulse {
+	-webkit-animation: fa-spin 1s infinite steps(8);
+	animation: fa-spin 1s infinite steps(8);
+}
+@-webkit-keyframes fa-spin {
+	0% {
+		-webkit-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+	100% {
+		-webkit-transform: rotate(359deg);
+		transform: rotate(359deg);
+	}
+}
+@keyframes fa-spin {
+	0% {
+		-webkit-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+	100% {
+		-webkit-transform: rotate(359deg);
+		transform: rotate(359deg);
+	}
+}
+.fa-rotate-90 {
+	-ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)';
+	-webkit-transform: rotate(90deg);
+	-ms-transform: rotate(90deg);
+	transform: rotate(90deg);
+}
+.fa-rotate-180 {
+	-ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)';
+	-webkit-transform: rotate(180deg);
+	-ms-transform: rotate(180deg);
+	transform: rotate(180deg);
+}
+.fa-rotate-270 {
+	-ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)';
+	-webkit-transform: rotate(270deg);
+	-ms-transform: rotate(270deg);
+	transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+	-ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)';
+	-webkit-transform: scale(-1, 1);
+	-ms-transform: scale(-1, 1);
+	transform: scale(-1, 1);
+}
+.fa-flip-vertical {
+	-ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)';
+	-webkit-transform: scale(1, -1);
+	-ms-transform: scale(1, -1);
+	transform: scale(1, -1);
+}
+:root .fa-rotate-90,
+:root .fa-rotate-180,
+:root .fa-rotate-270,
+:root .fa-flip-horizontal,
+:root .fa-flip-vertical {
+	filter: none;
+}
+.fa-stack {
+	position: relative;
+	display: inline-block;
+	width: 2em;
+	height: 2em;
+	line-height: 2em;
+	vertical-align: middle;
+}
+.fa-stack-1x,
+.fa-stack-2x {
+	position: absolute;
+	left: 0;
+	width: 100%;
+	text-align: center;
+}
+.fa-stack-1x {
+	line-height: inherit;
+}
+.fa-stack-2x {
+	font-size: 2em;
+}
+.fa-inverse {
+	color: #fff;
+}
+.fa-glass:before {
+	content: '\f000';
+}
+.fa-music:before {
+	content: '\f001';
+}
+.fa-search:before {
+	content: '\f002';
+}
+.fa-envelope-o:before {
+	content: '\f003';
+}
+.fa-heart:before {
+	content: '\f004';
+}
+.fa-star:before {
+	content: '\f005';
+}
+.fa-star-o:before {
+	content: '\f006';
+}
+.fa-user:before {
+	content: '\f007';
+}
+.fa-film:before {
+	content: '\f008';
+}
+.fa-th-large:before {
+	content: '\f009';
+}
+.fa-th:before {
+	content: '\f00a';
+}
+.fa-th-list:before {
+	content: '\f00b';
+}
+.fa-check:before {
+	content: '\f00c';
+}
+.fa-remove:before,
+.fa-close:before,
+.fa-times:before {
+	content: '\f00d';
+}
+.fa-search-plus:before {
+	content: '\f00e';
+}
+.fa-search-minus:before {
+	content: '\f010';
+}
+.fa-power-off:before {
+	content: '\f011';
+}
+.fa-signal:before {
+	content: '\f012';
+}
+.fa-gear:before,
+.fa-cog:before {
+	content: '\f013';
+}
+.fa-trash-o:before {
+	content: '\f014';
+}
+.fa-home:before {
+	content: '\f015';
+}
+.fa-file-o:before {
+	content: '\f016';
+}
+.fa-clock-o:before {
+	content: '\f017';
+}
+.fa-road:before {
+	content: '\f018';
+}
+.fa-download:before {
+	content: '\f019';
+}
+.fa-arrow-circle-o-down:before {
+	content: '\f01a';
+}
+.fa-arrow-circle-o-up:before {
+	content: '\f01b';
+}
+.fa-inbox:before {
+	content: '\f01c';
+}
+.fa-play-circle-o:before {
+	content: '\f01d';
+}
+.fa-rotate-right:before,
+.fa-repeat:before {
+	content: '\f01e';
+}
+.fa-refresh:before {
+	content: '\f021';
+}
+.fa-list-alt:before {
+	content: '\f022';
+}
+.fa-lock:before {
+	content: '\f023';
+}
+.fa-flag:before {
+	content: '\f024';
+}
+.fa-headphones:before {
+	content: '\f025';
+}
+.fa-volume-off:before {
+	content: '\f026';
+}
+.fa-volume-down:before {
+	content: '\f027';
+}
+.fa-volume-up:before {
+	content: '\f028';
+}
+.fa-qrcode:before {
+	content: '\f029';
+}
+.fa-barcode:before {
+	content: '\f02a';
+}
+.fa-tag:before {
+	content: '\f02b';
+}
+.fa-tags:before {
+	content: '\f02c';
+}
+.fa-book:before {
+	content: '\f02d';
+}
+.fa-bookmark:before {
+	content: '\f02e';
+}
+.fa-print:before {
+	content: '\f02f';
+}
+.fa-camera:before {
+	content: '\f030';
+}
+.fa-font:before {
+	content: '\f031';
+}
+.fa-bold:before {
+	content: '\f032';
+}
+.fa-italic:before {
+	content: '\f033';
+}
+.fa-text-height:before {
+	content: '\f034';
+}
+.fa-text-width:before {
+	content: '\f035';
+}
+.fa-align-left:before {
+	content: '\f036';
+}
+.fa-align-center:before {
+	content: '\f037';
+}
+.fa-align-right:before {
+	content: '\f038';
+}
+.fa-align-justify:before {
+	content: '\f039';
+}
+.fa-list:before {
+	content: '\f03a';
+}
+.fa-dedent:before,
+.fa-outdent:before {
+	content: '\f03b';
+}
+.fa-indent:before {
+	content: '\f03c';
+}
+.fa-video-camera:before {
+	content: '\f03d';
+}
+.fa-photo:before,
+.fa-image:before,
+.fa-picture-o:before {
+	content: '\f03e';
+}
+.fa-pencil:before {
+	content: '\f040';
+}
+.fa-map-marker:before {
+	content: '\f041';
+}
+.fa-adjust:before {
+	content: '\f042';
+}
+.fa-tint:before {
+	content: '\f043';
+}
+.fa-edit:before,
+.fa-pencil-square-o:before {
+	content: '\f044';
+}
+.fa-share-square-o:before {
+	content: '\f045';
+}
+.fa-check-square-o:before {
+	content: '\f046';
+}
+.fa-arrows:before {
+	content: '\f047';
+}
+.fa-step-backward:before {
+	content: '\f048';
+}
+.fa-fast-backward:before {
+	content: '\f049';
+}
+.fa-backward:before {
+	content: '\f04a';
+}
+.fa-play:before {
+	content: '\f04b';
+}
+.fa-pause:before {
+	content: '\f04c';
+}
+.fa-stop:before {
+	content: '\f04d';
+}
+.fa-forward:before {
+	content: '\f04e';
+}
+.fa-fast-forward:before {
+	content: '\f050';
+}
+.fa-step-forward:before {
+	content: '\f051';
+}
+.fa-eject:before {
+	content: '\f052';
+}
+.fa-chevron-left:before {
+	content: '\f053';
+}
+.fa-chevron-right:before {
+	content: '\f054';
+}
+.fa-plus-circle:before {
+	content: '\f055';
+}
+.fa-minus-circle:before {
+	content: '\f056';
+}
+.fa-times-circle:before {
+	content: '\f057';
+}
+.fa-check-circle:before {
+	content: '\f058';
+}
+.fa-question-circle:before {
+	content: '\f059';
+}
+.fa-info-circle:before {
+	content: '\f05a';
+}
+.fa-crosshairs:before {
+	content: '\f05b';
+}
+.fa-times-circle-o:before {
+	content: '\f05c';
+}
+.fa-check-circle-o:before {
+	content: '\f05d';
+}
+.fa-ban:before {
+	content: '\f05e';
+}
+.fa-arrow-left:before {
+	content: '\f060';
+}
+.fa-arrow-right:before {
+	content: '\f061';
+}
+.fa-arrow-up:before {
+	content: '\f062';
+}
+.fa-arrow-down:before {
+	content: '\f063';
+}
+.fa-mail-forward:before,
+.fa-share:before {
+	content: '\f064';
+}
+.fa-expand:before {
+	content: '\f065';
+}
+.fa-compress:before {
+	content: '\f066';
+}
+.fa-plus:before {
+	content: '\f067';
+}
+.fa-minus:before {
+	content: '\f068';
+}
+.fa-asterisk:before {
+	content: '\f069';
+}
+.fa-exclamation-circle:before {
+	content: '\f06a';
+}
+.fa-gift:before {
+	content: '\f06b';
+}
+.fa-leaf:before {
+	content: '\f06c';
+}
+.fa-fire:before {
+	content: '\f06d';
+}
+.fa-eye:before {
+	content: '\f06e';
+}
+.fa-eye-slash:before {
+	content: '\f070';
+}
+.fa-warning:before,
+.fa-exclamation-triangle:before {
+	content: '\f071';
+}
+.fa-plane:before {
+	content: '\f072';
+}
+.fa-calendar:before {
+	content: '\f073';
+}
+.fa-random:before {
+	content: '\f074';
+}
+.fa-comment:before {
+	content: '\f075';
+}
+.fa-magnet:before {
+	content: '\f076';
+}
+.fa-chevron-up:before {
+	content: '\f077';
+}
+.fa-chevron-down:before {
+	content: '\f078';
+}
+.fa-retweet:before {
+	content: '\f079';
+}
+.fa-shopping-cart:before {
+	content: '\f07a';
+}
+.fa-folder:before {
+	content: '\f07b';
+}
+.fa-folder-open:before {
+	content: '\f07c';
+}
+.fa-arrows-v:before {
+	content: '\f07d';
+}
+.fa-arrows-h:before {
+	content: '\f07e';
+}
+.fa-bar-chart-o:before,
+.fa-bar-chart:before {
+	content: '\f080';
+}
+.fa-twitter-square:before {
+	content: '\f081';
+}
+.fa-facebook-square:before {
+	content: '\f082';
+}
+.fa-camera-retro:before {
+	content: '\f083';
+}
+.fa-key:before {
+	content: '\f084';
+}
+.fa-gears:before,
+.fa-cogs:before {
+	content: '\f085';
+}
+.fa-comments:before {
+	content: '\f086';
+}
+.fa-thumbs-o-up:before {
+	content: '\f087';
+}
+.fa-thumbs-o-down:before {
+	content: '\f088';
+}
+.fa-star-half:before {
+	content: '\f089';
+}
+.fa-heart-o:before {
+	content: '\f08a';
+}
+.fa-sign-out:before {
+	content: '\f08b';
+}
+.fa-linkedin-square:before {
+	content: '\f08c';
+}
+.fa-thumb-tack:before {
+	content: '\f08d';
+}
+.fa-external-link:before {
+	content: '\f08e';
+}
+.fa-sign-in:before {
+	content: '\f090';
+}
+.fa-trophy:before {
+	content: '\f091';
+}
+.fa-github-square:before {
+	content: '\f092';
+}
+.fa-upload:before {
+	content: '\f093';
+}
+.fa-lemon-o:before {
+	content: '\f094';
+}
+.fa-phone:before {
+	content: '\f095';
+}
+.fa-square-o:before {
+	content: '\f096';
+}
+.fa-bookmark-o:before {
+	content: '\f097';
+}
+.fa-phone-square:before {
+	content: '\f098';
+}
+.fa-twitter:before {
+	content: '\f099';
+}
+.fa-facebook-f:before,
+.fa-facebook:before {
+	content: '\f09a';
+}
+.fa-github:before {
+	content: '\f09b';
+}
+.fa-unlock:before {
+	content: '\f09c';
+}
+.fa-credit-card:before {
+	content: '\f09d';
+}
+.fa-feed:before,
+.fa-rss:before {
+	content: '\f09e';
+}
+.fa-hdd-o:before {
+	content: '\f0a0';
+}
+.fa-bullhorn:before {
+	content: '\f0a1';
+}
+.fa-bell:before {
+	content: '\f0f3';
+}
+.fa-certificate:before {
+	content: '\f0a3';
+}
+.fa-hand-o-right:before {
+	content: '\f0a4';
+}
+.fa-hand-o-left:before {
+	content: '\f0a5';
+}
+.fa-hand-o-up:before {
+	content: '\f0a6';
+}
+.fa-hand-o-down:before {
+	content: '\f0a7';
+}
+.fa-arrow-circle-left:before {
+	content: '\f0a8';
+}
+.fa-arrow-circle-right:before {
+	content: '\f0a9';
+}
+.fa-arrow-circle-up:before {
+	content: '\f0aa';
+}
+.fa-arrow-circle-down:before {
+	content: '\f0ab';
+}
+.fa-globe:before {
+	content: '\f0ac';
+}
+.fa-wrench:before {
+	content: '\f0ad';
+}
+.fa-tasks:before {
+	content: '\f0ae';
+}
+.fa-filter:before {
+	content: '\f0b0';
+}
+.fa-briefcase:before {
+	content: '\f0b1';
+}
+.fa-arrows-alt:before {
+	content: '\f0b2';
+}
+.fa-group:before,
+.fa-users:before {
+	content: '\f0c0';
+}
+.fa-chain:before,
+.fa-link:before {
+	content: '\f0c1';
+}
+.fa-cloud:before {
+	content: '\f0c2';
+}
+.fa-flask:before {
+	content: '\f0c3';
+}
+.fa-cut:before,
+.fa-scissors:before {
+	content: '\f0c4';
+}
+.fa-copy:before,
+.fa-files-o:before {
+	content: '\f0c5';
+}
+.fa-paperclip:before {
+	content: '\f0c6';
+}
+.fa-save:before,
+.fa-floppy-o:before {
+	content: '\f0c7';
+}
+.fa-square:before {
+	content: '\f0c8';
+}
+.fa-navicon:before,
+.fa-reorder:before,
+.fa-bars:before {
+	content: '\f0c9';
+}
+.fa-list-ul:before {
+	content: '\f0ca';
+}
+.fa-list-ol:before {
+	content: '\f0cb';
+}
+.fa-strikethrough:before {
+	content: '\f0cc';
+}
+.fa-underline:before {
+	content: '\f0cd';
+}
+.fa-table:before {
+	content: '\f0ce';
+}
+.fa-magic:before {
+	content: '\f0d0';
+}
+.fa-truck:before {
+	content: '\f0d1';
+}
+.fa-pinterest:before {
+	content: '\f0d2';
+}
+.fa-pinterest-square:before {
+	content: '\f0d3';
+}
+.fa-google-plus-square:before {
+	content: '\f0d4';
+}
+.fa-google-plus:before {
+	content: '\f0d5';
+}
+.fa-money:before {
+	content: '\f0d6';
+}
+.fa-caret-down:before {
+	content: '\f0d7';
+}
+.fa-caret-up:before {
+	content: '\f0d8';
+}
+.fa-caret-left:before {
+	content: '\f0d9';
+}
+.fa-caret-right:before {
+	content: '\f0da';
+}
+.fa-columns:before {
+	content: '\f0db';
+}
+.fa-unsorted:before,
+.fa-sort:before {
+	content: '\f0dc';
+}
+.fa-sort-down:before,
+.fa-sort-desc:before {
+	content: '\f0dd';
+}
+.fa-sort-up:before,
+.fa-sort-asc:before {
+	content: '\f0de';
+}
+.fa-envelope:before {
+	content: '\f0e0';
+}
+.fa-linkedin:before {
+	content: '\f0e1';
+}
+.fa-rotate-left:before,
+.fa-undo:before {
+	content: '\f0e2';
+}
+.fa-legal:before,
+.fa-gavel:before {
+	content: '\f0e3';
+}
+.fa-dashboard:before,
+.fa-tachometer:before {
+	content: '\f0e4';
+}
+.fa-comment-o:before {
+	content: '\f0e5';
+}
+.fa-comments-o:before {
+	content: '\f0e6';
+}
+.fa-flash:before,
+.fa-bolt:before {
+	content: '\f0e7';
+}
+.fa-sitemap:before {
+	content: '\f0e8';
+}
+.fa-umbrella:before {
+	content: '\f0e9';
+}
+.fa-paste:before,
+.fa-clipboard:before {
+	content: '\f0ea';
+}
+.fa-lightbulb-o:before {
+	content: '\f0eb';
+}
+.fa-exchange:before {
+	content: '\f0ec';
+}
+.fa-cloud-download:before {
+	content: '\f0ed';
+}
+.fa-cloud-upload:before {
+	content: '\f0ee';
+}
+.fa-user-md:before {
+	content: '\f0f0';
+}
+.fa-stethoscope:before {
+	content: '\f0f1';
+}
+.fa-suitcase:before {
+	content: '\f0f2';
+}
+.fa-bell-o:before {
+	content: '\f0a2';
+}
+.fa-coffee:before {
+	content: '\f0f4';
+}
+.fa-cutlery:before {
+	content: '\f0f5';
+}
+.fa-file-text-o:before {
+	content: '\f0f6';
+}
+.fa-building-o:before {
+	content: '\f0f7';
+}
+.fa-hospital-o:before {
+	content: '\f0f8';
+}
+.fa-ambulance:before {
+	content: '\f0f9';
+}
+.fa-medkit:before {
+	content: '\f0fa';
+}
+.fa-fighter-jet:before {
+	content: '\f0fb';
+}
+.fa-beer:before {
+	content: '\f0fc';
+}
+.fa-h-square:before {
+	content: '\f0fd';
+}
+.fa-plus-square:before {
+	content: '\f0fe';
+}
+.fa-angle-double-left:before {
+	content: '\f100';
+}
+.fa-angle-double-right:before {
+	content: '\f101';
+}
+.fa-angle-double-up:before {
+	content: '\f102';
+}
+.fa-angle-double-down:before {
+	content: '\f103';
+}
+.fa-angle-left:before {
+	content: '\f104';
+}
+.fa-angle-right:before {
+	content: '\f105';
+}
+.fa-angle-up:before {
+	content: '\f106';
+}
+.fa-angle-down:before {
+	content: '\f107';
+}
+.fa-desktop:before {
+	content: '\f108';
+}
+.fa-laptop:before {
+	content: '\f109';
+}
+.fa-tablet:before {
+	content: '\f10a';
+}
+.fa-mobile-phone:before,
+.fa-mobile:before {
+	content: '\f10b';
+}
+.fa-circle-o:before {
+	content: '\f10c';
+}
+.fa-quote-left:before {
+	content: '\f10d';
+}
+.fa-quote-right:before {
+	content: '\f10e';
+}
+.fa-spinner:before {
+	content: '\f110';
+}
+.fa-circle:before {
+	content: '\f111';
+}
+.fa-mail-reply:before,
+.fa-reply:before {
+	content: '\f112';
+}
+.fa-github-alt:before {
+	content: '\f113';
+}
+.fa-folder-o:before {
+	content: '\f114';
+}
+.fa-folder-open-o:before {
+	content: '\f115';
+}
+.fa-smile-o:before {
+	content: '\f118';
+}
+.fa-frown-o:before {
+	content: '\f119';
+}
+.fa-meh-o:before {
+	content: '\f11a';
+}
+.fa-gamepad:before {
+	content: '\f11b';
+}
+.fa-keyboard-o:before {
+	content: '\f11c';
+}
+.fa-flag-o:before {
+	content: '\f11d';
+}
+.fa-flag-checkered:before {
+	content: '\f11e';
+}
+.fa-terminal:before {
+	content: '\f120';
+}
+.fa-code:before {
+	content: '\f121';
+}
+.fa-mail-reply-all:before,
+.fa-reply-all:before {
+	content: '\f122';
+}
+.fa-star-half-empty:before,
+.fa-star-half-full:before,
+.fa-star-half-o:before {
+	content: '\f123';
+}
+.fa-location-arrow:before {
+	content: '\f124';
+}
+.fa-crop:before {
+	content: '\f125';
+}
+.fa-code-fork:before {
+	content: '\f126';
+}
+.fa-unlink:before,
+.fa-chain-broken:before {
+	content: '\f127';
+}
+.fa-question:before {
+	content: '\f128';
+}
+.fa-info:before {
+	content: '\f129';
+}
+.fa-exclamation:before {
+	content: '\f12a';
+}
+.fa-superscript:before {
+	content: '\f12b';
+}
+.fa-subscript:before {
+	content: '\f12c';
+}
+.fa-eraser:before {
+	content: '\f12d';
+}
+.fa-puzzle-piece:before {
+	content: '\f12e';
+}
+.fa-microphone:before {
+	content: '\f130';
+}
+.fa-microphone-slash:before {
+	content: '\f131';
+}
+.fa-shield:before {
+	content: '\f132';
+}
+.fa-calendar-o:before {
+	content: '\f133';
+}
+.fa-fire-extinguisher:before {
+	content: '\f134';
+}
+.fa-rocket:before {
+	content: '\f135';
+}
+.fa-maxcdn:before {
+	content: '\f136';
+}
+.fa-chevron-circle-left:before {
+	content: '\f137';
+}
+.fa-chevron-circle-right:before {
+	content: '\f138';
+}
+.fa-chevron-circle-up:before {
+	content: '\f139';
+}
+.fa-chevron-circle-down:before {
+	content: '\f13a';
+}
+.fa-html5:before {
+	content: '\f13b';
+}
+.fa-css3:before {
+	content: '\f13c';
+}
+.fa-anchor:before {
+	content: '\f13d';
+}
+.fa-unlock-alt:before {
+	content: '\f13e';
+}
+.fa-bullseye:before {
+	content: '\f140';
+}
+.fa-ellipsis-h:before {
+	content: '\f141';
+}
+.fa-ellipsis-v:before {
+	content: '\f142';
+}
+.fa-rss-square:before {
+	content: '\f143';
+}
+.fa-play-circle:before {
+	content: '\f144';
+}
+.fa-ticket:before {
+	content: '\f145';
+}
+.fa-minus-square:before {
+	content: '\f146';
+}
+.fa-minus-square-o:before {
+	content: '\f147';
+}
+.fa-level-up:before {
+	content: '\f148';
+}
+.fa-level-down:before {
+	content: '\f149';
+}
+.fa-check-square:before {
+	content: '\f14a';
+}
+.fa-pencil-square:before {
+	content: '\f14b';
+}
+.fa-external-link-square:before {
+	content: '\f14c';
+}
+.fa-share-square:before {
+	content: '\f14d';
+}
+.fa-compass:before {
+	content: '\f14e';
+}
+.fa-toggle-down:before,
+.fa-caret-square-o-down:before {
+	content: '\f150';
+}
+.fa-toggle-up:before,
+.fa-caret-square-o-up:before {
+	content: '\f151';
+}
+.fa-toggle-right:before,
+.fa-caret-square-o-right:before {
+	content: '\f152';
+}
+.fa-euro:before,
+.fa-eur:before {
+	content: '\f153';
+}
+.fa-gbp:before {
+	content: '\f154';
+}
+.fa-dollar:before,
+.fa-usd:before {
+	content: '\f155';
+}
+.fa-rupee:before,
+.fa-inr:before {
+	content: '\f156';
+}
+.fa-cny:before,
+.fa-rmb:before,
+.fa-yen:before,
+.fa-jpy:before {
+	content: '\f157';
+}
+.fa-ruble:before,
+.fa-rouble:before,
+.fa-rub:before {
+	content: '\f158';
+}
+.fa-won:before,
+.fa-krw:before {
+	content: '\f159';
+}
+.fa-bitcoin:before,
+.fa-btc:before {
+	content: '\f15a';
+}
+.fa-file:before {
+	content: '\f15b';
+}
+.fa-file-text:before {
+	content: '\f15c';
+}
+.fa-sort-alpha-asc:before {
+	content: '\f15d';
+}
+.fa-sort-alpha-desc:before {
+	content: '\f15e';
+}
+.fa-sort-amount-asc:before {
+	content: '\f160';
+}
+.fa-sort-amount-desc:before {
+	content: '\f161';
+}
+.fa-sort-numeric-asc:before {
+	content: '\f162';
+}
+.fa-sort-numeric-desc:before {
+	content: '\f163';
+}
+.fa-thumbs-up:before {
+	content: '\f164';
+}
+.fa-thumbs-down:before {
+	content: '\f165';
+}
+.fa-youtube-square:before {
+	content: '\f166';
+}
+.fa-youtube:before {
+	content: '\f167';
+}
+.fa-xing:before {
+	content: '\f168';
+}
+.fa-xing-square:before {
+	content: '\f169';
+}
+.fa-youtube-play:before {
+	content: '\f16a';
+}
+.fa-dropbox:before {
+	content: '\f16b';
+}
+.fa-stack-overflow:before {
+	content: '\f16c';
+}
+.fa-instagram:before {
+	content: '\f16d';
+}
+.fa-flickr:before {
+	content: '\f16e';
+}
+.fa-adn:before {
+	content: '\f170';
+}
+.fa-bitbucket:before {
+	content: '\f171';
+}
+.fa-bitbucket-square:before {
+	content: '\f172';
+}
+.fa-tumblr:before {
+	content: '\f173';
+}
+.fa-tumblr-square:before {
+	content: '\f174';
+}
+.fa-long-arrow-down:before {
+	content: '\f175';
+}
+.fa-long-arrow-up:before {
+	content: '\f176';
+}
+.fa-long-arrow-left:before {
+	content: '\f177';
+}
+.fa-long-arrow-right:before {
+	content: '\f178';
+}
+.fa-apple:before {
+	content: '\f179';
+}
+.fa-windows:before {
+	content: '\f17a';
+}
+.fa-android:before {
+	content: '\f17b';
+}
+.fa-linux:before {
+	content: '\f17c';
+}
+.fa-dribbble:before {
+	content: '\f17d';
+}
+.fa-skype:before {
+	content: '\f17e';
+}
+.fa-foursquare:before {
+	content: '\f180';
+}
+.fa-trello:before {
+	content: '\f181';
+}
+.fa-female:before {
+	content: '\f182';
+}
+.fa-male:before {
+	content: '\f183';
+}
+.fa-gittip:before,
+.fa-gratipay:before {
+	content: '\f184';
+}
+.fa-sun-o:before {
+	content: '\f185';
+}
+.fa-moon-o:before {
+	content: '\f186';
+}
+.fa-archive:before {
+	content: '\f187';
+}
+.fa-bug:before {
+	content: '\f188';
+}
+.fa-vk:before {
+	content: '\f189';
+}
+.fa-weibo:before {
+	content: '\f18a';
+}
+.fa-renren:before {
+	content: '\f18b';
+}
+.fa-pagelines:before {
+	content: '\f18c';
+}
+.fa-stack-exchange:before {
+	content: '\f18d';
+}
+.fa-arrow-circle-o-right:before {
+	content: '\f18e';
+}
+.fa-arrow-circle-o-left:before {
+	content: '\f190';
+}
+.fa-toggle-left:before,
+.fa-caret-square-o-left:before {
+	content: '\f191';
+}
+.fa-dot-circle-o:before {
+	content: '\f192';
+}
+.fa-wheelchair:before {
+	content: '\f193';
+}
+.fa-vimeo-square:before {
+	content: '\f194';
+}
+.fa-turkish-lira:before,
+.fa-try:before {
+	content: '\f195';
+}
+.fa-plus-square-o:before {
+	content: '\f196';
+}
+.fa-space-shuttle:before {
+	content: '\f197';
+}
+.fa-slack:before {
+	content: '\f198';
+}
+.fa-envelope-square:before {
+	content: '\f199';
+}
+.fa-wordpress:before {
+	content: '\f19a';
+}
+.fa-openid:before {
+	content: '\f19b';
+}
+.fa-institution:before,
+.fa-bank:before,
+.fa-university:before {
+	content: '\f19c';
+}
+.fa-mortar-board:before,
+.fa-graduation-cap:before {
+	content: '\f19d';
+}
+.fa-yahoo:before {
+	content: '\f19e';
+}
+.fa-google:before {
+	content: '\f1a0';
+}
+.fa-reddit:before {
+	content: '\f1a1';
+}
+.fa-reddit-square:before {
+	content: '\f1a2';
+}
+.fa-stumbleupon-circle:before {
+	content: '\f1a3';
+}
+.fa-stumbleupon:before {
+	content: '\f1a4';
+}
+.fa-delicious:before {
+	content: '\f1a5';
+}
+.fa-digg:before {
+	content: '\f1a6';
+}
+.fa-pied-piper-pp:before {
+	content: '\f1a7';
+}
+.fa-pied-piper-alt:before {
+	content: '\f1a8';
+}
+.fa-drupal:before {
+	content: '\f1a9';
+}
+.fa-joomla:before {
+	content: '\f1aa';
+}
+.fa-language:before {
+	content: '\f1ab';
+}
+.fa-fax:before {
+	content: '\f1ac';
+}
+.fa-building:before {
+	content: '\f1ad';
+}
+.fa-child:before {
+	content: '\f1ae';
+}
+.fa-paw:before {
+	content: '\f1b0';
+}
+.fa-spoon:before {
+	content: '\f1b1';
+}
+.fa-cube:before {
+	content: '\f1b2';
+}
+.fa-cubes:before {
+	content: '\f1b3';
+}
+.fa-behance:before {
+	content: '\f1b4';
+}
+.fa-behance-square:before {
+	content: '\f1b5';
+}
+.fa-steam:before {
+	content: '\f1b6';
+}
+.fa-steam-square:before {
+	content: '\f1b7';
+}
+.fa-recycle:before {
+	content: '\f1b8';
+}
+.fa-automobile:before,
+.fa-car:before {
+	content: '\f1b9';
+}
+.fa-cab:before,
+.fa-taxi:before {
+	content: '\f1ba';
+}
+.fa-tree:before {
+	content: '\f1bb';
+}
+.fa-spotify:before {
+	content: '\f1bc';
+}
+.fa-deviantart:before {
+	content: '\f1bd';
+}
+.fa-soundcloud:before {
+	content: '\f1be';
+}
+.fa-database:before {
+	content: '\f1c0';
+}
+.fa-file-pdf-o:before {
+	content: '\f1c1';
+}
+.fa-file-word-o:before {
+	content: '\f1c2';
+}
+.fa-file-excel-o:before {
+	content: '\f1c3';
+}
+.fa-file-powerpoint-o:before {
+	content: '\f1c4';
+}
+.fa-file-photo-o:before,
+.fa-file-picture-o:before,
+.fa-file-image-o:before {
+	content: '\f1c5';
+}
+.fa-file-zip-o:before,
+.fa-file-archive-o:before {
+	content: '\f1c6';
+}
+.fa-file-sound-o:before,
+.fa-file-audio-o:before {
+	content: '\f1c7';
+}
+.fa-file-movie-o:before,
+.fa-file-video-o:before {
+	content: '\f1c8';
+}
+.fa-file-code-o:before {
+	content: '\f1c9';
+}
+.fa-vine:before {
+	content: '\f1ca';
+}
+.fa-codepen:before {
+	content: '\f1cb';
+}
+.fa-jsfiddle:before {
+	content: '\f1cc';
+}
+.fa-life-bouy:before,
+.fa-life-buoy:before,
+.fa-life-saver:before,
+.fa-support:before,
+.fa-life-ring:before {
+	content: '\f1cd';
+}
+.fa-circle-o-notch:before {
+	content: '\f1ce';
+}
+.fa-ra:before,
+.fa-resistance:before,
+.fa-rebel:before {
+	content: '\f1d0';
+}
+.fa-ge:before,
+.fa-empire:before {
+	content: '\f1d1';
+}
+.fa-git-square:before {
+	content: '\f1d2';
+}
+.fa-git:before {
+	content: '\f1d3';
+}
+.fa-y-combinator-square:before,
+.fa-yc-square:before,
+.fa-hacker-news:before {
+	content: '\f1d4';
+}
+.fa-tencent-weibo:before {
+	content: '\f1d5';
+}
+.fa-qq:before {
+	content: '\f1d6';
+}
+.fa-wechat:before,
+.fa-weixin:before {
+	content: '\f1d7';
+}
+.fa-send:before,
+.fa-paper-plane:before {
+	content: '\f1d8';
+}
+.fa-send-o:before,
+.fa-paper-plane-o:before {
+	content: '\f1d9';
+}
+.fa-history:before {
+	content: '\f1da';
+}
+.fa-circle-thin:before {
+	content: '\f1db';
+}
+.fa-header:before {
+	content: '\f1dc';
+}
+.fa-paragraph:before {
+	content: '\f1dd';
+}
+.fa-sliders:before {
+	content: '\f1de';
+}
+.fa-share-alt:before {
+	content: '\f1e0';
+}
+.fa-share-alt-square:before {
+	content: '\f1e1';
+}
+.fa-bomb:before {
+	content: '\f1e2';
+}
+.fa-soccer-ball-o:before,
+.fa-futbol-o:before {
+	content: '\f1e3';
+}
+.fa-tty:before {
+	content: '\f1e4';
+}
+.fa-binoculars:before {
+	content: '\f1e5';
+}
+.fa-plug:before {
+	content: '\f1e6';
+}
+.fa-slideshare:before {
+	content: '\f1e7';
+}
+.fa-twitch:before {
+	content: '\f1e8';
+}
+.fa-yelp:before {
+	content: '\f1e9';
+}
+.fa-newspaper-o:before {
+	content: '\f1ea';
+}
+.fa-wifi:before {
+	content: '\f1eb';
+}
+.fa-calculator:before {
+	content: '\f1ec';
+}
+.fa-paypal:before {
+	content: '\f1ed';
+}
+.fa-google-wallet:before {
+	content: '\f1ee';
+}
+.fa-cc-visa:before {
+	content: '\f1f0';
+}
+.fa-cc-mastercard:before {
+	content: '\f1f1';
+}
+.fa-cc-discover:before {
+	content: '\f1f2';
+}
+.fa-cc-amex:before {
+	content: '\f1f3';
+}
+.fa-cc-paypal:before {
+	content: '\f1f4';
+}
+.fa-cc-stripe:before {
+	content: '\f1f5';
+}
+.fa-bell-slash:before {
+	content: '\f1f6';
+}
+.fa-bell-slash-o:before {
+	content: '\f1f7';
+}
+.fa-trash:before {
+	content: '\f1f8';
+}
+.fa-copyright:before {
+	content: '\f1f9';
+}
+.fa-at:before {
+	content: '\f1fa';
+}
+.fa-eyedropper:before {
+	content: '\f1fb';
+}
+.fa-paint-brush:before {
+	content: '\f1fc';
+}
+.fa-birthday-cake:before {
+	content: '\f1fd';
+}
+.fa-area-chart:before {
+	content: '\f1fe';
+}
+.fa-pie-chart:before {
+	content: '\f200';
+}
+.fa-line-chart:before {
+	content: '\f201';
+}
+.fa-lastfm:before {
+	content: '\f202';
+}
+.fa-lastfm-square:before {
+	content: '\f203';
+}
+.fa-toggle-off:before {
+	content: '\f204';
+}
+.fa-toggle-on:before {
+	content: '\f205';
+}
+.fa-bicycle:before {
+	content: '\f206';
+}
+.fa-bus:before {
+	content: '\f207';
+}
+.fa-ioxhost:before {
+	content: '\f208';
+}
+.fa-angellist:before {
+	content: '\f209';
+}
+.fa-cc:before {
+	content: '\f20a';
+}
+.fa-shekel:before,
+.fa-sheqel:before,
+.fa-ils:before {
+	content: '\f20b';
+}
+.fa-meanpath:before {
+	content: '\f20c';
+}
+.fa-buysellads:before {
+	content: '\f20d';
+}
+.fa-connectdevelop:before {
+	content: '\f20e';
+}
+.fa-dashcube:before {
+	content: '\f210';
+}
+.fa-forumbee:before {
+	content: '\f211';
+}
+.fa-leanpub:before {
+	content: '\f212';
+}
+.fa-sellsy:before {
+	content: '\f213';
+}
+.fa-shirtsinbulk:before {
+	content: '\f214';
+}
+.fa-simplybuilt:before {
+	content: '\f215';
+}
+.fa-skyatlas:before {
+	content: '\f216';
+}
+.fa-cart-plus:before {
+	content: '\f217';
+}
+.fa-cart-arrow-down:before {
+	content: '\f218';
+}
+.fa-diamond:before {
+	content: '\f219';
+}
+.fa-ship:before {
+	content: '\f21a';
+}
+.fa-user-secret:before {
+	content: '\f21b';
+}
+.fa-motorcycle:before {
+	content: '\f21c';
+}
+.fa-street-view:before {
+	content: '\f21d';
+}
+.fa-heartbeat:before {
+	content: '\f21e';
+}
+.fa-venus:before {
+	content: '\f221';
+}
+.fa-mars:before {
+	content: '\f222';
+}
+.fa-mercury:before {
+	content: '\f223';
+}
+.fa-intersex:before,
+.fa-transgender:before {
+	content: '\f224';
+}
+.fa-transgender-alt:before {
+	content: '\f225';
+}
+.fa-venus-double:before {
+	content: '\f226';
+}
+.fa-mars-double:before {
+	content: '\f227';
+}
+.fa-venus-mars:before {
+	content: '\f228';
+}
+.fa-mars-stroke:before {
+	content: '\f229';
+}
+.fa-mars-stroke-v:before {
+	content: '\f22a';
+}
+.fa-mars-stroke-h:before {
+	content: '\f22b';
+}
+.fa-neuter:before {
+	content: '\f22c';
+}
+.fa-genderless:before {
+	content: '\f22d';
+}
+.fa-facebook-official:before {
+	content: '\f230';
+}
+.fa-pinterest-p:before {
+	content: '\f231';
+}
+.fa-whatsapp:before {
+	content: '\f232';
+}
+.fa-server:before {
+	content: '\f233';
+}
+.fa-user-plus:before {
+	content: '\f234';
+}
+.fa-user-times:before {
+	content: '\f235';
+}
+.fa-hotel:before,
+.fa-bed:before {
+	content: '\f236';
+}
+.fa-viacoin:before {
+	content: '\f237';
+}
+.fa-train:before {
+	content: '\f238';
+}
+.fa-subway:before {
+	content: '\f239';
+}
+.fa-medium:before {
+	content: '\f23a';
+}
+.fa-yc:before,
+.fa-y-combinator:before {
+	content: '\f23b';
+}
+.fa-optin-monster:before {
+	content: '\f23c';
+}
+.fa-opencart:before {
+	content: '\f23d';
+}
+.fa-expeditedssl:before {
+	content: '\f23e';
+}
+.fa-battery-4:before,
+.fa-battery:before,
+.fa-battery-full:before {
+	content: '\f240';
+}
+.fa-battery-3:before,
+.fa-battery-three-quarters:before {
+	content: '\f241';
+}
+.fa-battery-2:before,
+.fa-battery-half:before {
+	content: '\f242';
+}
+.fa-battery-1:before,
+.fa-battery-quarter:before {
+	content: '\f243';
+}
+.fa-battery-0:before,
+.fa-battery-empty:before {
+	content: '\f244';
+}
+.fa-mouse-pointer:before {
+	content: '\f245';
+}
+.fa-i-cursor:before {
+	content: '\f246';
+}
+.fa-object-group:before {
+	content: '\f247';
+}
+.fa-object-ungroup:before {
+	content: '\f248';
+}
+.fa-sticky-note:before {
+	content: '\f249';
+}
+.fa-sticky-note-o:before {
+	content: '\f24a';
+}
+.fa-cc-jcb:before {
+	content: '\f24b';
+}
+.fa-cc-diners-club:before {
+	content: '\f24c';
+}
+.fa-clone:before {
+	content: '\f24d';
+}
+.fa-balance-scale:before {
+	content: '\f24e';
+}
+.fa-hourglass-o:before {
+	content: '\f250';
+}
+.fa-hourglass-1:before,
+.fa-hourglass-start:before {
+	content: '\f251';
+}
+.fa-hourglass-2:before,
+.fa-hourglass-half:before {
+	content: '\f252';
+}
+.fa-hourglass-3:before,
+.fa-hourglass-end:before {
+	content: '\f253';
+}
+.fa-hourglass:before {
+	content: '\f254';
+}
+.fa-hand-grab-o:before,
+.fa-hand-rock-o:before {
+	content: '\f255';
+}
+.fa-hand-stop-o:before,
+.fa-hand-paper-o:before {
+	content: '\f256';
+}
+.fa-hand-scissors-o:before {
+	content: '\f257';
+}
+.fa-hand-lizard-o:before {
+	content: '\f258';
+}
+.fa-hand-spock-o:before {
+	content: '\f259';
+}
+.fa-hand-pointer-o:before {
+	content: '\f25a';
+}
+.fa-hand-peace-o:before {
+	content: '\f25b';
+}
+.fa-trademark:before {
+	content: '\f25c';
+}
+.fa-registered:before {
+	content: '\f25d';
+}
+.fa-creative-commons:before {
+	content: '\f25e';
+}
+.fa-gg:before {
+	content: '\f260';
+}
+.fa-gg-circle:before {
+	content: '\f261';
+}
+.fa-tripadvisor:before {
+	content: '\f262';
+}
+.fa-odnoklassniki:before {
+	content: '\f263';
+}
+.fa-odnoklassniki-square:before {
+	content: '\f264';
+}
+.fa-get-pocket:before {
+	content: '\f265';
+}
+.fa-wikipedia-w:before {
+	content: '\f266';
+}
+.fa-safari:before {
+	content: '\f267';
+}
+.fa-chrome:before {
+	content: '\f268';
+}
+.fa-firefox:before {
+	content: '\f269';
+}
+.fa-opera:before {
+	content: '\f26a';
+}
+.fa-internet-explorer:before {
+	content: '\f26b';
+}
+.fa-tv:before,
+.fa-television:before {
+	content: '\f26c';
+}
+.fa-contao:before {
+	content: '\f26d';
+}
+.fa-500px:before {
+	content: '\f26e';
+}
+.fa-amazon:before {
+	content: '\f270';
+}
+.fa-calendar-plus-o:before {
+	content: '\f271';
+}
+.fa-calendar-minus-o:before {
+	content: '\f272';
+}
+.fa-calendar-times-o:before {
+	content: '\f273';
+}
+.fa-calendar-check-o:before {
+	content: '\f274';
+}
+.fa-industry:before {
+	content: '\f275';
+}
+.fa-map-pin:before {
+	content: '\f276';
+}
+.fa-map-signs:before {
+	content: '\f277';
+}
+.fa-map-o:before {
+	content: '\f278';
+}
+.fa-map:before {
+	content: '\f279';
+}
+.fa-commenting:before {
+	content: '\f27a';
+}
+.fa-commenting-o:before {
+	content: '\f27b';
+}
+.fa-houzz:before {
+	content: '\f27c';
+}
+.fa-vimeo:before {
+	content: '\f27d';
+}
+.fa-black-tie:before {
+	content: '\f27e';
+}
+.fa-fonticons:before {
+	content: '\f280';
+}
+.fa-reddit-alien:before {
+	content: '\f281';
+}
+.fa-edge:before {
+	content: '\f282';
+}
+.fa-credit-card-alt:before {
+	content: '\f283';
+}
+.fa-codiepie:before {
+	content: '\f284';
+}
+.fa-modx:before {
+	content: '\f285';
+}
+.fa-fort-awesome:before {
+	content: '\f286';
+}
+.fa-usb:before {
+	content: '\f287';
+}
+.fa-product-hunt:before {
+	content: '\f288';
+}
+.fa-mixcloud:before {
+	content: '\f289';
+}
+.fa-scribd:before {
+	content: '\f28a';
+}
+.fa-pause-circle:before {
+	content: '\f28b';
+}
+.fa-pause-circle-o:before {
+	content: '\f28c';
+}
+.fa-stop-circle:before {
+	content: '\f28d';
+}
+.fa-stop-circle-o:before {
+	content: '\f28e';
+}
+.fa-shopping-bag:before {
+	content: '\f290';
+}
+.fa-shopping-basket:before {
+	content: '\f291';
+}
+.fa-hashtag:before {
+	content: '\f292';
+}
+.fa-bluetooth:before {
+	content: '\f293';
+}
+.fa-bluetooth-b:before {
+	content: '\f294';
+}
+.fa-percent:before {
+	content: '\f295';
+}
+.fa-gitlab:before {
+	content: '\f296';
+}
+.fa-wpbeginner:before {
+	content: '\f297';
+}
+.fa-wpforms:before {
+	content: '\f298';
+}
+.fa-envira:before {
+	content: '\f299';
+}
+.fa-universal-access:before {
+	content: '\f29a';
+}
+.fa-wheelchair-alt:before {
+	content: '\f29b';
+}
+.fa-question-circle-o:before {
+	content: '\f29c';
+}
+.fa-blind:before {
+	content: '\f29d';
+}
+.fa-audio-description:before {
+	content: '\f29e';
+}
+.fa-volume-control-phone:before {
+	content: '\f2a0';
+}
+.fa-braille:before {
+	content: '\f2a1';
+}
+.fa-assistive-listening-systems:before {
+	content: '\f2a2';
+}
+.fa-asl-interpreting:before,
+.fa-american-sign-language-interpreting:before {
+	content: '\f2a3';
+}
+.fa-deafness:before,
+.fa-hard-of-hearing:before,
+.fa-deaf:before {
+	content: '\f2a4';
+}
+.fa-glide:before {
+	content: '\f2a5';
+}
+.fa-glide-g:before {
+	content: '\f2a6';
+}
+.fa-signing:before,
+.fa-sign-language:before {
+	content: '\f2a7';
+}
+.fa-low-vision:before {
+	content: '\f2a8';
+}
+.fa-viadeo:before {
+	content: '\f2a9';
+}
+.fa-viadeo-square:before {
+	content: '\f2aa';
+}
+.fa-snapchat:before {
+	content: '\f2ab';
+}
+.fa-snapchat-ghost:before {
+	content: '\f2ac';
+}
+.fa-snapchat-square:before {
+	content: '\f2ad';
+}
+.fa-pied-piper:before {
+	content: '\f2ae';
+}
+.fa-first-order:before {
+	content: '\f2b0';
+}
+.fa-yoast:before {
+	content: '\f2b1';
+}
+.fa-themeisle:before {
+	content: '\f2b2';
+}
+.fa-google-plus-circle:before,
+.fa-google-plus-official:before {
+	content: '\f2b3';
+}
+.fa-fa:before,
+.fa-font-awesome:before {
+	content: '\f2b4';
+}
+.fa-handshake-o:before {
+	content: '\f2b5';
+}
+.fa-envelope-open:before {
+	content: '\f2b6';
+}
+.fa-envelope-open-o:before {
+	content: '\f2b7';
+}
+.fa-linode:before {
+	content: '\f2b8';
+}
+.fa-address-book:before {
+	content: '\f2b9';
+}
+.fa-address-book-o:before {
+	content: '\f2ba';
+}
+.fa-vcard:before,
+.fa-address-card:before {
+	content: '\f2bb';
+}
+.fa-vcard-o:before,
+.fa-address-card-o:before {
+	content: '\f2bc';
+}
+.fa-user-circle:before {
+	content: '\f2bd';
+}
+.fa-user-circle-o:before {
+	content: '\f2be';
+}
+.fa-user-o:before {
+	content: '\f2c0';
+}
+.fa-id-badge:before {
+	content: '\f2c1';
+}
+.fa-drivers-license:before,
+.fa-id-card:before {
+	content: '\f2c2';
+}
+.fa-drivers-license-o:before,
+.fa-id-card-o:before {
+	content: '\f2c3';
+}
+.fa-quora:before {
+	content: '\f2c4';
+}
+.fa-free-code-camp:before {
+	content: '\f2c5';
+}
+.fa-telegram:before {
+	content: '\f2c6';
+}
+.fa-thermometer-4:before,
+.fa-thermometer:before,
+.fa-thermometer-full:before {
+	content: '\f2c7';
+}
+.fa-thermometer-3:before,
+.fa-thermometer-three-quarters:before {
+	content: '\f2c8';
+}
+.fa-thermometer-2:before,
+.fa-thermometer-half:before {
+	content: '\f2c9';
+}
+.fa-thermometer-1:before,
+.fa-thermometer-quarter:before {
+	content: '\f2ca';
+}
+.fa-thermometer-0:before,
+.fa-thermometer-empty:before {
+	content: '\f2cb';
+}
+.fa-shower:before {
+	content: '\f2cc';
+}
+.fa-bathtub:before,
+.fa-s15:before,
+.fa-bath:before {
+	content: '\f2cd';
+}
+.fa-podcast:before {
+	content: '\f2ce';
+}
+.fa-window-maximize:before {
+	content: '\f2d0';
+}
+.fa-window-minimize:before {
+	content: '\f2d1';
+}
+.fa-window-restore:before {
+	content: '\f2d2';
+}
+.fa-times-rectangle:before,
+.fa-window-close:before {
+	content: '\f2d3';
+}
+.fa-times-rectangle-o:before,
+.fa-window-close-o:before {
+	content: '\f2d4';
+}
+.fa-bandcamp:before {
+	content: '\f2d5';
+}
+.fa-grav:before {
+	content: '\f2d6';
+}
+.fa-etsy:before {
+	content: '\f2d7';
+}
+.fa-imdb:before {
+	content: '\f2d8';
+}
+.fa-ravelry:before {
+	content: '\f2d9';
+}
+.fa-eercast:before {
+	content: '\f2da';
+}
+.fa-microchip:before {
+	content: '\f2db';
+}
+.fa-snowflake-o:before {
+	content: '\f2dc';
+}
+.fa-superpowers:before {
+	content: '\f2dd';
+}
+.fa-wpexplorer:before {
+	content: '\f2de';
+}
+.fa-meetup:before {
+	content: '\f2e0';
+}
+.sr-only {
+	position: absolute;
+	width: 1px;
+	height: 1px;
+	padding: 0;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(0, 0, 0, 0);
+	border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+	position: static;
+	width: auto;
+	height: auto;
+	margin: 0;
+	overflow: visible;
+	clip: auto;
+}

+ 788 - 0
Web/src/theme/font-awesome/font-awesome.ts

@@ -0,0 +1,788 @@
+export const fontAwesomeClassList: Array<string> = [
+	'fa-glass',
+	'fa-music',
+	'fa-search',
+	'fa-envelope-o',
+	'fa-heart',
+	'fa-star',
+	'fa-star-o',
+	'fa-user',
+	'fa-film',
+	'fa-th-large',
+	'fa-th',
+	'fa-th-list',
+	'fa-check',
+	'fa-remove',
+	'fa-close',
+	'fa-times',
+	'fa-search-plus',
+	'fa-search-minus',
+	'fa-power-off',
+	'fa-signal',
+	'fa-gear',
+	'fa-cog',
+	'fa-trash-o',
+	'fa-home',
+	'fa-file-o',
+	'fa-clock-o',
+	'fa-road',
+	'fa-download',
+	'fa-arrow-circle-o-down',
+	'fa-arrow-circle-o-up',
+	'fa-inbox',
+	'fa-play-circle-o',
+	'fa-rotate-right',
+	'fa-repeat',
+	'fa-refresh',
+	'fa-list-alt',
+	'fa-lock',
+	'fa-flag',
+	'fa-headphones',
+	'fa-volume-off',
+	'fa-volume-down',
+	'fa-volume-up',
+	'fa-qrcode',
+	'fa-barcode',
+	'fa-tag',
+	'fa-tags',
+	'fa-book',
+	'fa-bookmark',
+	'fa-print',
+	'fa-camera',
+	'fa-font',
+	'fa-bold',
+	'fa-italic',
+	'fa-text-height',
+	'fa-text-width',
+	'fa-align-left',
+	'fa-align-center',
+	'fa-align-right',
+	'fa-align-justify',
+	'fa-list',
+	'fa-dedent',
+	'fa-outdent',
+	'fa-indent',
+	'fa-video-camera',
+	'fa-photo',
+	'fa-image',
+	'fa-picture-o',
+	'fa-pencil',
+	'fa-map-marker',
+	'fa-adjust',
+	'fa-tint',
+	'fa-edit',
+	'fa-pencil-square-o',
+	'fa-share-square-o',
+	'fa-check-square-o',
+	'fa-arrows',
+	'fa-step-backward',
+	'fa-fast-backward',
+	'fa-backward',
+	'fa-play',
+	'fa-pause',
+	'fa-stop',
+	'fa-forward',
+	'fa-fast-forward',
+	'fa-step-forward',
+	'fa-eject',
+	'fa-chevron-left',
+	'fa-chevron-right',
+	'fa-plus-circle',
+	'fa-minus-circle',
+	'fa-times-circle',
+	'fa-check-circle',
+	'fa-question-circle',
+	'fa-info-circle',
+	'fa-crosshairs',
+	'fa-times-circle-o',
+	'fa-check-circle-o',
+	'fa-ban',
+	'fa-arrow-left',
+	'fa-arrow-right',
+	'fa-arrow-up',
+	'fa-arrow-down',
+	'fa-mail-forward',
+	'fa-share',
+	'fa-expand',
+	'fa-compress',
+	'fa-plus',
+	'fa-minus',
+	'fa-asterisk',
+	'fa-exclamation-circle',
+	'fa-gift',
+	'fa-leaf',
+	'fa-fire',
+	'fa-eye',
+	'fa-eye-slash',
+	'fa-warning',
+	'fa-exclamation-triangle',
+	'fa-plane',
+	'fa-calendar',
+	'fa-random',
+	'fa-comment',
+	'fa-magnet',
+	'fa-chevron-up',
+	'fa-chevron-down',
+	'fa-retweet',
+	'fa-shopping-cart',
+	'fa-folder',
+	'fa-folder-open',
+	'fa-arrows-v',
+	'fa-arrows-h',
+	'fa-bar-chart-o',
+	'fa-bar-chart',
+	'fa-twitter-square',
+	'fa-facebook-square',
+	'fa-camera-retro',
+	'fa-key',
+	'fa-gears',
+	'fa-cogs',
+	'fa-comments',
+	'fa-thumbs-o-up',
+	'fa-thumbs-o-down',
+	'fa-star-half',
+	'fa-heart-o',
+	'fa-sign-out',
+	'fa-linkedin-square',
+	'fa-thumb-tack',
+	'fa-external-link',
+	'fa-sign-in',
+	'fa-trophy',
+	'fa-github-square',
+	'fa-upload',
+	'fa-lemon-o',
+	'fa-phone',
+	'fa-square-o',
+	'fa-bookmark-o',
+	'fa-phone-square',
+	'fa-twitter',
+	'fa-facebook-f',
+	'fa-facebook',
+	'fa-github',
+	'fa-unlock',
+	'fa-credit-card',
+	'fa-feed',
+	'fa-rss',
+	'fa-hdd-o',
+	'fa-bullhorn',
+	'fa-bell',
+	'fa-certificate',
+	'fa-hand-o-right',
+	'fa-hand-o-left',
+	'fa-hand-o-up',
+	'fa-hand-o-down',
+	'fa-arrow-circle-left',
+	'fa-arrow-circle-right',
+	'fa-arrow-circle-up',
+	'fa-arrow-circle-down',
+	'fa-globe',
+	'fa-wrench',
+	'fa-tasks',
+	'fa-filter',
+	'fa-briefcase',
+	'fa-arrows-alt',
+	'fa-group',
+	'fa-users',
+	'fa-chain',
+	'fa-link',
+	'fa-cloud',
+	'fa-flask',
+	'fa-cut',
+	'fa-scissors',
+	'fa-copy',
+	'fa-files-o',
+	'fa-paperclip',
+	'fa-save',
+	'fa-floppy-o',
+	'fa-square',
+	'fa-navicon',
+	'fa-reorder',
+	'fa-bars',
+	'fa-list-ul',
+	'fa-list-ol',
+	'fa-strikethrough',
+	'fa-underline',
+	'fa-table',
+	'fa-magic',
+	'fa-truck',
+	'fa-pinterest',
+	'fa-pinterest-square',
+	'fa-google-plus-square',
+	'fa-google-plus',
+	'fa-money',
+	'fa-caret-down',
+	'fa-caret-up',
+	'fa-caret-left',
+	'fa-caret-right',
+	'fa-columns',
+	'fa-unsorted',
+	'fa-sort',
+	'fa-sort-down',
+	'fa-sort-desc',
+	'fa-sort-up',
+	'fa-sort-asc',
+	'fa-envelope',
+	'fa-linkedin',
+	'fa-rotate-left',
+	'fa-undo',
+	'fa-legal',
+	'fa-gavel',
+	'fa-dashboard',
+	'fa-tachometer',
+	'fa-comment-o',
+	'fa-comments-o',
+	'fa-flash',
+	'fa-bolt',
+	'fa-sitemap',
+	'fa-umbrella',
+	'fa-paste',
+	'fa-clipboard',
+	'fa-lightbulb-o',
+	'fa-exchange',
+	'fa-cloud-download',
+	'fa-cloud-upload',
+	'fa-user-md',
+	'fa-stethoscope',
+	'fa-suitcase',
+	'fa-bell-o',
+	'fa-coffee',
+	'fa-cutlery',
+	'fa-file-text-o',
+	'fa-building-o',
+	'fa-hospital-o',
+	'fa-ambulance',
+	'fa-medkit',
+	'fa-fighter-jet',
+	'fa-beer',
+	'fa-h-square',
+	'fa-plus-square',
+	'fa-angle-double-left',
+	'fa-angle-double-right',
+	'fa-angle-double-up',
+	'fa-angle-double-down',
+	'fa-angle-left',
+	'fa-angle-right',
+	'fa-angle-up',
+	'fa-angle-down',
+	'fa-desktop',
+	'fa-laptop',
+	'fa-tablet',
+	'fa-mobile-phone',
+	'fa-mobile',
+	'fa-circle-o',
+	'fa-quote-left',
+	'fa-quote-right',
+	'fa-spinner',
+	'fa-circle',
+	'fa-mail-reply',
+	'fa-reply',
+	'fa-github-alt',
+	'fa-folder-o',
+	'fa-folder-open-o',
+	'fa-smile-o',
+	'fa-frown-o',
+	'fa-meh-o',
+	'fa-gamepad',
+	'fa-keyboard-o',
+	'fa-flag-o',
+	'fa-flag-checkered',
+	'fa-terminal',
+	'fa-code',
+	'fa-mail-reply-all',
+	'fa-reply-all',
+	'fa-star-half-empty',
+	'fa-star-half-full',
+	'fa-star-half-o',
+	'fa-location-arrow',
+	'fa-crop',
+	'fa-code-fork',
+	'fa-unlink',
+	'fa-chain-broken',
+	'fa-question',
+	'fa-info',
+	'fa-exclamation',
+	'fa-superscript',
+	'fa-subscript',
+	'fa-eraser',
+	'fa-puzzle-piece',
+	'fa-microphone',
+	'fa-microphone-slash',
+	'fa-shield',
+	'fa-calendar-o',
+	'fa-fire-extinguisher',
+	'fa-rocket',
+	'fa-maxcdn',
+	'fa-chevron-circle-left',
+	'fa-chevron-circle-right',
+	'fa-chevron-circle-up',
+	'fa-chevron-circle-down',
+	'fa-html5',
+	'fa-css3',
+	'fa-anchor',
+	'fa-unlock-alt',
+	'fa-bullseye',
+	'fa-ellipsis-h',
+	'fa-ellipsis-v',
+	'fa-rss-square',
+	'fa-play-circle',
+	'fa-ticket',
+	'fa-minus-square',
+	'fa-minus-square-o',
+	'fa-level-up',
+	'fa-level-down',
+	'fa-check-square',
+	'fa-pencil-square',
+	'fa-external-link-square',
+	'fa-share-square',
+	'fa-compass',
+	'fa-toggle-down',
+	'fa-caret-square-o-down',
+	'fa-toggle-up',
+	'fa-caret-square-o-up',
+	'fa-toggle-right',
+	'fa-caret-square-o-right',
+	'fa-euro',
+	'fa-eur',
+	'fa-gbp',
+	'fa-dollar',
+	'fa-usd',
+	'fa-rupee',
+	'fa-inr',
+	'fa-cny',
+	'fa-rmb',
+	'fa-yen',
+	'fa-jpy',
+	'fa-ruble',
+	'fa-rouble',
+	'fa-rub',
+	'fa-won',
+	'fa-krw',
+	'fa-bitcoin',
+	'fa-btc',
+	'fa-file',
+	'fa-file-text',
+	'fa-sort-alpha-asc',
+	'fa-sort-alpha-desc',
+	'fa-sort-amount-asc',
+	'fa-sort-amount-desc',
+	'fa-sort-numeric-asc',
+	'fa-sort-numeric-desc',
+	'fa-thumbs-up',
+	'fa-thumbs-down',
+	'fa-youtube-square',
+	'fa-youtube',
+	'fa-xing',
+	'fa-xing-square',
+	'fa-youtube-play',
+	'fa-dropbox',
+	'fa-stack-overflow',
+	'fa-instagram',
+	'fa-flickr',
+	'fa-adn',
+	'fa-bitbucket',
+	'fa-bitbucket-square',
+	'fa-tumblr',
+	'fa-tumblr-square',
+	'fa-long-arrow-down',
+	'fa-long-arrow-up',
+	'fa-long-arrow-left',
+	'fa-long-arrow-right',
+	'fa-apple',
+	'fa-windows',
+	'fa-android',
+	'fa-linux',
+	'fa-dribbble',
+	'fa-skype',
+	'fa-foursquare',
+	'fa-trello',
+	'fa-female',
+	'fa-male',
+	'fa-gittip',
+	'fa-gratipay',
+	'fa-sun-o',
+	'fa-moon-o',
+	'fa-archive',
+	'fa-bug',
+	'fa-vk',
+	'fa-weibo',
+	'fa-renren',
+	'fa-pagelines',
+	'fa-stack-exchange',
+	'fa-arrow-circle-o-right',
+	'fa-arrow-circle-o-left',
+	'fa-toggle-left',
+	'fa-caret-square-o-left',
+	'fa-dot-circle-o',
+	'fa-wheelchair',
+	'fa-vimeo-square',
+	'fa-turkish-lira',
+	'fa-try',
+	'fa-plus-square-o',
+	'fa-space-shuttle',
+	'fa-slack',
+	'fa-envelope-square',
+	'fa-wordpress',
+	'fa-openid',
+	'fa-institution',
+	'fa-bank',
+	'fa-university',
+	'fa-mortar-board',
+	'fa-graduation-cap',
+	'fa-yahoo',
+	'fa-google',
+	'fa-reddit',
+	'fa-reddit-square',
+	'fa-stumbleupon-circle',
+	'fa-stumbleupon',
+	'fa-delicious',
+	'fa-digg',
+	'fa-pied-piper-pp',
+	'fa-pied-piper-alt',
+	'fa-drupal',
+	'fa-joomla',
+	'fa-language',
+	'fa-fax',
+	'fa-building',
+	'fa-child',
+	'fa-paw',
+	'fa-spoon',
+	'fa-cube',
+	'fa-cubes',
+	'fa-behance',
+	'fa-behance-square',
+	'fa-steam',
+	'fa-steam-square',
+	'fa-recycle',
+	'fa-automobile',
+	'fa-car',
+	'fa-cab',
+	'fa-taxi',
+	'fa-tree',
+	'fa-spotify',
+	'fa-deviantart',
+	'fa-soundcloud',
+	'fa-database',
+	'fa-file-pdf-o',
+	'fa-file-word-o',
+	'fa-file-excel-o',
+	'fa-file-powerpoint-o',
+	'fa-file-photo-o',
+	'fa-file-picture-o',
+	'fa-file-image-o',
+	'fa-file-zip-o',
+	'fa-file-archive-o',
+	'fa-file-sound-o',
+	'fa-file-audio-o',
+	'fa-file-movie-o',
+	'fa-file-video-o',
+	'fa-file-code-o',
+	'fa-vine',
+	'fa-codepen',
+	'fa-jsfiddle',
+	'fa-life-bouy',
+	'fa-life-buoy',
+	'fa-life-saver',
+	'fa-support',
+	'fa-life-ring',
+	'fa-circle-o-notch',
+	'fa-ra',
+	'fa-resistance',
+	'fa-rebel',
+	'fa-ge',
+	'fa-empire',
+	'fa-git-square',
+	'fa-git',
+	'fa-y-combinator-square',
+	'fa-yc-square',
+	'fa-hacker-news',
+	'fa-tencent-weibo',
+	'fa-qq',
+	'fa-wechat',
+	'fa-weixin',
+	'fa-send',
+	'fa-paper-plane',
+	'fa-send-o',
+	'fa-paper-plane-o',
+	'fa-history',
+	'fa-circle-thin',
+	'fa-header',
+	'fa-paragraph',
+	'fa-sliders',
+	'fa-share-alt',
+	'fa-share-alt-square',
+	'fa-bomb',
+	'fa-soccer-ball-o',
+	'fa-futbol-o',
+	'fa-tty',
+	'fa-binoculars',
+	'fa-plug',
+	'fa-slideshare',
+	'fa-twitch',
+	'fa-yelp',
+	'fa-newspaper-o',
+	'fa-wifi',
+	'fa-calculator',
+	'fa-paypal',
+	'fa-google-wallet',
+	'fa-cc-visa',
+	'fa-cc-mastercard',
+	'fa-cc-discover',
+	'fa-cc-amex',
+	'fa-cc-paypal',
+	'fa-cc-stripe',
+	'fa-bell-slash',
+	'fa-bell-slash-o',
+	'fa-trash',
+	'fa-copyright',
+	'fa-at',
+	'fa-eyedropper',
+	'fa-paint-brush',
+	'fa-birthday-cake',
+	'fa-area-chart',
+	'fa-pie-chart',
+	'fa-line-chart',
+	'fa-lastfm',
+	'fa-lastfm-square',
+	'fa-toggle-off',
+	'fa-toggle-on',
+	'fa-bicycle',
+	'fa-bus',
+	'fa-ioxhost',
+	'fa-angellist',
+	'fa-cc',
+	'fa-shekel',
+	'fa-sheqel',
+	'fa-ils',
+	'fa-meanpath',
+	'fa-buysellads',
+	'fa-connectdevelop',
+	'fa-dashcube',
+	'fa-forumbee',
+	'fa-leanpub',
+	'fa-sellsy',
+	'fa-shirtsinbulk',
+	'fa-simplybuilt',
+	'fa-skyatlas',
+	'fa-cart-plus',
+	'fa-cart-arrow-down',
+	'fa-diamond',
+	'fa-ship',
+	'fa-user-secret',
+	'fa-motorcycle',
+	'fa-street-view',
+	'fa-heartbeat',
+	'fa-venus',
+	'fa-mars',
+	'fa-mercury',
+	'fa-intersex',
+	'fa-transgender',
+	'fa-transgender-alt',
+	'fa-venus-double',
+	'fa-mars-double',
+	'fa-venus-mars',
+	'fa-mars-stroke',
+	'fa-mars-stroke-v',
+	'fa-mars-stroke-h',
+	'fa-neuter',
+	'fa-genderless',
+	'fa-facebook-official',
+	'fa-pinterest-p',
+	'fa-whatsapp',
+	'fa-server',
+	'fa-user-plus',
+	'fa-user-times',
+	'fa-hotel',
+	'fa-bed',
+	'fa-viacoin',
+	'fa-train',
+	'fa-subway',
+	'fa-medium',
+	'fa-yc',
+	'fa-y-combinator',
+	'fa-optin-monster',
+	'fa-opencart',
+	'fa-expeditedssl',
+	'fa-battery-4',
+	'fa-battery',
+	'fa-battery-full',
+	'fa-battery-3',
+	'fa-battery-three-quarters',
+	'fa-battery-2',
+	'fa-battery-half',
+	'fa-battery-1',
+	'fa-battery-quarter',
+	'fa-battery-0',
+	'fa-battery-empty',
+	'fa-mouse-pointer',
+	'fa-i-cursor',
+	'fa-object-group',
+	'fa-object-ungroup',
+	'fa-sticky-note',
+	'fa-sticky-note-o',
+	'fa-cc-jcb',
+	'fa-cc-diners-club',
+	'fa-clone',
+	'fa-balance-scale',
+	'fa-hourglass-o',
+	'fa-hourglass-1',
+	'fa-hourglass-start',
+	'fa-hourglass-2',
+	'fa-hourglass-half',
+	'fa-hourglass-3',
+	'fa-hourglass-end',
+	'fa-hourglass',
+	'fa-hand-grab-o',
+	'fa-hand-rock-o',
+	'fa-hand-stop-o',
+	'fa-hand-paper-o',
+	'fa-hand-scissors-o',
+	'fa-hand-lizard-o',
+	'fa-hand-spock-o',
+	'fa-hand-pointer-o',
+	'fa-hand-peace-o',
+	'fa-trademark',
+	'fa-registered',
+	'fa-creative-commons',
+	'fa-gg',
+	'fa-gg-circle',
+	'fa-tripadvisor',
+	'fa-odnoklassniki',
+	'fa-odnoklassniki-square',
+	'fa-get-pocket',
+	'fa-wikipedia-w',
+	'fa-safari',
+	'fa-chrome',
+	'fa-firefox',
+	'fa-opera',
+	'fa-internet-explorer',
+	'fa-tv',
+	'fa-television',
+	'fa-contao',
+	'fa-500px',
+	'fa-amazon',
+	'fa-calendar-plus-o',
+	'fa-calendar-minus-o',
+	'fa-calendar-times-o',
+	'fa-calendar-check-o',
+	'fa-industry',
+	'fa-map-pin',
+	'fa-map-signs',
+	'fa-map-o',
+	'fa-map',
+	'fa-commenting',
+	'fa-commenting-o',
+	'fa-houzz',
+	'fa-vimeo',
+	'fa-black-tie',
+	'fa-fonticons',
+	'fa-reddit-alien',
+	'fa-edge',
+	'fa-credit-card-alt',
+	'fa-codiepie',
+	'fa-modx',
+	'fa-fort-awesome',
+	'fa-usb',
+	'fa-product-hunt',
+	'fa-mixcloud',
+	'fa-scribd',
+	'fa-pause-circle',
+	'fa-pause-circle-o',
+	'fa-stop-circle',
+	'fa-stop-circle-o',
+	'fa-shopping-bag',
+	'fa-shopping-basket',
+	'fa-hashtag',
+	'fa-bluetooth',
+	'fa-bluetooth-b',
+	'fa-percent',
+	'fa-gitlab',
+	'fa-wpbeginner',
+	'fa-wpforms',
+	'fa-envira',
+	'fa-universal-access',
+	'fa-wheelchair-alt',
+	'fa-question-circle-o',
+	'fa-blind',
+	'fa-audio-description',
+	'fa-volume-control-phone',
+	'fa-braille',
+	'fa-assistive-listening-systems',
+	'fa-asl-interpreting',
+	'fa-american-sign-language-interpreting',
+	'fa-deafness',
+	'fa-hard-of-hearing',
+	'fa-deaf',
+	'fa-glide',
+	'fa-glide-g',
+	'fa-signing',
+	'fa-sign-language',
+	'fa-low-vision',
+	'fa-viadeo',
+	'fa-viadeo-square',
+	'fa-snapchat',
+	'fa-snapchat-ghost',
+	'fa-snapchat-square',
+	'fa-pied-piper',
+	'fa-first-order',
+	'fa-yoast',
+	'fa-themeisle',
+	'fa-google-plus-circle',
+	'fa-google-plus-official',
+	'fa-fa',
+	'fa-font-awesome',
+	'fa-handshake-o',
+	'fa-envelope-open',
+	'fa-envelope-open-o',
+	'fa-linode',
+	'fa-address-book',
+	'fa-address-book-o',
+	'fa-vcard',
+	'fa-address-card',
+	'fa-vcard-o',
+	'fa-address-card-o',
+	'fa-user-circle',
+	'fa-user-circle-o',
+	'fa-user-o',
+	'fa-id-badge',
+	'fa-drivers-license',
+	'fa-id-card',
+	'fa-drivers-license-o',
+	'fa-id-card-o',
+	'fa-quora',
+	'fa-free-code-camp',
+	'fa-telegram',
+	'fa-thermometer-4',
+	'fa-thermometer',
+	'fa-thermometer-full',
+	'fa-thermometer-3',
+	'fa-thermometer-three-quarters',
+	'fa-thermometer-2',
+	'fa-thermometer-half',
+	'fa-thermometer-1',
+	'fa-thermometer-quarter',
+	'fa-thermometer-0',
+	'fa-thermometer-empty',
+	'fa-shower',
+	'fa-bathtub',
+	'fa-s15',
+	'fa-bath',
+	'fa-podcast',
+	'fa-window-maximize',
+	'fa-window-minimize',
+	'fa-window-restore',
+	'fa-times-rectangle',
+	'fa-window-close',
+	'fa-times-rectangle-o',
+	'fa-window-close-o',
+	'fa-bandcamp',
+	'fa-grav',
+	'fa-etsy',
+	'fa-imdb',
+	'fa-ravelry',
+	'fa-eercast',
+	'fa-microchip',
+	'fa-snowflake-o',
+	'fa-superpowers',
+	'fa-wpexplorer',
+	'fa-meetup',
+];

BIN
Web/src/theme/font-awesome/fontawesome-webfont.eot


BIN
Web/src/theme/font-awesome/fontawesome-webfont.svg


BIN
Web/src/theme/font-awesome/fontawesome-webfont.ttf


BIN
Web/src/theme/font-awesome/fontawesome-webfont.woff


BIN
Web/src/theme/font-awesome/fontawesome-webfont.woff2


+ 417 - 0
Web/src/theme/iconfont/font_2298093_rnp72ifj3ba.scss

@@ -0,0 +1,417 @@
+@font-face {
+	font-family: 'iconfont'; /* Project id 2298093 */
+	src: url('/@/theme/iconfont/font_2298093_rnp72ifj3ba.woff2?t=1669683406059') format('woff2'), url('/@/theme/iconfont/font_2298093_rnp72ifj3ba.woff?t=1669683406059') format('woff'),
+		url('/@/theme/iconfont/font_2298093_rnp72ifj3ba.ttf?t=1669683406059') format('truetype');
+}
+
+.iconfont {
+	font-family: 'iconfont' !important;
+	font-size: 16px;
+	font-style: normal;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+
+.icon-quanjushezhi_o:before {
+	content: '\eb80';
+}
+
+.icon-yunshangchuan_o:before {
+	content: '\ebb3';
+}
+
+.icon-yunxiazai_o:before {
+	content: '\ebb4';
+}
+
+.icon-shuaxin:before {
+	content: '\e63e';
+}
+
+.icon-diannao1:before {
+	content: '\e622';
+}
+
+.icon-barcode-qr:before {
+	content: '\e61e';
+}
+
+.icon-zhongduancanshuchaxun:before {
+	content: '\e638';
+}
+
+.icon-shouye_dongtaihui:before {
+	content: '\e606';
+}
+
+.icon-putong:before {
+	content: '\e603';
+}
+
+.icon-dongtai:before {
+	content: '\e659';
+}
+
+.icon-wenducanshu-05:before {
+	content: '\e634';
+}
+
+.icon-zhongduancanshu:before {
+	content: '\e63b';
+}
+
+.icon-tongzhi1:before {
+	content: '\e63a';
+}
+
+.icon-tongzhi2:before {
+	content: '\e649';
+}
+
+.icon-tongzhi3:before {
+	content: '\e648';
+}
+
+.icon-tongzhi4:before {
+	content: '\e60c';
+}
+
+.icon-dianhua:before {
+	content: '\e615';
+}
+
+.icon-xianshimima:before {
+	content: '\e63c';
+}
+
+.icon-yincangmima:before {
+	content: '\e63d';
+}
+
+.icon-shuxing:before {
+	content: '\e67a';
+}
+
+.icon-juxingkaobei:before {
+	content: '\e7a5';
+}
+
+.icon-shuxingtu:before {
+	content: '\e685';
+}
+
+.icon-bolangneng:before {
+	content: '\e745';
+}
+
+.icon-bolangnengshiyanchang:before {
+	content: '\e746';
+}
+
+.icon--chaifenhang:before {
+	content: '\e6d1';
+}
+
+.icon--chaifenlie:before {
+	content: '\e6d0';
+}
+
+.icon-tupianyulan:before {
+	content: '\e67e';
+}
+
+.icon-15tupianyulan:before {
+	content: '\e624';
+}
+
+.icon-728bianjiqi_zitidaxiao:before {
+	content: '\e660';
+}
+
+.icon-ziti:before {
+	content: '\e7b1';
+}
+
+.icon-font-size:before {
+	content: '\eaef';
+}
+
+.icon-tuodong:before {
+	content: '\e6a8';
+}
+
+.icon-zhongyingwen1:before {
+	content: '\e7a3';
+}
+
+.icon-fuhao-yingwen:before {
+	content: '\e714';
+}
+
+.icon-fuhao-zhongwen:before {
+	content: '\e712';
+}
+
+.icon-diqiu:before {
+	content: '\e689';
+}
+
+.icon-xingqiu:before {
+	content: '\e65c';
+}
+
+.icon-diqiu1:before {
+	content: '\e631';
+}
+
+.icon-huanjingxingqiu:before {
+	content: '\e617';
+}
+
+.icon-zidingyibuju:before {
+	content: '\e637';
+}
+
+.icon-dayin:before {
+	content: '\e612';
+}
+
+.icon-step:before {
+	content: '\e601';
+}
+
+.icon-30xuanzhongyuanxingfill:before {
+	content: '\e677';
+}
+
+.icon-shibai:before {
+	content: '\e60b';
+}
+
+.icon-7_round_solid:before {
+	content: '\e64d';
+}
+
+.icon-6_round_solid:before {
+	content: '\e64e';
+}
+
+.icon-9_round_solid:before {
+	content: '\e64f';
+}
+
+.icon-1_round_solid:before {
+	content: '\e650';
+}
+
+.icon-5_round_solid:before {
+	content: '\e651';
+}
+
+.icon-2_round_solid:before {
+	content: '\e654';
+}
+
+.icon-0_round_solid:before {
+	content: '\e655';
+}
+
+.icon-3_round_solid:before {
+	content: '\e656';
+}
+
+.icon-4_round_solid:before {
+	content: '\e657';
+}
+
+.icon-8_round_solid:before {
+	content: '\e658';
+}
+
+.icon-radio-off-full:before {
+	content: '\ea6b';
+}
+
+.icon-tongzhi:before {
+	content: '\e600';
+}
+
+.icon-ditu:before {
+	content: '\e8bc';
+}
+
+.icon-ico:before {
+	content: '\e646';
+}
+
+.icon-chazhaobiaodanliebiao:before {
+	content: '\e76a';
+}
+
+.icon-biaodan:before {
+	content: '\e61d';
+}
+
+.icon-siweidaotu:before {
+	content: '\e614';
+}
+
+.icon-jiliandongxuanzeqi:before {
+	content: '\e616';
+}
+
+.icon-caijian:before {
+	content: '\e611';
+}
+
+.icon-fuwenben:before {
+	content: '\e7e4';
+}
+
+.icon-fuwenbenkuang:before {
+	content: '\e66f';
+}
+
+.icon-shangchuan:before {
+	content: '\e663';
+}
+
+.icon-xuanzeqi:before {
+	content: '\e635';
+}
+
+.icon-fangkuang:before {
+	content: '\e642';
+}
+
+.icon-gouxuan-weixuanzhong-xianxingfangkuang:before {
+	content: '\e77b';
+}
+
+.icon-shidu:before {
+	content: '\e60a';
+}
+
+.icon-yangan:before {
+	content: '\e67d';
+}
+
+.icon-wendu:before {
+	content: '\e686';
+}
+
+.icon-zaosheng:before {
+	content: '\e61c';
+}
+
+.icon-jinridaiban:before {
+	content: '\e60f';
+}
+
+.icon-AIshiyanshi:before {
+	content: '\e609';
+}
+
+.icon-shenqingkaiban:before {
+	content: '\e639';
+}
+
+.icon-zhongyingwenqiehuan:before {
+	content: '\e611';
+}
+
+.icon-zhongyingwen:before {
+	content: '\e605';
+}
+
+.icon-zhongyingzhuanhuan:before {
+	content: '\e6a2';
+}
+
+.icon-zhongyingwenyuyan:before {
+	content: '\e609';
+}
+
+.icon-shuju:before {
+	content: '\e613';
+}
+
+.icon-ico_shuju:before {
+	content: '\e6ff';
+}
+
+.icon-shuju1:before {
+	content: '\e60e';
+}
+
+.icon-fuzhiyemian:before {
+	content: '\e772';
+}
+
+.icon-caozuo-wailian:before {
+	content: '\e711';
+}
+
+.icon-icon-:before {
+	content: '\e620';
+}
+
+.icon-gerenzhongxin:before {
+	content: '\e60d';
+}
+
+.icon-caidan:before {
+	content: '\e652';
+}
+
+.icon-xitongshezhi:before {
+	content: '\e69b';
+}
+
+.icon-neiqianshujuchucun:before {
+	content: '\e62f';
+}
+
+.icon-shouye:before {
+	content: '\e653';
+}
+
+.icon-quanxian:before {
+	content: '\e610';
+}
+
+.icon-zujian:before {
+	content: '\e85e';
+}
+
+.icon-crew_feature:before {
+	content: '\e602';
+}
+
+.icon-gongju:before {
+	content: '\e62d';
+}
+
+.icon-skin:before {
+	content: '\e636';
+}
+
+.icon-shixinyuan:before {
+	content: '\e669';
+}
+
+.icon-webicon318:before {
+	content: '\e6a9';
+}
+
+.icon-dian:before {
+	content: '\e608';
+}
+
+.icon-fullscreen:before {
+	content: '\e623';
+}
+
+.icon-tuichuquanping:before {
+	content: '\e641';
+}

+ 103 - 0
Web/src/theme/iconfont/font_2298093_rnp72ifj3ba.ts

@@ -0,0 +1,103 @@
+export const iconfonntClassList: Array<string> = [
+	'icon-quanjushezhi_o',
+	'icon-yunshangchuan_o',
+	'icon-yunxiazai_o',
+	'icon-shuaxin',
+	'icon-diannao1',
+	'icon-barcode-qr',
+	'icon-zhongduancanshuchaxun',
+	'icon-shouye_dongtaihui',
+	'icon-putong',
+	'icon-dongtai',
+	'icon-wenducanshu-05',
+	'icon-zhongduancanshu',
+	'icon-tongzhi1',
+	'icon-tongzhi2',
+	'icon-tongzhi3',
+	'icon-tongzhi4',
+	'icon-dianhua',
+	'icon-xianshimima',
+	'icon-yincangmima',
+	'icon-shuxing',
+	'icon-juxingkaobei',
+	'icon-shuxingtu',
+	'icon-bolangneng',
+	'icon-bolangnengshiyanchang',
+	'icon--chaifenhang',
+	'icon--chaifenlie',
+	'icon-tupianyulan',
+	'icon-15tupianyulan',
+	'icon-728bianjiqi_zitidaxiao',
+	'icon-ziti',
+	'icon-font-size',
+	'icon-tuodong',
+	'icon-zhongyingwen1',
+	'icon-fuhao-yingwen',
+	'icon-fuhao-zhongwen',
+	'icon-diqiu',
+	'icon-xingqiu',
+	'icon-diqiu1',
+	'icon-huanjingxingqiu',
+	'icon-zidingyibuju',
+	'icon-dayin',
+	'icon-step',
+	'icon-30xuanzhongyuanxingfill',
+	'icon-shibai',
+	'icon-7_round_solid',
+	'icon-6_round_solid',
+	'icon-9_round_solid',
+	'icon-1_round_solid',
+	'icon-5_round_solid',
+	'icon-2_round_solid',
+	'icon-0_round_solid',
+	'icon-3_round_solid',
+	'icon-4_round_solid',
+	'icon-8_round_solid',
+	'icon-radio-off-full',
+	'icon-tongzhi',
+	'icon-ditu',
+	'icon-ico',
+	'icon-chazhaobiaodanliebiao',
+	'icon-biaodan',
+	'icon-siweidaotu',
+	'icon-jiliandongxuanzeqi',
+	'icon-caijian',
+	'icon-fuwenben',
+	'icon-fuwenbenkuang',
+	'icon-shangchuan',
+	'icon-xuanzeqi',
+	'icon-fangkuang',
+	'icon-gouxuan-weixuanzhong-xianxingfangkuang',
+	'icon-shidu',
+	'icon-yangan',
+	'icon-wendu',
+	'icon-zaosheng',
+	'icon-jinridaiban',
+	'icon-AIshiyanshi',
+	'icon-shenqingkaiban',
+	'icon-zhongyingwenqiehuan',
+	'icon-zhongyingwen',
+	'icon-zhongyingzhuanhuan',
+	'icon-zhongyingwenyuyan',
+	'icon-shuju',
+	'icon-ico_shuju',
+	'icon-shuju1',
+	'icon-fuzhiyemian',
+	'icon-caozuo-wailian',
+	'icon-icon-',
+	'icon-gerenzhongxin',
+	'icon-caidan',
+	'icon-xitongshezhi',
+	'icon-neiqianshujuchucun',
+	'icon-shouye',
+	'icon-quanxian',
+	'icon-zujian',
+	'icon-crew_feature',
+	'icon-gongju',
+	'icon-skin',
+	'icon-shixinyuan',
+	'icon-webicon318',
+	'icon-dian',
+	'icon-fullscreen',
+	'icon-tuichuquanping',
+];

BIN
Web/src/theme/iconfont/font_2298093_rnp72ifj3ba.ttf


BIN
Web/src/theme/iconfont/font_2298093_rnp72ifj3ba.woff


BIN
Web/src/theme/iconfont/font_2298093_rnp72ifj3ba.woff2


+ 2 - 0
Web/src/theme/index.scss

@@ -5,3 +5,5 @@
 @import './media/media.scss';
 @import './waves.scss';
 @import './dark.scss';
+@import './iconfont/font_2298093_rnp72ifj3ba.scss';
+@import './font-awesome/font-awesome.scss';

+ 20 - 11
Web/src/utils/getStyleSheets.ts

@@ -1,5 +1,8 @@
 import { nextTick } from 'vue';
 import * as svg from '@element-plus/icons-vue';
+// import 本地样式类名数组
+import { iconfonntClassList } from '/@/theme/iconfont/font_2298093_rnp72ifj3ba.ts';
+import { fontAwesomeClassList } from '/@/theme/font-awesome/font-awesome.ts';
 
 // 获取阿里字体图标
 const getAlicdnIconfont = () => {
@@ -16,12 +19,17 @@ const getAlicdnIconfont = () => {
 			for (let i = 0; i < sheetsList.length; i++) {
 				for (let j = 0; j < sheetsList[i].cssRules.length; j++) {
 					if (sheetsList[i].cssRules[j].selectorText && sheetsList[i].cssRules[j].selectorText.indexOf('.icon-') > -1) {
-						sheetsIconList.push(
-							`${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}`
-						);
+						sheetsIconList.push(`${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}`);
 					}
 				}
 			}
+			// vue-next-admin 原代码之外增加的代码,从本地读取阿里字体
+			if (sheetsIconList.length == 0) {
+				for (let i = 0; i < iconfonntClassList.length; i++) {
+					sheetsIconList.push(iconfonntClassList[i]);
+				}
+			}
+			// vue-next-admin 原代码之外增加的代码
 			if (sheetsIconList.length > 0) resolve(sheetsIconList);
 			else reject('未获取到值,请刷新重试');
 		});
@@ -57,19 +65,20 @@ const getAwesomeIconfont = () => {
 			}
 			for (let i = 0; i < sheetsList.length; i++) {
 				for (let j = 0; j < sheetsList[i].cssRules.length; j++) {
-					if (
-						sheetsList[i].cssRules[j].selectorText &&
-						sheetsList[i].cssRules[j].selectorText.indexOf('.fa-') === 0 &&
-						sheetsList[i].cssRules[j].selectorText.indexOf(',') === -1
-					) {
+					if (sheetsList[i].cssRules[j].selectorText && sheetsList[i].cssRules[j].selectorText.indexOf('.fa-') === 0 && sheetsList[i].cssRules[j].selectorText.indexOf(',') === -1) {
 						if (/::before/.test(sheetsList[i].cssRules[j].selectorText)) {
-							sheetsIconList.push(
-								`${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}`
-							);
+							sheetsIconList.push(`${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}`);
 						}
 					}
 				}
 			}
+			// vue-next-admin 原代码之外增加的代码,从本地读取阿里字体
+			if (sheetsIconList.length == 0) {
+				for (let i = 0; i < fontAwesomeClassList.length; i++) {
+					sheetsIconList.push(fontAwesomeClassList[i]);
+				}
+			}
+			// vue-next-admin 原代码之外增加的代码
 			if (sheetsIconList.length > 0) resolve(sheetsIconList.reverse());
 			else reject('未获取到值,请刷新重试');
 		});

+ 3 - 1
Web/src/utils/other.ts

@@ -53,8 +53,10 @@ export function useTitle() {
 export function setTagsViewNameI18n(item: any) {
 	let tagsViewName: string = '';
 	const { query, params, meta } = item;
+	//修复tagsViewName匹配到其他含下列单词的路由
+	const pattern = /^\{("(zh-cn|en|zh-tw)":"[^,]+",?){1,3}}$/;
 	if (query?.tagsViewName || params?.tagsViewName) {
-		if (/\/zh-cn|en|zh-tw\//.test(query?.tagsViewName) || /\/zh-cn|en|zh-tw\//.test(params?.tagsViewName)) {
+		if (pattern.test(query?.tagsViewName) || pattern.test(params?.tagsViewName)) {
 			// 国际化
 			const urlTagsParams = (query?.tagsViewName && JSON.parse(query?.tagsViewName)) || (params?.tagsViewName && JSON.parse(params?.tagsViewName));
 			tagsViewName = urlTagsParams[i18n.global.locale.value];

+ 3 - 2
Web/src/utils/setIconfont.ts

@@ -1,7 +1,8 @@
 // 字体图标 url
 const cssCdnUrlList: Array<string> = [
-	'//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css',
-	'//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
+	// 调整为从本地引入,注释下面的 url
+	// '//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css',
+	// '//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
 ];
 // 第三方 js url
 const jsCdnUrlList: Array<string> = [];

+ 19 - 8
Web/src/views/system/user/component/userCenter.vue

@@ -42,6 +42,7 @@
 						:show-file-list="false"
 						:auto-upload="false"
 						:on-change="uploadSignFile"
+						:on-exceed="uploadSignFileExceed"
 						style="display: inline-block; margin-left: 12px; position: absolute"
 					>
 						<el-button icon="ele-UploadFilled" v-auth="'sysFile:uploadSignature'">上传手写签名</el-button>
@@ -161,11 +162,13 @@
 <script lang="ts" setup name="sysUserCenter">
 import { onMounted, onUnmounted, watch, reactive, ref } from 'vue';
 import { storeToRefs } from 'pinia';
-import { ElMessageBox, UploadInstance } from 'element-plus';
+import { ElForm, ElMessageBox, genFileId } from 'element-plus';
+import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus';
 import { useUserInfo } from '/@/stores/userInfo';
 import { base64ToFile } from '/@/utils/base64Conver';
 import OrgTree from '/@/views/system/user/component/orgTree.vue';
 import CropperDialog from '/@/components/cropper/index.vue';
+import VueGridLayout from 'vue-grid-layout';
 import mittBus from '/@/utils/mitt';
 
 import { clearAccessTokens, getAPI } from '/@/utils/axios-utils';
@@ -176,10 +179,10 @@ const stores = useUserInfo();
 const { userInfos } = storeToRefs(stores);
 const uploadSignRef = ref<UploadInstance>();
 const uploadAvatarRef = ref<UploadInstance>();
-const signaturePadRef = ref();
-const ruleFormBaseRef = ref();
-const ruleFormPasswordRef = ref();
-const cropperDialogRef = ref();
+const signaturePadRef = ref<InstanceType<typeof VueGridLayout>>();
+const ruleFormBaseRef = ref<InstanceType<typeof ElForm>>();
+const ruleFormPasswordRef = ref<InstanceType<typeof ElForm>>();
+const cropperDialogRef = ref<InstanceType<typeof CropperDialog>>();
 const state = reactive({
 	loading: false,
 	avatarLoading: false,
@@ -267,7 +270,7 @@ const uploadAvatarFile = async (file: any) => {
 
 // 修改个人信息
 const submitUserBase = () => {
-	ruleFormBaseRef.value.validate(async (valid: boolean) => {
+	ruleFormBaseRef.value?.validate(async (valid: boolean) => {
 		if (!valid) return;
 		ElMessageBox.confirm('确定修改个人基础信息?', '提示', {
 			confirmButtonText: '确定',
@@ -297,7 +300,7 @@ const resetPassword = () => {
 
 // 密码提交
 const submitPassword = () => {
-	ruleFormPasswordRef.value.validate(async (valid: boolean) => {
+	ruleFormPasswordRef.value?.validate(async (valid: boolean) => {
 		if (!valid) return;
 		await getAPI(SysUserApi).apiSysUserChangePwdPost(state.ruleFormPassword);
 		// 退出系统
@@ -314,7 +317,7 @@ const submitPassword = () => {
 // 打开裁剪弹窗
 const openCropperDialog = () => {
 	state.cropperTitle = '更换头像';
-	cropperDialogRef.value.openDialog(userInfos.value.avatar);
+	cropperDialogRef.value?.openDialog(userInfos.value.avatar);
 };
 
 // 鼠标进入和离开头像时
@@ -326,6 +329,14 @@ const mouseLeaveAvatar = () => {
 	state.avatarLoading = false;
 };
 
+// 上传签名超出数量限制时执行
+const uploadSignFileExceed: UploadProps['onExceed'] = (files) => {
+	uploadSignRef.value!.clearFiles();
+	const file = files[0] as UploadRawFile;
+	file.uid = genFileId();
+	uploadSignRef.value!.handleStart(file);
+};
+
 // 导出对象
 defineExpose({ uploadAvatarFile, handleChangeSignFile });
 </script>

+ 1 - 1
Web/vite.config.ts

@@ -25,7 +25,7 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
 		server: {
 			host: '0.0.0.0',
 			port: env.VITE_PORT as unknown as number,
-			open: env.VITE_OPEN,
+			open: env.VITE_OPEN === 'true',
 			hmr: true,
 			proxy: {
 				'/gitee': {