diff --git a/fltb/.gitignore b/fltb/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/fltb/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/fltb/.vscode/extensions.json b/fltb/.vscode/extensions.json
new file mode 100644
index 0000000..c0a6e5a
--- /dev/null
+++ b/fltb/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
+}
diff --git a/fltb/README.md b/fltb/README.md
new file mode 100644
index 0000000..d6c7df1
--- /dev/null
+++ b/fltb/README.md
@@ -0,0 +1,28 @@
+# User Management System by FLTB
+
+Vite + Vue 3 + NaiveUI + Bootstrap + Particles + Animate.css
+
+``` bash
+fltb@fltb-at-home:~$ neofetch
+ _,met$$$$$gg. fltb@fltb-at-home
+ ,g$$$$$$$$$$$$$$$P. -------------------
+ ,g$$P" """Y$$.". OS: Debian GNU/Linux 12 (bookworm) x86_64
+ ,$$P' `$$$. Host: MS-7B89 1.0
+',$$P ,ggs. `$$b: Kernel: 6.1.0-12-amd64
+`d$$' ,$P"' . $$$ Uptime: 6 hours, 44 mins
+ $$P d$' , $$P Packages: 3145 (dpkg), 8 (flatpak)
+ $$: $$. - ,d$$' Shell: bash 5.2.15
+ $$; Y$b._ _,d$P' Resolution: 1920x1080
+ Y$$. `.`"Y$$$$P"' DE: Plasma 5.27.5
+ `$$b "-.__ WM: KWin
+ `Y$$ Theme: [Plasma], Breeze [GTK2/3]
+ `Y$$. Icons: [Plasma], breeze [GTK2/3]
+ `$$b. Terminal: konsole
+ `Y$$b. CPU: AMD Ryzen 5 2600 (12) @ 3.400GHz
+ `"Y$b._ GPU: NVIDIA GeForce GTX 1650 SUPER
+ `""" Memory: 10495MiB / 15934MiB
+fltb@fltb-at-home:~$ node -v
+v18.13.0
+fltb@fltb-at-home:~$ npm -v
+9.2.0
+```
\ No newline at end of file
diff --git a/fltb/index.html b/fltb/index.html
new file mode 100644
index 0000000..ba20953
--- /dev/null
+++ b/fltb/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ User Management System by FLTB
+
+
+
+
+
+
diff --git a/fltb/package-lock.json b/fltb/package-lock.json
new file mode 100644
index 0000000..3b413c2
--- /dev/null
+++ b/fltb/package-lock.json
@@ -0,0 +1,1495 @@
+{
+ "name": "hdu-assistant-interview-round-2",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "hdu-assistant-interview-round-2",
+ "version": "0.0.0",
+ "dependencies": {
+ "animate.css": "^4.1.1",
+ "bootstrap": "^5.3.2",
+ "tsparticles": "^2.12.0",
+ "tsparticles-slim": "^2.12.0",
+ "vue": "^3.3.4",
+ "vue-router": "^4.2.5",
+ "vue3-particles": "^2.12.0"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^4.2.3",
+ "naive-ui": "^2.34.4",
+ "vite": "^4.4.5"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.22.16",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz",
+ "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz",
+ "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==",
+ "dev": true,
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@css-render/plugin-bem": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/@css-render/plugin-bem/-/plugin-bem-0.15.12.tgz",
+ "integrity": "sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==",
+ "dev": true,
+ "peerDependencies": {
+ "css-render": "~0.15.12"
+ }
+ },
+ "node_modules/@css-render/vue3-ssr": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/@css-render/vue3-ssr/-/vue3-ssr-0.15.12.tgz",
+ "integrity": "sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==",
+ "dev": true,
+ "peerDependencies": {
+ "vue": "^3.0.11"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
+ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==",
+ "dev": true
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
+ "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
+ "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
+ "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
+ "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
+ "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
+ "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
+ "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
+ "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
+ "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
+ "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
+ "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
+ "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
+ "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
+ "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
+ "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
+ "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
+ "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
+ "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
+ "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
+ "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+ "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
+ "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@juggle/resize-observer": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
+ "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==",
+ "dev": true
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "peer": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@types/katex": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.14.0.tgz",
+ "integrity": "sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA==",
+ "dev": true
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.14.199",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
+ "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==",
+ "dev": true
+ },
+ "node_modules/@types/lodash-es": {
+ "version": "4.17.9",
+ "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.9.tgz",
+ "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz",
+ "integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==",
+ "dev": true,
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+ "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+ "dependencies": {
+ "@babel/parser": "^7.21.3",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+ "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+ "dependencies": {
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+ "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+ "dependencies": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/reactivity-transform": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0",
+ "postcss": "^8.1.10",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+ "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
+ "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+ "dependencies": {
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+ "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+ "dependencies": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+ "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+ "dependencies": {
+ "@vue/reactivity": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+ "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+ "dependencies": {
+ "@vue/runtime-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "csstype": "^3.1.1"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+ "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/shared": "3.3.4"
+ },
+ "peerDependencies": {
+ "vue": "3.3.4"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
+ "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+ },
+ "node_modules/animate.css": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz",
+ "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ=="
+ },
+ "node_modules/async-validator": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+ "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==",
+ "dev": true
+ },
+ "node_modules/bootstrap": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz",
+ "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/twbs"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/bootstrap"
+ }
+ ],
+ "peerDependencies": {
+ "@popperjs/core": "^2.11.8"
+ }
+ },
+ "node_modules/css-render": {
+ "version": "0.15.12",
+ "resolved": "https://registry.npmjs.org/css-render/-/css-render-0.15.12.tgz",
+ "integrity": "sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==",
+ "dev": true,
+ "dependencies": {
+ "@emotion/hash": "~0.8.0",
+ "csstype": "~3.0.5"
+ }
+ },
+ "node_modules/css-render/node_modules/csstype": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz",
+ "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==",
+ "dev": true
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ },
+ "node_modules/date-fns": {
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=0.11"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/date-fns"
+ }
+ },
+ "node_modules/date-fns-tz": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz",
+ "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==",
+ "dev": true,
+ "peerDependencies": {
+ "date-fns": ">=2.0.0"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
+ "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.18.20",
+ "@esbuild/android-arm64": "0.18.20",
+ "@esbuild/android-x64": "0.18.20",
+ "@esbuild/darwin-arm64": "0.18.20",
+ "@esbuild/darwin-x64": "0.18.20",
+ "@esbuild/freebsd-arm64": "0.18.20",
+ "@esbuild/freebsd-x64": "0.18.20",
+ "@esbuild/linux-arm": "0.18.20",
+ "@esbuild/linux-arm64": "0.18.20",
+ "@esbuild/linux-ia32": "0.18.20",
+ "@esbuild/linux-loong64": "0.18.20",
+ "@esbuild/linux-mips64el": "0.18.20",
+ "@esbuild/linux-ppc64": "0.18.20",
+ "@esbuild/linux-riscv64": "0.18.20",
+ "@esbuild/linux-s390x": "0.18.20",
+ "@esbuild/linux-x64": "0.18.20",
+ "@esbuild/netbsd-x64": "0.18.20",
+ "@esbuild/openbsd-x64": "0.18.20",
+ "@esbuild/sunos-x64": "0.18.20",
+ "@esbuild/win32-arm64": "0.18.20",
+ "@esbuild/win32-ia32": "0.18.20",
+ "@esbuild/win32-x64": "0.18.20"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/evtd": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/evtd/-/evtd-0.2.4.tgz",
+ "integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/highlight.js": {
+ "version": "11.8.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz",
+ "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+ "dev": true
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.3",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz",
+ "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/naive-ui": {
+ "version": "2.34.4",
+ "resolved": "https://registry.npmjs.org/naive-ui/-/naive-ui-2.34.4.tgz",
+ "integrity": "sha512-aPG8PDfhSzIzn/jSC9y3Jb3Pe2wHJ7F0cFV1EWlbImSrZECeUmoc+fIcOSWbizoztkKfaUAeKwYdMl09MKkj1g==",
+ "dev": true,
+ "dependencies": {
+ "@css-render/plugin-bem": "^0.15.10",
+ "@css-render/vue3-ssr": "^0.15.10",
+ "@types/katex": "^0.14.0",
+ "@types/lodash": "^4.14.181",
+ "@types/lodash-es": "^4.17.6",
+ "async-validator": "^4.0.7",
+ "css-render": "^0.15.10",
+ "date-fns": "^2.28.0",
+ "date-fns-tz": "^1.3.3",
+ "evtd": "^0.2.4",
+ "highlight.js": "^11.5.0",
+ "lodash": "^4.17.21",
+ "lodash-es": "^4.17.21",
+ "seemly": "^0.3.6",
+ "treemate": "^0.3.11",
+ "vdirs": "^0.1.8",
+ "vooks": "^0.2.12",
+ "vueuc": "^0.4.51"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/postcss": {
+ "version": "8.4.30",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz",
+ "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
+ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
+ "dev": true
+ },
+ "node_modules/rollup": {
+ "version": "3.29.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.2.tgz",
+ "integrity": "sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/seemly": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/seemly/-/seemly-0.3.6.tgz",
+ "integrity": "sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==",
+ "dev": true
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/treemate": {
+ "version": "0.3.11",
+ "resolved": "https://registry.npmjs.org/treemate/-/treemate-0.3.11.tgz",
+ "integrity": "sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==",
+ "dev": true
+ },
+ "node_modules/tsparticles": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles/-/tsparticles-2.12.0.tgz",
+ "integrity": "sha512-aw77llkaEhcKYUHuRlggA6SB1Dpa814/nrStp9USGiDo5QwE1Ckq30QAgdXU6GRvnblUFsiO750ZuLQs5Y0tVw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/matteobruni"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/tsparticles"
+ },
+ {
+ "type": "buymeacoffee",
+ "url": "https://www.buymeacoffee.com/matteobruni"
+ }
+ ],
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0",
+ "tsparticles-interaction-external-trail": "^2.12.0",
+ "tsparticles-plugin-absorbers": "^2.12.0",
+ "tsparticles-plugin-emitters": "^2.12.0",
+ "tsparticles-slim": "^2.12.0",
+ "tsparticles-updater-destroy": "^2.12.0",
+ "tsparticles-updater-roll": "^2.12.0",
+ "tsparticles-updater-tilt": "^2.12.0",
+ "tsparticles-updater-twinkle": "^2.12.0",
+ "tsparticles-updater-wobble": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-basic": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-basic/-/tsparticles-basic-2.12.0.tgz",
+ "integrity": "sha512-pN6FBpL0UsIUXjYbiui5+IVsbIItbQGOlwyGV55g6IYJBgdTNXgFX0HRYZGE9ZZ9psEXqzqwLM37zvWnb5AG9g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/matteobruni"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/tsparticles"
+ },
+ {
+ "type": "buymeacoffee",
+ "url": "https://www.buymeacoffee.com/matteobruni"
+ }
+ ],
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0",
+ "tsparticles-move-base": "^2.12.0",
+ "tsparticles-shape-circle": "^2.12.0",
+ "tsparticles-updater-color": "^2.12.0",
+ "tsparticles-updater-opacity": "^2.12.0",
+ "tsparticles-updater-out-modes": "^2.12.0",
+ "tsparticles-updater-size": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-engine": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-engine/-/tsparticles-engine-2.12.0.tgz",
+ "integrity": "sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/matteobruni"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/tsparticles"
+ },
+ {
+ "type": "buymeacoffee",
+ "url": "https://www.buymeacoffee.com/matteobruni"
+ }
+ ],
+ "hasInstallScript": true
+ },
+ "node_modules/tsparticles-interaction-external-attract": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-attract/-/tsparticles-interaction-external-attract-2.12.0.tgz",
+ "integrity": "sha512-0roC6D1QkFqMVomcMlTaBrNVjVOpyNzxIUsjMfshk2wUZDAvTNTuWQdUpmsLS4EeSTDN3rzlGNnIuuUQqyBU5w==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-bounce": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-bounce/-/tsparticles-interaction-external-bounce-2.12.0.tgz",
+ "integrity": "sha512-MMcqKLnQMJ30hubORtdq+4QMldQ3+gJu0bBYsQr9BsThsh8/V0xHc1iokZobqHYVP5tV77mbFBD8Z7iSCf0TMQ==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-bubble": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-bubble/-/tsparticles-interaction-external-bubble-2.12.0.tgz",
+ "integrity": "sha512-5kImCSCZlLNccXOHPIi2Yn+rQWTX3sEa/xCHwXW19uHxtILVJlnAweayc8+Zgmb7mo0DscBtWVFXHPxrVPFDUA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-connect": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-connect/-/tsparticles-interaction-external-connect-2.12.0.tgz",
+ "integrity": "sha512-ymzmFPXz6AaA1LAOL5Ihuy7YSQEW8MzuSJzbd0ES13U8XjiU3HlFqlH6WGT1KvXNw6WYoqrZt0T3fKxBW3/C3A==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-grab": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-grab/-/tsparticles-interaction-external-grab-2.12.0.tgz",
+ "integrity": "sha512-iQF/A947hSfDNqAjr49PRjyQaeRkYgTYpfNmAf+EfME8RsbapeP/BSyF6mTy0UAFC0hK2A2Hwgw72eT78yhXeQ==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-pause": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-pause/-/tsparticles-interaction-external-pause-2.12.0.tgz",
+ "integrity": "sha512-4SUikNpsFROHnRqniL+uX2E388YTtfRWqqqZxRhY0BrijH4z04Aii3YqaGhJxfrwDKkTQlIoM2GbFT552QZWjw==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-push": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-push/-/tsparticles-interaction-external-push-2.12.0.tgz",
+ "integrity": "sha512-kqs3V0dgDKgMoeqbdg+cKH2F+DTrvfCMrPF1MCCUpBCqBiH+TRQpJNNC86EZYHfNUeeLuIM3ttWwIkk2hllR/Q==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-remove": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-remove/-/tsparticles-interaction-external-remove-2.12.0.tgz",
+ "integrity": "sha512-2eNIrv4m1WB2VfSVj46V2L/J9hNEZnMgFc+A+qmy66C8KzDN1G8aJUAf1inW8JVc0lmo5+WKhzex4X0ZSMghBg==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-repulse": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-repulse/-/tsparticles-interaction-external-repulse-2.12.0.tgz",
+ "integrity": "sha512-rSzdnmgljeBCj5FPp4AtGxOG9TmTsK3AjQW0vlyd1aG2O5kSqFjR+FuT7rfdSk9LEJGH5SjPFE6cwbuy51uEWA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-slow": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-slow/-/tsparticles-interaction-external-slow-2.12.0.tgz",
+ "integrity": "sha512-2IKdMC3om7DttqyroMtO//xNdF0NvJL/Lx7LDo08VpfTgJJozxU+JAUT8XVT7urxhaDzbxSSIROc79epESROtA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-external-trail": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-trail/-/tsparticles-interaction-external-trail-2.12.0.tgz",
+ "integrity": "sha512-LKSapU5sPTaZqYx+y5VJClj0prlV7bswplSFQaIW1raXkvsk45qir2AVcpP5JUhZSFSG+SwsHr+qCgXhNeN1KA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-particles-attract": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-attract/-/tsparticles-interaction-particles-attract-2.12.0.tgz",
+ "integrity": "sha512-Hl8qwuwF9aLq3FOkAW+Zomu7Gb8IKs6Y3tFQUQScDmrrSCaeRt2EGklAiwgxwgntmqzL7hbMWNx06CHHcUQKdQ==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-particles-collisions": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-collisions/-/tsparticles-interaction-particles-collisions-2.12.0.tgz",
+ "integrity": "sha512-Se9nPWlyPxdsnHgR6ap4YUImAu3W5MeGKJaQMiQpm1vW8lSMOUejI1n1ioIaQth9weKGKnD9rvcNn76sFlzGBA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-interaction-particles-links": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-links/-/tsparticles-interaction-particles-links-2.12.0.tgz",
+ "integrity": "sha512-e7I8gRs4rmKfcsHONXMkJnymRWpxHmeaJIo4g2NaDRjIgeb2AcJSWKWZvrsoLnm7zvaf/cMQlbN6vQwCixYq3A==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-move-base": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-move-base/-/tsparticles-move-base-2.12.0.tgz",
+ "integrity": "sha512-oSogCDougIImq+iRtIFJD0YFArlorSi8IW3HD2gO3USkH+aNn3ZqZNTqp321uB08K34HpS263DTbhLHa/D6BWw==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-move-parallax": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-move-parallax/-/tsparticles-move-parallax-2.12.0.tgz",
+ "integrity": "sha512-58CYXaX8Ih5rNtYhpnH0YwU4Ks7gVZMREGUJtmjhuYN+OFr9FVdF3oDIJ9N6gY5a5AnAKz8f5j5qpucoPRcYrQ==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-particles.js": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-particles.js/-/tsparticles-particles.js-2.12.0.tgz",
+ "integrity": "sha512-LyOuvYdhbUScmA4iDgV3LxA0HzY1DnOwQUy3NrPYO393S2YwdDjdwMod6Btq7EBUjg9FVIh+sZRizgV5elV2dg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/matteobruni"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/tsparticles"
+ },
+ {
+ "type": "buymeacoffee",
+ "url": "https://www.buymeacoffee.com/matteobruni"
+ }
+ ],
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-plugin-absorbers": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-plugin-absorbers/-/tsparticles-plugin-absorbers-2.12.0.tgz",
+ "integrity": "sha512-2CkPreaXHrE5VzFlxUKLeRB5t66ff+3jwLJoDFgQcp+R4HOEITo0bBZv2DagGP0QZdYN4grpnQzRBVdB4d1rWA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-plugin-easing-quad": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-plugin-easing-quad/-/tsparticles-plugin-easing-quad-2.12.0.tgz",
+ "integrity": "sha512-2mNqez5pydDewMIUWaUhY5cNQ80IUOYiujwG6qx9spTq1D6EEPLbRNAEL8/ecPdn2j1Um3iWSx6lo340rPkv4Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/matteobruni"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/tsparticles"
+ },
+ {
+ "type": "buymeacoffee",
+ "url": "https://www.buymeacoffee.com/matteobruni"
+ }
+ ],
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-plugin-emitters": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-plugin-emitters/-/tsparticles-plugin-emitters-2.12.0.tgz",
+ "integrity": "sha512-fbskYnaXWXivBh9KFReVCfqHdhbNQSK2T+fq2qcGEWpwtDdgujcaS1k2Q/xjZnWNMfVesik4IrqspcL51gNdSA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-shape-circle": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-shape-circle/-/tsparticles-shape-circle-2.12.0.tgz",
+ "integrity": "sha512-L6OngbAlbadG7b783x16ns3+SZ7i0SSB66M8xGa5/k+YcY7zm8zG0uPt1Hd+xQDR2aNA3RngVM10O23/Lwk65Q==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-shape-image": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-shape-image/-/tsparticles-shape-image-2.12.0.tgz",
+ "integrity": "sha512-iCkSdUVa40DxhkkYjYuYHr9MJGVw+QnQuN5UC+e/yBgJQY+1tQL8UH0+YU/h0GHTzh5Sm+y+g51gOFxHt1dj7Q==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-shape-line": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-shape-line/-/tsparticles-shape-line-2.12.0.tgz",
+ "integrity": "sha512-RcpKmmpKlk+R8mM5wA2v64Lv1jvXtU4SrBDv3vbdRodKbKaWGGzymzav1Q0hYyDyUZgplEK/a5ZwrfrOwmgYGA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-shape-polygon": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-shape-polygon/-/tsparticles-shape-polygon-2.12.0.tgz",
+ "integrity": "sha512-5YEy7HVMt1Obxd/jnlsjajchAlYMr9eRZWN+lSjcFSH6Ibra7h59YuJVnwxOxAobpijGxsNiBX0PuGQnB47pmA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-shape-square": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-shape-square/-/tsparticles-shape-square-2.12.0.tgz",
+ "integrity": "sha512-33vfajHqmlODKaUzyPI/aVhnAOT09V7nfEPNl8DD0cfiNikEuPkbFqgJezJuE55ebtVo7BZPDA9o7GYbWxQNuw==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-shape-star": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-shape-star/-/tsparticles-shape-star-2.12.0.tgz",
+ "integrity": "sha512-4sfG/BBqm2qBnPLASl2L5aBfCx86cmZLXeh49Un+TIR1F5Qh4XUFsahgVOG0vkZQa+rOsZPEH04xY5feWmj90g==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-shape-text": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-shape-text/-/tsparticles-shape-text-2.12.0.tgz",
+ "integrity": "sha512-v2/FCA+hyTbDqp2ymFOe97h/NFb2eezECMrdirHWew3E3qlvj9S/xBibjbpZva2gnXcasBwxn0+LxKbgGdP0rA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-slim": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-slim/-/tsparticles-slim-2.12.0.tgz",
+ "integrity": "sha512-27w9aGAAAPKHvP4LHzWFpyqu7wKyulayyaZ/L6Tuuejy4KP4BBEB4rY5GG91yvAPsLtr6rwWAn3yS+uxnBDpkA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/matteobruni"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/tsparticles"
+ },
+ {
+ "type": "buymeacoffee",
+ "url": "https://www.buymeacoffee.com/matteobruni"
+ }
+ ],
+ "dependencies": {
+ "tsparticles-basic": "^2.12.0",
+ "tsparticles-engine": "^2.12.0",
+ "tsparticles-interaction-external-attract": "^2.12.0",
+ "tsparticles-interaction-external-bounce": "^2.12.0",
+ "tsparticles-interaction-external-bubble": "^2.12.0",
+ "tsparticles-interaction-external-connect": "^2.12.0",
+ "tsparticles-interaction-external-grab": "^2.12.0",
+ "tsparticles-interaction-external-pause": "^2.12.0",
+ "tsparticles-interaction-external-push": "^2.12.0",
+ "tsparticles-interaction-external-remove": "^2.12.0",
+ "tsparticles-interaction-external-repulse": "^2.12.0",
+ "tsparticles-interaction-external-slow": "^2.12.0",
+ "tsparticles-interaction-particles-attract": "^2.12.0",
+ "tsparticles-interaction-particles-collisions": "^2.12.0",
+ "tsparticles-interaction-particles-links": "^2.12.0",
+ "tsparticles-move-base": "^2.12.0",
+ "tsparticles-move-parallax": "^2.12.0",
+ "tsparticles-particles.js": "^2.12.0",
+ "tsparticles-plugin-easing-quad": "^2.12.0",
+ "tsparticles-shape-circle": "^2.12.0",
+ "tsparticles-shape-image": "^2.12.0",
+ "tsparticles-shape-line": "^2.12.0",
+ "tsparticles-shape-polygon": "^2.12.0",
+ "tsparticles-shape-square": "^2.12.0",
+ "tsparticles-shape-star": "^2.12.0",
+ "tsparticles-shape-text": "^2.12.0",
+ "tsparticles-updater-color": "^2.12.0",
+ "tsparticles-updater-life": "^2.12.0",
+ "tsparticles-updater-opacity": "^2.12.0",
+ "tsparticles-updater-out-modes": "^2.12.0",
+ "tsparticles-updater-rotate": "^2.12.0",
+ "tsparticles-updater-size": "^2.12.0",
+ "tsparticles-updater-stroke-color": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-color": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-color/-/tsparticles-updater-color-2.12.0.tgz",
+ "integrity": "sha512-KcG3a8zd0f8CTiOrylXGChBrjhKcchvDJjx9sp5qpwQK61JlNojNCU35xoaSk2eEHeOvFjh0o3CXWUmYPUcBTQ==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-destroy": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-destroy/-/tsparticles-updater-destroy-2.12.0.tgz",
+ "integrity": "sha512-6NN3dJhxACvzbIGL4dADbYQSZJmdHfwjujj1uvnxdMbb2x8C/AZzGxiN33smo4jkrZ5VLEWZWCJPJ8aOKjQ2Sg==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-life": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-life/-/tsparticles-updater-life-2.12.0.tgz",
+ "integrity": "sha512-J7RWGHAZkowBHpcLpmjKsxwnZZJ94oGEL2w+wvW1/+ZLmAiFFF6UgU0rHMC5CbHJT4IPx9cbkYMEHsBkcRJ0Bw==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-opacity": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-opacity/-/tsparticles-updater-opacity-2.12.0.tgz",
+ "integrity": "sha512-YUjMsgHdaYi4HN89LLogboYcCi1o9VGo21upoqxq19yRy0hRCtx2NhH22iHF/i5WrX6jqshN0iuiiNefC53CsA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-out-modes": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-out-modes/-/tsparticles-updater-out-modes-2.12.0.tgz",
+ "integrity": "sha512-owBp4Gk0JNlSrmp12XVEeBroDhLZU+Uq3szbWlHGSfcR88W4c/0bt0FiH5bHUqORIkw+m8O56hCjbqwj69kpOQ==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-roll": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-roll/-/tsparticles-updater-roll-2.12.0.tgz",
+ "integrity": "sha512-dxoxY5jP4C9x15BxlUv5/Q8OjUPBiE09ToXRyBxea9aEJ7/iMw6odvi1HuT0H1vTIfV7o1MYawjeCbMycvODKQ==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-rotate": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-rotate/-/tsparticles-updater-rotate-2.12.0.tgz",
+ "integrity": "sha512-waOFlGFmEZOzsQg4C4VSejNVXGf4dMf3fsnQrEROASGf1FCd8B6WcZau7JtXSTFw0OUGuk8UGz36ETWN72DkCw==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-size": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-size/-/tsparticles-updater-size-2.12.0.tgz",
+ "integrity": "sha512-B0yRdEDd/qZXCGDL/ussHfx5YJ9UhTqNvmS5X2rR2hiZhBAE2fmsXLeWkdtF2QusjPeEqFDxrkGiLOsh6poqRA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-stroke-color": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-stroke-color/-/tsparticles-updater-stroke-color-2.12.0.tgz",
+ "integrity": "sha512-MPou1ZDxsuVq6SN1fbX+aI5yrs6FyP2iPCqqttpNbWyL+R6fik1rL0ab/x02B57liDXqGKYomIbBQVP3zUTW1A==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-tilt": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-tilt/-/tsparticles-updater-tilt-2.12.0.tgz",
+ "integrity": "sha512-HDEFLXazE+Zw+kkKKAiv0Fs9D9sRP61DoCR6jZ36ipea6OBgY7V1Tifz2TSR1zoQkk57ER9+EOQbkSQO+YIPGQ==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-twinkle": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-twinkle/-/tsparticles-updater-twinkle-2.12.0.tgz",
+ "integrity": "sha512-JhK/DO4kTx7IFwMBP2EQY9hBaVVvFnGBvX21SQWcjkymmN1hZ+NdcgUtR9jr4jUiiSNdSl7INaBuGloVjWvOgA==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/tsparticles-updater-wobble": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/tsparticles-updater-wobble/-/tsparticles-updater-wobble-2.12.0.tgz",
+ "integrity": "sha512-85FIRl95ipD3jfIsQdDzcUC5PRMWIrCYqBq69nIy9P8rsNzygn+JK2n+P1VQZowWsZvk0mYjqb9OVQB21Lhf6Q==",
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0"
+ }
+ },
+ "node_modules/vdirs": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/vdirs/-/vdirs-0.1.8.tgz",
+ "integrity": "sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==",
+ "dev": true,
+ "dependencies": {
+ "evtd": "^0.2.2"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.11"
+ }
+ },
+ "node_modules/vite": {
+ "version": "4.4.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
+ "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.18.10",
+ "postcss": "^8.4.27",
+ "rollup": "^3.27.1"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vooks": {
+ "version": "0.2.12",
+ "resolved": "https://registry.npmjs.org/vooks/-/vooks-0.2.12.tgz",
+ "integrity": "sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==",
+ "dev": true,
+ "dependencies": {
+ "evtd": "^0.2.2"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
+ "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-sfc": "3.3.4",
+ "@vue/runtime-dom": "3.3.4",
+ "@vue/server-renderer": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+ "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue3-particles": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/vue3-particles/-/vue3-particles-2.12.0.tgz",
+ "integrity": "sha512-Vc8CSNoT/VWD4LTauYDR2EXN6mPU5qz35wqVPuhW0Wj9IbwGR9FMTSWktjSrKlpiUJgGzMJ003pqpfWYi4vnZw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/matteobruni"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/tsparticles"
+ },
+ {
+ "type": "buymeacoffee",
+ "url": "https://www.buymeacoffee.com/matteobruni"
+ }
+ ],
+ "dependencies": {
+ "tsparticles-engine": "^2.12.0",
+ "vue": "^3.3.4"
+ }
+ },
+ "node_modules/vueuc": {
+ "version": "0.4.51",
+ "resolved": "https://registry.npmjs.org/vueuc/-/vueuc-0.4.51.tgz",
+ "integrity": "sha512-pLiMChM4f+W8czlIClGvGBYo656lc2Y0/mXFSCydcSmnCR1izlKPGMgiYBGjbY9FDkFG8a2HEVz7t0DNzBWbDw==",
+ "dev": true,
+ "dependencies": {
+ "@css-render/vue3-ssr": "^0.15.10",
+ "@juggle/resize-observer": "^3.3.1",
+ "css-render": "^0.15.10",
+ "evtd": "^0.2.4",
+ "seemly": "^0.3.6",
+ "vdirs": "^0.1.4",
+ "vooks": "^0.2.4"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.11"
+ }
+ }
+ }
+}
diff --git a/fltb/package.json b/fltb/package.json
new file mode 100644
index 0000000..7d83076
--- /dev/null
+++ b/fltb/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "hdu-assistant-interview-round-2",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "animate.css": "^4.1.1",
+ "bootstrap": "^5.3.2",
+ "tsparticles": "^2.12.0",
+ "tsparticles-slim": "^2.12.0",
+ "vue": "^3.3.4",
+ "vue-router": "^4.2.5",
+ "vue3-particles": "^2.12.0"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^4.2.3",
+ "naive-ui": "^2.34.4",
+ "vite": "^4.4.5"
+ }
+}
diff --git a/fltb/public/cube.svg b/fltb/public/cube.svg
new file mode 100644
index 0000000..bcf1e68
--- /dev/null
+++ b/fltb/public/cube.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/fltb/src/App.vue b/fltb/src/App.vue
new file mode 100644
index 0000000..8fa0343
--- /dev/null
+++ b/fltb/src/App.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ User Management System by FLTB
+
+
+
+
+
+
diff --git a/fltb/src/components/dataTable.vue b/fltb/src/components/dataTable.vue
new file mode 100644
index 0000000..a5323ce
--- /dev/null
+++ b/fltb/src/components/dataTable.vue
@@ -0,0 +1,191 @@
+
+
+
+
+ Add
+ Delete
+
+
+
+
+
+
+
diff --git a/fltb/src/components/editModal.vue b/fltb/src/components/editModal.vue
new file mode 100644
index 0000000..1a9d8fe
--- /dev/null
+++ b/fltb/src/components/editModal.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+ {{ errorMessage }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Male
+ Female
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Submit
+
+
+
+
\ No newline at end of file
diff --git a/fltb/src/main.js b/fltb/src/main.js
new file mode 100644
index 0000000..de6f2b0
--- /dev/null
+++ b/fltb/src/main.js
@@ -0,0 +1,11 @@
+import { createApp } from 'vue'
+import Particles from "vue3-particles";
+import App from './App.vue'
+import router from './router';
+import 'bootstrap/dist/css/bootstrap-grid.min.css'
+import 'animate.css';
+
+createApp(App)
+ .use(router)
+ .use(Particles)
+ .mount('#app');
diff --git a/fltb/src/particles.json b/fltb/src/particles.json
new file mode 100644
index 0000000..89f1a23
--- /dev/null
+++ b/fltb/src/particles.json
@@ -0,0 +1,622 @@
+{
+ "autoPlay": true,
+ "background": {
+ "color": {
+ "value": "#c9e7e5"
+ },
+ "image": "",
+ "position": "",
+ "repeat": "",
+ "size": "",
+ "opacity": 1
+ },
+ "backgroundMask": {
+ "composite": "destination-out",
+ "cover": {
+ "color": {
+ "value": "#fff"
+ },
+ "opacity": 1
+ },
+ "enable": false
+ },
+ "defaultThemes": {},
+ "delay": 0,
+ "fullScreen": {
+ "enable": true,
+ "zIndex": -1
+ },
+ "detectRetina": true,
+ "duration": 0,
+ "fpsLimit": 120,
+ "interactivity": {
+ "detectsOn": "window",
+ "events": {
+ "onClick": {
+ "enable": false,
+ "mode": []
+ },
+ "onDiv": {
+ "selectors": [],
+ "enable": false,
+ "mode": [],
+ "type": "circle"
+ },
+ "onHover": {
+ "enable": false,
+ "mode": [],
+ "parallax": {
+ "enable": false,
+ "force": 2,
+ "smooth": 10
+ }
+ },
+ "resize": {
+ "delay": 0.5,
+ "enable": true
+ }
+ },
+ "modes": {
+ "trail": {
+ "delay": 1,
+ "pauseOnStop": false,
+ "quantity": 1
+ },
+ "attract": {
+ "distance": 200,
+ "duration": 0.4,
+ "easing": "ease-out-quad",
+ "factor": 1,
+ "maxSpeed": 50,
+ "speed": 1
+ },
+ "bounce": {
+ "distance": 200
+ },
+ "bubble": {
+ "distance": 200,
+ "duration": 0.4,
+ "mix": false,
+ "divs": {
+ "distance": 200,
+ "duration": 0.4,
+ "mix": false,
+ "selectors": []
+ }
+ },
+ "connect": {
+ "distance": 80,
+ "links": {
+ "opacity": 0.5
+ },
+ "radius": 60
+ },
+ "grab": {
+ "distance": 100,
+ "links": {
+ "blink": false,
+ "consent": false,
+ "opacity": 1
+ }
+ },
+ "push": {
+ "default": true,
+ "groups": [],
+ "quantity": 4
+ },
+ "remove": {
+ "quantity": 2
+ },
+ "repulse": {
+ "distance": 200,
+ "duration": 0.4,
+ "factor": 100,
+ "speed": 1,
+ "maxSpeed": 50,
+ "easing": "ease-out-quad",
+ "divs": {
+ "distance": 200,
+ "duration": 0.4,
+ "factor": 100,
+ "speed": 1,
+ "maxSpeed": 50,
+ "easing": "ease-out-quad",
+ "selectors": []
+ }
+ },
+ "slow": {
+ "factor": 3,
+ "radius": 200
+ },
+ "light": {
+ "area": {
+ "gradient": {
+ "start": {
+ "value": "#ffffff"
+ },
+ "stop": {
+ "value": "#000000"
+ }
+ },
+ "radius": 1000
+ },
+ "shadow": {
+ "color": {
+ "value": "#000000"
+ },
+ "length": 2000
+ }
+ }
+ }
+ },
+ "manualParticles": [],
+ "particles": {
+ "bounce": {
+ "horizontal": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0.1
+ },
+ "value": 1
+ },
+ "vertical": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0.1
+ },
+ "value": 1
+ }
+ },
+ "collisions": {
+ "absorb": {
+ "speed": 2
+ },
+ "bounce": {
+ "horizontal": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0.1
+ },
+ "value": 1
+ },
+ "vertical": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0.1
+ },
+ "value": 1
+ }
+ },
+ "enable": false,
+ "maxSpeed": 50,
+ "mode": "bounce",
+ "overlap": {
+ "enable": true,
+ "retries": 0
+ }
+ },
+ "color": {
+ "value": "#ffd700",
+ "animation": {
+ "h": {
+ "count": 0,
+ "enable": false,
+ "offset": 0,
+ "speed": 1,
+ "delay": 0,
+ "decay": 0,
+ "sync": true
+ },
+ "s": {
+ "count": 0,
+ "enable": false,
+ "offset": 0,
+ "speed": 1,
+ "delay": 0,
+ "decay": 0,
+ "sync": true
+ },
+ "l": {
+ "count": 0,
+ "enable": false,
+ "offset": 0,
+ "speed": 1,
+ "delay": 0,
+ "decay": 0,
+ "sync": true
+ }
+ }
+ },
+ "groups": {},
+ "move": {
+ "angle": {
+ "offset": 0,
+ "value": 90
+ },
+ "attract": {
+ "distance": 200,
+ "enable": false,
+ "rotate": {
+ "x": 3000,
+ "y": 3000
+ }
+ },
+ "center": {
+ "x": 50,
+ "y": 50,
+ "mode": "percent",
+ "radius": 0
+ },
+ "decay": 0.05,
+ "distance": {},
+ "direction": "top",
+ "drift": 0,
+ "enable": true,
+ "gravity": {
+ "acceleration": 9.81,
+ "enable": true,
+ "inverse": false,
+ "maxSpeed": 50
+ },
+ "path": {
+ "clamp": true,
+ "delay": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0
+ },
+ "value": 0
+ },
+ "enable": false,
+ "options": {}
+ },
+ "outModes": {
+ "default": "destroy",
+ "bottom": "destroy",
+ "left": "destroy",
+ "right": "destroy",
+ "top": "none"
+ },
+ "random": false,
+ "size": false,
+ "speed": {
+ "min": 10,
+ "max": 50
+ },
+ "spin": {
+ "acceleration": 0,
+ "enable": false
+ },
+ "straight": false,
+ "trail": {
+ "enable": false,
+ "length": 10,
+ "fill": {}
+ },
+ "vibrate": false,
+ "warp": false
+ },
+ "number": {
+ "density": {
+ "enable": false,
+ "width": 1920,
+ "height": 1080
+ },
+ "limit": 0,
+ "value": 0
+ },
+ "opacity": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0.1
+ },
+ "value": 1,
+ "animation": {
+ "count": 0,
+ "enable": false,
+ "speed": 2,
+ "decay": 0,
+ "delay": 0,
+ "sync": false,
+ "mode": "auto",
+ "startValue": "random",
+ "destroy": "none"
+ }
+ },
+ "reduceDuplicates": false,
+ "shadow": {
+ "blur": 0,
+ "color": {
+ "value": "#000"
+ },
+ "enable": false,
+ "offset": {
+ "x": 0,
+ "y": 0
+ }
+ },
+ "shape": {
+ "close": true,
+ "fill": true,
+ "options": {},
+ "type": "triangle"
+ },
+ "size": {
+ "random": {
+ "enable": false,
+ "minimumValue": 1
+ },
+ "value": 5,
+ "animation": {
+ "count": 1,
+ "enable": true,
+ "speed": 16,
+ "decay": 0,
+ "delay": 0,
+ "sync": true,
+ "mode": "auto",
+ "startValue": "min",
+ "destroy": "none"
+ }
+ },
+ "stroke": {
+ "width": 0
+ },
+ "zIndex": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0
+ },
+ "value": 0,
+ "opacityRate": 1,
+ "sizeRate": 1,
+ "velocityRate": 1
+ },
+ "destroy": {
+ "bounds": {},
+ "mode": "none",
+ "split": {
+ "count": 1,
+ "factor": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0
+ },
+ "value": 3
+ },
+ "rate": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0
+ },
+ "value": {
+ "min": 4,
+ "max": 9
+ }
+ },
+ "sizeOffset": true,
+ "particles": {}
+ }
+ },
+ "roll": {
+ "darken": {
+ "enable": true,
+ "value": 25
+ },
+ "enable": true,
+ "enlighten": {
+ "enable": false,
+ "value": 0
+ },
+ "mode": "vertical",
+ "speed": {
+ "min": 5,
+ "max": 15
+ }
+ },
+ "tilt": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0
+ },
+ "value": {
+ "min": 0,
+ "max": 360
+ },
+ "animation": {
+ "enable": true,
+ "speed": 30,
+ "decay": 0,
+ "sync": false
+ },
+ "direction": "random",
+ "enable": true
+ },
+ "twinkle": {
+ "lines": {
+ "enable": false,
+ "frequency": 0.05,
+ "opacity": 1
+ },
+ "particles": {
+ "enable": false,
+ "frequency": 0.05,
+ "opacity": 1
+ }
+ },
+ "wobble": {
+ "distance": 30,
+ "enable": true,
+ "speed": {
+ "angle": {
+ "min": -7,
+ "max": 7
+ },
+ "move": 10
+ }
+ },
+ "life": {
+ "count": 0,
+ "delay": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0
+ },
+ "value": 0,
+ "sync": false
+ },
+ "duration": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0.0001
+ },
+ "value": 0,
+ "sync": false
+ }
+ },
+ "rotate": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0
+ },
+ "value": {
+ "min": 0,
+ "max": 360
+ },
+ "animation": {
+ "enable": true,
+ "speed": 30,
+ "decay": 0,
+ "sync": false
+ },
+ "direction": "random",
+ "path": false
+ },
+ "orbit": {
+ "animation": {
+ "count": 0,
+ "enable": false,
+ "speed": 1,
+ "decay": 0,
+ "delay": 0,
+ "sync": false
+ },
+ "enable": false,
+ "opacity": 1,
+ "rotation": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0
+ },
+ "value": 45
+ },
+ "width": 1
+ },
+ "links": {
+ "blink": false,
+ "color": {
+ "value": "#fff"
+ },
+ "consent": false,
+ "distance": 100,
+ "enable": false,
+ "frequency": 1,
+ "opacity": 1,
+ "shadow": {
+ "blur": 5,
+ "color": {
+ "value": "#000"
+ },
+ "enable": false
+ },
+ "triangles": {
+ "enable": false,
+ "frequency": 1
+ },
+ "width": 1,
+ "warp": false
+ },
+ "repulse": {
+ "random": {
+ "enable": false,
+ "minimumValue": 0
+ },
+ "value": 0,
+ "enabled": false,
+ "distance": 1,
+ "duration": 1,
+ "factor": 1,
+ "speed": 1
+ }
+ },
+ "pauseOnBlur": true,
+ "pauseOnOutsideViewport": true,
+ "responsive": [],
+ "smooth": false,
+ "style": {},
+ "themes": [],
+ "zLayers": 100,
+ "emitters": [
+ {
+ "autoPlay": true,
+ "fill": true,
+ "life": {
+ "wait": false
+ },
+ "rate": {
+ "quantity": 5,
+ "delay": 0.15
+ },
+ "shape": "square",
+ "startCount": 0,
+ "particles": {
+ "move": {
+ "direction": "top-right",
+ "outModes": {
+ "top": "none",
+ "left": "none",
+ "default": "destroy"
+ }
+ }
+ },
+ "position": {
+ "x": 0,
+ "y": 30
+ }
+ },
+ {
+ "autoPlay": true,
+ "fill": true,
+ "life": {
+ "wait": false
+ },
+ "rate": {
+ "quantity": 5,
+ "delay": 0.15
+ },
+ "shape": "square",
+ "startCount": 0,
+ "particles": {
+ "move": {
+ "direction": "top-left",
+ "outModes": {
+ "top": "none",
+ "right": "none",
+ "default": "destroy"
+ }
+ }
+ },
+ "position": {
+ "x": 100,
+ "y": 30
+ }
+ }
+ ],
+ "motion": {
+ "disable": false,
+ "reduce": {
+ "factor": 4,
+ "value": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/fltb/src/router/index.js b/fltb/src/router/index.js
new file mode 100644
index 0000000..db518c9
--- /dev/null
+++ b/fltb/src/router/index.js
@@ -0,0 +1,14 @@
+import { createRouter, createWebHistory } from 'vue-router'
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes: [
+ {
+ path: '/',
+ name: 'home',
+ component: () => import('../views/DataTable.vue')
+ }
+ ]
+})
+
+export default router
diff --git a/fltb/src/views/DataTable.vue b/fltb/src/views/DataTable.vue
new file mode 100644
index 0000000..68665d0
--- /dev/null
+++ b/fltb/src/views/DataTable.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fltb/vite.config.js b/fltb/vite.config.js
new file mode 100644
index 0000000..05c1740
--- /dev/null
+++ b/fltb/vite.config.js
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vue()],
+})