diff --git a/package-lock.json b/package-lock.json
index 0a26358..907a860 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,7 +20,7 @@
         "dayjs": "^1.11.10"
       },
       "devDependencies": {
-        "@slidev/cli": "^0.46.1",
+        "@slidev/cli": "^0.46.2",
         "@slidev/theme-default": "^0.21.2",
         "@slidev/theme-seriph": "^0.21.3",
         "@swc/core": "^1.3.103",
@@ -1061,9 +1061,9 @@
       }
     },
     "node_modules/@iconify-json/ph": {
-      "version": "1.1.9",
-      "resolved": "https://registry.npmjs.org/@iconify-json/ph/-/ph-1.1.9.tgz",
-      "integrity": "sha512-LcKe7rSp4zm1Rpafsv03DVdta65ePmPMH7IHLErD8nFLL2jNAtt/8CUAJWbaqYztE3V4wEg21az09Ur6yo9CXw==",
+      "version": "1.1.10",
+      "resolved": "https://registry.npmjs.org/@iconify-json/ph/-/ph-1.1.10.tgz",
+      "integrity": "sha512-e7owJfx9BgnUVGXKk/243iFV4tHH1UiBDl5mWYkwKoPf4nN2rzPGdD7ISfvwr3SB25VvOteSC5DOVWxjs56Ywg==",
       "dev": true,
       "dependencies": {
         "@iconify/types": "*"
@@ -1091,9 +1091,9 @@
       "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="
     },
     "node_modules/@iconify/utils": {
-      "version": "2.1.13",
-      "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.13.tgz",
-      "integrity": "sha512-6uWvJIo715xYRy1KmCCyZYW0YYkLjaojEExoEkxpOHKhi9cyHW8hVKo+m8zrxzNVSqjUx9OuVRa2BWXeXfkp5A==",
+      "version": "2.1.16",
+      "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.16.tgz",
+      "integrity": "sha512-2q2POA+bg1iKFMT3ZAeS8+Lo2PcbTXH2QKdQ9XwxSyCUg+XHA0ZW7mBoW8v0cU/SgitnM2OheEouPw7mRwY+Bg==",
       "dev": true,
       "dependencies": {
         "@antfu/install-pkg": "^0.1.1",
@@ -1732,24 +1732,24 @@
       "link": true
     },
     "node_modules/@slidev/cli": {
-      "version": "0.46.1",
-      "resolved": "https://registry.npmjs.org/@slidev/cli/-/cli-0.46.1.tgz",
-      "integrity": "sha512-YqDn/7d+N24VqkHebpzslyXCeHHk3MJLcgHZC2074QBxH6mlLgk4Q9mSk4wXOjOZFLegEaOQj+x3NcbXHzQOnQ==",
+      "version": "0.46.2",
+      "resolved": "https://registry.npmjs.org/@slidev/cli/-/cli-0.46.2.tgz",
+      "integrity": "sha512-RQUq3gY+cbvKLO04bcvAUIsDSfcXKd+ZpwJV9CFaPvqwYxrQZ0uBCiJH03z4chV5g6cDiRGlEKWyGHXNVjTqcg==",
       "dev": true,
       "dependencies": {
         "@antfu/utils": "^0.7.7",
-        "@iconify-json/carbon": "^1.1.26",
-        "@iconify-json/ph": "^1.1.9",
+        "@iconify-json/carbon": "^1.1.27",
+        "@iconify-json/ph": "^1.1.10",
         "@lillallol/outline-pdf": "^4.0.0",
         "@mrdrogdrog/optional": "^1.2.1",
-        "@slidev/client": "0.46.1",
-        "@slidev/parser": "0.46.1",
-        "@slidev/types": "0.46.1",
-        "@unocss/extractor-mdc": "^0.58.0",
-        "@unocss/reset": "^0.58.0",
-        "@vitejs/plugin-vue": "^4.5.2",
+        "@slidev/client": "0.46.2",
+        "@slidev/parser": "0.46.2",
+        "@slidev/types": "0.46.2",
+        "@unocss/extractor-mdc": "^0.58.3",
+        "@unocss/reset": "^0.58.3",
+        "@vitejs/plugin-vue": "^5.0.3",
         "@vitejs/plugin-vue-jsx": "^3.1.0",
-        "@windicss/config": "^1.9.2",
+        "@windicss/config": "^1.9.3",
         "cli-progress": "^3.12.0",
         "codemirror": "^5.65.5",
         "connect": "^3.7.0",
@@ -1757,9 +1757,9 @@
         "fast-deep-equal": "^3.1.3",
         "fast-glob": "^3.3.2",
         "fs-extra": "^11.2.0",
-        "get-port-please": "^3.1.1",
+        "get-port-please": "^3.1.2",
         "global-directory": "^4.0.1",
-        "htmlparser2": "^9.0.0",
+        "htmlparser2": "^9.1.0",
         "import-from": "^4.0.0",
         "is-installed-globally": "^1.0.0",
         "jiti": "^1.21.0",
@@ -1772,10 +1772,10 @@
         "markdown-it-footnote": "^4.0.0",
         "markdown-it-link-attributes": "^4.0.1",
         "markdown-it-mdc": "^0.2.1",
-        "markdown-it-shikiji": "^0.9.9",
+        "markdown-it-shikiji": "^0.9.19",
         "monaco-editor": "^0.37.1",
         "nanoid": "^5.0.4",
-        "open": "^9.1.0",
+        "open": "^10.0.3",
         "pdf-lib": "^1.17.1",
         "plantuml-encoder": "^1.4.0",
         "postcss-nested": "^6.0.1",
@@ -1785,23 +1785,23 @@
         "resolve": "^1.22.8",
         "resolve-from": "^5.0.0",
         "resolve-global": "^2.0.0",
-        "shiki": "npm:shikiji-compat@^0.9.9",
-        "shikiji": "^0.9.9",
-        "shikiji-twoslash": "^0.9.9",
-        "sirv": "^2.0.3",
-        "unocss": "^0.58.0",
-        "unplugin-icons": "^0.18.1",
+        "shiki": "npm:shikiji-compat@^0.9.19",
+        "shikiji": "^0.9.19",
+        "shikiji-twoslash": "^0.9.19",
+        "sirv": "^2.0.4",
+        "unocss": "^0.58.3",
+        "unplugin-icons": "^0.18.2",
         "unplugin-vue-components": "^0.26.0",
         "unplugin-vue-markdown": "^0.25.2",
         "uqr": "^0.1.2",
-        "vite": "^5.0.10",
+        "vite": "^5.0.11",
         "vite-plugin-inspect": "^0.8.1",
-        "vite-plugin-remote-assets": "^0.4.0",
+        "vite-plugin-remote-assets": "^0.4.1",
         "vite-plugin-static-copy": "^1.0.0",
         "vite-plugin-vue-server-ref": "^0.4.0",
-        "vite-plugin-windicss": "^1.9.2",
+        "vite-plugin-windicss": "^1.9.3",
         "vitefu": "^0.2.5",
-        "vue": "^3.3.12",
+        "vue": "^3.4.14",
         "windicss": "^3.5.6",
         "yargs": "^17.7.2"
       },
@@ -1823,37 +1823,125 @@
         }
       }
     },
+    "node_modules/@slidev/cli/node_modules/bundle-name": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+      "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+      "dev": true,
+      "dependencies": {
+        "run-applescript": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@slidev/cli/node_modules/default-browser": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
+      "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+      "dev": true,
+      "dependencies": {
+        "bundle-name": "^4.1.0",
+        "default-browser-id": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@slidev/cli/node_modules/default-browser-id": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
+      "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@slidev/cli/node_modules/is-wsl": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+      "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+      "dev": true,
+      "dependencies": {
+        "is-inside-container": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@slidev/cli/node_modules/open": {
+      "version": "10.0.3",
+      "resolved": "https://registry.npmjs.org/open/-/open-10.0.3.tgz",
+      "integrity": "sha512-dtbI5oW7987hwC9qjJTyABldTaa19SuyJse1QboWv3b0qCcrrLNVDqBx1XgELAjh9QTVQaP/C5b1nhQebd1H2A==",
+      "dev": true,
+      "dependencies": {
+        "default-browser": "^5.2.1",
+        "define-lazy-prop": "^3.0.0",
+        "is-inside-container": "^1.0.0",
+        "is-wsl": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@slidev/cli/node_modules/run-applescript": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
+      "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/@slidev/client": {
-      "version": "0.46.1",
-      "resolved": "https://registry.npmjs.org/@slidev/client/-/client-0.46.1.tgz",
-      "integrity": "sha512-L4/vPBYJXWB/vE+cIRbTUy+v4AarDIsK1XsF4+8XsW8ynt8x0z0PPC+2pqPOsYWrYwD0sYUggN6dLxIWruS6Xw==",
+      "version": "0.46.2",
+      "resolved": "https://registry.npmjs.org/@slidev/client/-/client-0.46.2.tgz",
+      "integrity": "sha512-eYMk6oQaV72x0/CSYEmHXbpNwABahs1F6YTcx7+uJAqZM5oQxM8jgaU2ZbP7Pzqp4+FJ4fe935fpFr2IHqXfqw==",
       "dev": true,
       "dependencies": {
         "@antfu/utils": "^0.7.7",
-        "@slidev/parser": "0.46.1",
-        "@slidev/types": "0.46.1",
-        "@unhead/vue": "^1.8.9",
-        "@unocss/reset": "^0.58.0",
-        "@vueuse/core": "^10.7.0",
-        "@vueuse/math": "^10.7.0",
+        "@slidev/parser": "0.46.2",
+        "@slidev/types": "0.46.2",
+        "@unhead/vue": "^1.8.10",
+        "@unocss/reset": "^0.58.3",
+        "@vueuse/core": "^10.7.2",
+        "@vueuse/math": "^10.7.2",
         "@vueuse/motion": "^2.0.0",
         "codemirror": "^5.65.5",
-        "defu": "^6.1.3",
+        "defu": "^6.1.4",
         "drauu": "^0.3.7",
         "file-saver": "^2.0.5",
         "fuse.js": "^7.0.0",
         "js-base64": "^3.7.5",
         "js-yaml": "^4.1.0",
         "katex": "^0.16.9",
-        "mermaid": "^10.6.1",
+        "mermaid": "^10.7.0",
         "monaco-editor": "^0.37.1",
         "nanoid": "^5.0.4",
-        "prettier": "^3.1.1",
+        "prettier": "^3.2.3",
         "recordrtc": "^5.6.2",
         "resolve": "^1.22.8",
-        "unocss": "^0.58.0",
-        "vite-plugin-windicss": "^1.9.2",
-        "vue": "^3.3.12",
+        "unocss": "^0.58.3",
+        "vite-plugin-windicss": "^1.9.3",
+        "vue": "^3.4.14",
         "vue-router": "^4.2.5",
         "vue-starport": "^0.4.0",
         "windicss": "^3.5.6"
@@ -1866,12 +1954,12 @@
       }
     },
     "node_modules/@slidev/parser": {
-      "version": "0.46.1",
-      "resolved": "https://registry.npmjs.org/@slidev/parser/-/parser-0.46.1.tgz",
-      "integrity": "sha512-01pWAngee4KJhzT1v8lT7hzT/yO1yZphiJu7xkWH/L09TjQEvyl5DfkPIiNW/mcYFaMoogJ+xIe6fV4sQL6InQ==",
+      "version": "0.46.2",
+      "resolved": "https://registry.npmjs.org/@slidev/parser/-/parser-0.46.2.tgz",
+      "integrity": "sha512-kqRsOKzOYWP/2qT3VqIVq5cwRSENISvKn2o4nr24w3QJ7D9yExCuEB59wWdJeGm1T1qj9gVhpaS/XAEz3NUaFA==",
       "dev": true,
       "dependencies": {
-        "@slidev/types": "0.46.1",
+        "@slidev/types": "0.46.2",
         "js-yaml": "^4.1.0"
       },
       "engines": {
@@ -1944,9 +2032,9 @@
       }
     },
     "node_modules/@slidev/types": {
-      "version": "0.46.1",
-      "resolved": "https://registry.npmjs.org/@slidev/types/-/types-0.46.1.tgz",
-      "integrity": "sha512-gKytd8wnXWAIH50Ls7i1An0JflNWAMI1y4o2MQBBsOcwxV/GwWPJZUAp/lDzrFxcwnGGEnC7A3v9xz5zGoV6OA==",
+      "version": "0.46.2",
+      "resolved": "https://registry.npmjs.org/@slidev/types/-/types-0.46.2.tgz",
+      "integrity": "sha512-noxxGNTuzItLuYMouW0sWYNk7ppdfBGTZv03YcIE2XwsNTtUwojwtK2G2IPy4LXMqPStstxOsaP1CQlP+RIzXA==",
       "dev": true,
       "engines": {
         "node": ">=18.0.0"
@@ -2355,22 +2443,22 @@
       }
     },
     "node_modules/@unhead/dom": {
-      "version": "1.8.9",
-      "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.8.9.tgz",
-      "integrity": "sha512-qY4CUVNKEM7lEAcTz5t71QYca+NXgUY5RwhSzB6sBBzZxQTiFOeTVKC6uWXU0N+3jBUdP/zdD3iN1JIjziDlng==",
+      "version": "1.8.10",
+      "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.8.10.tgz",
+      "integrity": "sha512-dBeDbHrBjeU+eVgMsD91TGEazb1dwLrY0x/ve01CldMCmm+WcRu++SUW7s1QX84mzGH2EgFz78o1OPn6jpV3zw==",
       "dev": true,
       "dependencies": {
-        "@unhead/schema": "1.8.9",
-        "@unhead/shared": "1.8.9"
+        "@unhead/schema": "1.8.10",
+        "@unhead/shared": "1.8.10"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
     },
     "node_modules/@unhead/schema": {
-      "version": "1.8.9",
-      "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.8.9.tgz",
-      "integrity": "sha512-Cumjt2uLfBMEXflvq7Nk8KNqa/JS4MlRGWkjXx/uUXJ1vUeQqeMV8o3hrnRvDDoTXr9LwPapTMUbtClN3TSBgw==",
+      "version": "1.8.10",
+      "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.8.10.tgz",
+      "integrity": "sha512-cy8RGOPkwOVY5EmRoCgGV8AqLjy/226xBVTY54kBct02Om3hBdpB9FZa9frM910pPUXMI8PNmFgABO23O7IdJA==",
       "dev": true,
       "dependencies": {
         "hookable": "^5.5.3",
@@ -2381,27 +2469,27 @@
       }
     },
     "node_modules/@unhead/shared": {
-      "version": "1.8.9",
-      "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.8.9.tgz",
-      "integrity": "sha512-0o4+CBCi9EnTKPF6cEuLacnUHUkF0u/FfiKrWnKWUiB8wTD1v3UCf5ZCrNCjuJmKHTqj6ZtZ2hIfXsqWfc+3tA==",
+      "version": "1.8.10",
+      "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.8.10.tgz",
+      "integrity": "sha512-pEFryAs3EmV+ShDQx2ZBwUnt5l3RrMrXSMZ50oFf+MImKZNARVvD4+3I8fEI9wZh+Zq0JYG3UAfzo51MUP+Juw==",
       "dev": true,
       "dependencies": {
-        "@unhead/schema": "1.8.9"
+        "@unhead/schema": "1.8.10"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
     },
     "node_modules/@unhead/vue": {
-      "version": "1.8.9",
-      "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.8.9.tgz",
-      "integrity": "sha512-sL1d2IRBZd5rjzhgTYni2DiociSpt+Cfz3iVWKb0EZwQHgg0GzV8Hkoj5TjZYZow6EjDSPRfVPXDwOwxkVOgug==",
+      "version": "1.8.10",
+      "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.8.10.tgz",
+      "integrity": "sha512-KF8pftHnxnlBlgNpKXWLTg3ZUtkuDCxRPUFSDBy9CtqRSX/qvAhLZ26mbqRVmHj8KigiRHP/wnPWNyGnUx20Bg==",
       "dev": true,
       "dependencies": {
-        "@unhead/schema": "1.8.9",
-        "@unhead/shared": "1.8.9",
+        "@unhead/schema": "1.8.10",
+        "@unhead/shared": "1.8.10",
         "hookable": "^5.5.3",
-        "unhead": "1.8.9"
+        "unhead": "1.8.10"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
@@ -2411,14 +2499,14 @@
       }
     },
     "node_modules/@unocss/astro": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.58.0.tgz",
-      "integrity": "sha512-df+tEFO5eKXjQOwSWQhS9IdjD0sfLHLtn8U09sEKR2Nmh5CvpwyBxmvLQgOCilPou7ehmyKfsyGRLZg7IMp+Ew==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.58.3.tgz",
+      "integrity": "sha512-qJL+XkWYJhEIX4AmOtbfb2Zu4holTDpRscfvVci4T+2VWjyE3mgtsyNzi9ZChe/hdEPRa7g26gSpNQeMhjh/Kw==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0",
-        "@unocss/reset": "0.58.0",
-        "@unocss/vite": "0.58.0"
+        "@unocss/core": "0.58.3",
+        "@unocss/reset": "0.58.3",
+        "@unocss/vite": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
@@ -2433,16 +2521,16 @@
       }
     },
     "node_modules/@unocss/cli": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.58.0.tgz",
-      "integrity": "sha512-rhsrDBxAVueygMcAbMkbuvsHbBL2rG6N96LllYwHn16FLgOE3Sf4JW1/LlNjQje3BtwMMtbSCCAeu2SryFhzbw==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.58.3.tgz",
+      "integrity": "sha512-veGdHhwm7GRvruXCMdqoFu3wVozr7ELEVWsFB6GpqWdGYIJ1i72M18l72UHDA2+TuDillZONnAQ5AvX9x/sYAw==",
       "dev": true,
       "dependencies": {
         "@ampproject/remapping": "^2.2.1",
         "@rollup/pluginutils": "^5.1.0",
-        "@unocss/config": "0.58.0",
-        "@unocss/core": "0.58.0",
-        "@unocss/preset-uno": "0.58.0",
+        "@unocss/config": "0.58.3",
+        "@unocss/core": "0.58.3",
+        "@unocss/preset-uno": "0.58.3",
         "cac": "^6.7.14",
         "chokidar": "^3.5.3",
         "colorette": "^2.0.20",
@@ -2463,12 +2551,12 @@
       }
     },
     "node_modules/@unocss/config": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.58.0.tgz",
-      "integrity": "sha512-WQD29gCZ7cajnMzezD1PRW0qQSxo/C6PX9ktygwhdinFx9nXuLZnKFOz65TiI8y48e53g1i7ivvgY3m4Sq5mIg==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.58.3.tgz",
+      "integrity": "sha512-8BQDoLzf/BkyfnkQsjnXI84oj+Spqkr7Bf2AbOGcX14vof0qqHSDvJXQV1e0u7jv2QETe2D1+PI4fnkJCumaRw==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0",
+        "@unocss/core": "0.58.3",
         "unconfig": "^0.3.11"
       },
       "engines": {
@@ -2479,59 +2567,59 @@
       }
     },
     "node_modules/@unocss/core": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.58.0.tgz",
-      "integrity": "sha512-KhABQXGE2AgtO9vE28d+HnciuyGDcuygsnQdUwlzUuR4K05OSw2kRE9emRN4HaMycD+gA/zDbQrJxTXb6mQUiA==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.58.3.tgz",
+      "integrity": "sha512-9hTxzsrSLh+07ql/lGhE+8ZbE9MTTeZeMx131cPf2jDJUxAZooLE5pBCoK0k77ZJGcribRrwPGkUScBNOK0cYQ==",
       "dev": true,
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/extractor-arbitrary-variants": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.58.0.tgz",
-      "integrity": "sha512-s9wK2UugJM0WK1HpgPz2kTbpeyQc46zais+nauN/ykVX6NMq8PtGzSWszzf+0aIbtWAQGiqAfiYNTpf09tJHfg==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.58.3.tgz",
+      "integrity": "sha512-QszC2atLcvzyoZFsjgtMBbILN4lrYI60iVRWdii+GGiKVtoIaKRWiA/3WERkvYGVPseVWOMflUpfxNeq+s9zUw==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0"
+        "@unocss/core": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/extractor-mdc": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/extractor-mdc/-/extractor-mdc-0.58.0.tgz",
-      "integrity": "sha512-7SYFvoEjf4w2/U5K1lH8EuFlUrFYxHOYhVOFAovjfAgmWyR//q62lSF70MVcToSTDFAi1zKGxoa3jQHsjV8seQ==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/extractor-mdc/-/extractor-mdc-0.58.3.tgz",
+      "integrity": "sha512-RaKMr/BWCVZgbzVckqJpwYqLm3Q9w/b61J0O96rbagrd1hHg1Quy+MfB2czFWWg9+Owea1QkZkf680lGL6nDJg==",
       "dev": true,
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/inspector": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.58.0.tgz",
-      "integrity": "sha512-ZC4QauFGdh3/VkzW/FqkO2R03JEbzGNuX0DK03pwas8/jFIGh8pPldesj8GEKm1YWr1emx9cw7JUnhR8XSUBlA==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.58.3.tgz",
+      "integrity": "sha512-FqkoHiO23lGGcQ+qJbE1Kb8+kPJWc/LxBz3B4Ehml1vQryncNh4p+3sczVn5YVTfPDGBXBCkP05Q+PJRKabPXQ==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0",
-        "@unocss/rule-utils": "0.58.0",
+        "@unocss/core": "0.58.3",
+        "@unocss/rule-utils": "0.58.3",
         "gzip-size": "^6.0.0",
-        "sirv": "^2.0.3"
+        "sirv": "^2.0.4"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/postcss": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.58.0.tgz",
-      "integrity": "sha512-2hAwLbfUFqysi8FN1cn3xkHy5GhLMlYy6W4NrAZ2ws7F2MKpsCT2xCj7dT5cI2tW8ulD2YoVbKH15dBhNsMNUA==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.58.3.tgz",
+      "integrity": "sha512-y1WQNvLUidypCu/tr6oJfaV4pjd8Lsk1N27ASEVsvockOH3MekRYpHtJfTl2fMk+1Y98AHv7hPAVjM2NlvhDow==",
       "dev": true,
       "dependencies": {
-        "@unocss/config": "0.58.0",
-        "@unocss/core": "0.58.0",
-        "@unocss/rule-utils": "0.58.0",
+        "@unocss/config": "0.58.3",
+        "@unocss/core": "0.58.3",
+        "@unocss/rule-utils": "0.58.3",
         "css-tree": "^2.3.1",
         "fast-glob": "^3.3.2",
         "magic-string": "^0.30.5",
@@ -2548,25 +2636,25 @@
       }
     },
     "node_modules/@unocss/preset-attributify": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.58.0.tgz",
-      "integrity": "sha512-Ew78noYes12K9gk4dF36MkjpiIqTi1XVqcniiAzxCkzuctxN4B57vW3LVTwjInGmWNNKWN3UNR4q1o0VxH4xJg==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.58.3.tgz",
+      "integrity": "sha512-iDXNfnSC0SI51UnMltHmMcPr2SYYkimo86i+SBQqc/WBGcCF7fFqFj8G2WsZfwHvU9SdAHF8tYIwNq06w1WSeg==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0"
+        "@unocss/core": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/preset-icons": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.58.0.tgz",
-      "integrity": "sha512-niT32avw+8l+L40LGhrmX6qDV9Z8/gOn4xjjRhLZZouKni3CJOpz9taILyF4xp1nak5nxGT4wa0tuC/htvOF5A==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.58.3.tgz",
+      "integrity": "sha512-SA4Eu4rOQ9+zUgIyK6RacS01ygm0PJWkqKlD8ccrBqEyZapqiU+vLL+v6X8YVjoZjR+5CVgcMD5Km7zEQgqXQw==",
       "dev": true,
       "dependencies": {
-        "@iconify/utils": "^2.1.12",
-        "@unocss/core": "0.58.0",
+        "@iconify/utils": "^2.1.13",
+        "@unocss/core": "0.58.3",
         "ofetch": "^1.3.3"
       },
       "funding": {
@@ -2574,63 +2662,63 @@
       }
     },
     "node_modules/@unocss/preset-mini": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.58.0.tgz",
-      "integrity": "sha512-oMliJZVTN3ecAvf52yN+MyJszaJOZoKwMMbUAFqVis62MaqRzZ8mSw12QFLFyX2pltulDFpMBTAKro+hP0wXEg==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.58.3.tgz",
+      "integrity": "sha512-vPC97vZPY6J9uZ+KmK4x7atKFlZJPH4tR7+SmzTmguaGIHZJG8k1cjBCg+5M7P4MaxINRMukUQS8/mM/uWFqvQ==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0",
-        "@unocss/extractor-arbitrary-variants": "0.58.0",
-        "@unocss/rule-utils": "0.58.0"
+        "@unocss/core": "0.58.3",
+        "@unocss/extractor-arbitrary-variants": "0.58.3",
+        "@unocss/rule-utils": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/preset-tagify": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.58.0.tgz",
-      "integrity": "sha512-I+dzfs/bofiGb2AUxkhcTDhB+r2+/3SO81PFwf3Ae7afnzhA2SLsKAkEqO8YN3M3mwZL7IfXn6vpsWeEAlk/yw==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.58.3.tgz",
+      "integrity": "sha512-9CEh4p8M8zFuNFzmPIs1paExWRcwr0Gp6lSMffFnqaVToeRBgEH7VnRj6/R3ZPAmQ2rEemZ1+3eOQlsspEE6aw==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0"
+        "@unocss/core": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/preset-typography": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.58.0.tgz",
-      "integrity": "sha512-8qo+Z1CJtXFMDbAvtizUTRLuLxCIzytgYU0GmuRkfc2iwASSDNDsvh8nAYQfWpyAEOV7QEHtS9c9xL4b0c89FA==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.58.3.tgz",
+      "integrity": "sha512-hOQa2Sjkxo5v+jMwPXYv1MpHSrirf73FKPqwwHlvEUSCq9iweGDOU/MVOc5fI9qCg0SrfWhIvrZb4ASlgAuzWQ==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0",
-        "@unocss/preset-mini": "0.58.0"
+        "@unocss/core": "0.58.3",
+        "@unocss/preset-mini": "0.58.3"
       }
     },
     "node_modules/@unocss/preset-uno": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.58.0.tgz",
-      "integrity": "sha512-DpgfjtvSgsWeyZH+jQHc1k5IReiZNb7oGpHVnfF6SlHETTnMHSeNetxkPQWYrqJLPI6llNLPTdTa5j47NtmOiA==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.58.3.tgz",
+      "integrity": "sha512-E/g2BS4KXS9E/4OqyJSt0xSB6gbbk2VGjgIXrpcSXuDr2S2F29XLVlhJA5HJBADPlEfbo41z7Mk3LA3nQPWxQQ==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0",
-        "@unocss/preset-mini": "0.58.0",
-        "@unocss/preset-wind": "0.58.0",
-        "@unocss/rule-utils": "0.58.0"
+        "@unocss/core": "0.58.3",
+        "@unocss/preset-mini": "0.58.3",
+        "@unocss/preset-wind": "0.58.3",
+        "@unocss/rule-utils": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/preset-web-fonts": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.58.0.tgz",
-      "integrity": "sha512-QarDDEUlexQ2IIn23pE1eHDskG2Tz+JjCe+FAN0DoNLLhvUUWSB4cQIMFWP6dSMJ047Blj9IpgAl9dERICW1qQ==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.58.3.tgz",
+      "integrity": "sha512-g+ru8gX74uZVSfKgdSGp46XQ+wMr66Hp3wtI01yyu9wqmJRAVWQmeehFYZ0hDnGgX20veYSbG+ybZfxIKeTy6w==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0",
+        "@unocss/core": "0.58.3",
         "ofetch": "^1.3.3"
       },
       "funding": {
@@ -2638,35 +2726,35 @@
       }
     },
     "node_modules/@unocss/preset-wind": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.58.0.tgz",
-      "integrity": "sha512-2zgaIy9RAGie9CsUYCkYRDSERBi8kG6Q/mQLgNfP9HMz5IThlnDHFWF/hLAVD51xQUg9gH8qWBR9kN/1ioT5Tw==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.58.3.tgz",
+      "integrity": "sha512-/YhvKDFGnTNvKxNaBv1dazHaqNmBM0Ulh0U9lhycGz11qsJTQSl/Y9ZP64fVC7fuo+Uiaj8AN/9gpmpVrCgt4A==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0",
-        "@unocss/preset-mini": "0.58.0",
-        "@unocss/rule-utils": "0.58.0"
+        "@unocss/core": "0.58.3",
+        "@unocss/preset-mini": "0.58.3",
+        "@unocss/rule-utils": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/reset": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.58.0.tgz",
-      "integrity": "sha512-UVZ5kz37JGbwAA06k/gjKYcekcTwi6oIhev1EpTtCvHLL6XYcYqcwb/u4Wjzprd3L3lxDGYXvGdjREGm2u7vbQ==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.58.3.tgz",
+      "integrity": "sha512-Q2KiRQlam2iYsTZgKdvnXEfUN4TA2oVpGIVD9Wa0ggs0XlYj5aOo0g0+4Tgqqn+YaviZQeJKnDs/JWE+ygHhZA==",
       "dev": true,
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/rule-utils": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.58.0.tgz",
-      "integrity": "sha512-LBJ9dJ/j5UIMzJF7pmIig55MtJAYtG+tn/zQRveZuPRVahzP+KqwlyB7u3uCUnQhdgo/MJODMcqyr0jl6+kTuA==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.58.3.tgz",
+      "integrity": "sha512-0Px9gIW+VOKetZuYET19uamIRpk7A9c8sCzQuGlNvCLXKEWamqXz5asLtnvPzw6SwCXEQDgWXE9i+aeoXaM0Jg==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "^0.58.0",
+        "@unocss/core": "^0.58.3",
         "magic-string": "^0.30.5"
       },
       "engines": {
@@ -2677,86 +2765,86 @@
       }
     },
     "node_modules/@unocss/scope": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/scope/-/scope-0.58.0.tgz",
-      "integrity": "sha512-XgUXZJvbxWSRC/DNOWI5DYdR6Nd6IZxsE5ls3AFA5msgtk5OH4YNQELLMabQw7xbRbU/fftlRJa3vncSfOyl6w==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/scope/-/scope-0.58.3.tgz",
+      "integrity": "sha512-Bkf6sk/0wry+fa5P8eLnzjC4pdrRlBY29g4F64qjsMBR0gk0stFRNzeoMOk412gmJXWjjlAQgNYiBZDHoPghZw==",
       "dev": true
     },
     "node_modules/@unocss/transformer-attributify-jsx": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.58.0.tgz",
-      "integrity": "sha512-QDdBEFDE7ntfCH7+8zHRW72MIQ9NH3uYGUE7lYgr5Ap8qzBHCxMT1kUrY6gwuoo3U4dMu2wruglYRHD88hvGkw==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.58.3.tgz",
+      "integrity": "sha512-H6wLJ5aAdHz8K/Z9/7OfiCBpOmKM7Gah2YtooT/Vfxu66bGehZO4QF6fcla6St53HifNvZ5odhlzqVEyHvQEaQ==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0"
+        "@unocss/core": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/transformer-attributify-jsx-babel": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.58.0.tgz",
-      "integrity": "sha512-ckDq/q476x2yikjS8usmSUGuakqMQrg2pm8sdBINTPdJxGc7kJRvI5UDnzRw4W9hE5IH+E4gg0XfCtFad0O3eg==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.58.3.tgz",
+      "integrity": "sha512-ar+s1rUVHpTy5Yz31WP4DGF2IHxyD4sk/t9ayvR2nOZddAZipdLGSShG03GLkRv4h2/r0x+BIyJGdwAC0BgVZQ==",
       "dev": true,
       "dependencies": {
-        "@babel/core": "^7.23.5",
+        "@babel/core": "^7.23.6",
         "@babel/plugin-syntax-jsx": "^7.23.3",
         "@babel/preset-typescript": "^7.23.3",
-        "@unocss/core": "0.58.0"
+        "@unocss/core": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/transformer-compile-class": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.58.0.tgz",
-      "integrity": "sha512-/BysfTg2q9sGPfiRHqWw/bT60/gjpBGBRVkIFsG4WVT2pgf3BfQUPu5FumSvZSRd0rA/pR57Lp6ZREAdj6+q+A==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.58.3.tgz",
+      "integrity": "sha512-VmnByb3N8uGAEXjnfhra3DzKq8ZeVCL30n46GG5RTC03MK0rZmKVOmBOBIB99rmSV+D/WVrb12Gf4fHsoLca7g==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0"
+        "@unocss/core": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/transformer-directives": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.58.0.tgz",
-      "integrity": "sha512-sU2U/aIykRkGGbA4Qo9Z5XE/KqWf7KhBwC1m8pUoqjawsZex4aVnQgXzDPfcjtmy6pElwK0z2U5DnO+OK9vCgQ==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.58.3.tgz",
+      "integrity": "sha512-JMfeA8GJz106UqafqsCDp6BBEU7TozZHpLw414CKZjOW1CuMmaKEGrlr2UCjCYgM1vH7KEFKRMwTRUEV3NvywQ==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0",
-        "@unocss/rule-utils": "0.58.0",
+        "@unocss/core": "0.58.3",
+        "@unocss/rule-utils": "0.58.3",
         "css-tree": "^2.3.1"
       }
     },
     "node_modules/@unocss/transformer-variant-group": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.58.0.tgz",
-      "integrity": "sha512-O2n8uVIpNic57rrkaaQ8jnC1WJ9N6FkoqxatRDXZ368aJ1CJNya0ZcVUL6lGGND0bOLXen4WmEN62ZxEWTqdkA==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.58.3.tgz",
+      "integrity": "sha512-/8CyzLwzpJC5cdiA/Wd5/Pg+HEIK+xxJJ3/VXoo93OPNCCbA9/h6DPwDh1ogKk15c6b5H75Ow6zKq1rYQAz2EA==",
       "dev": true,
       "dependencies": {
-        "@unocss/core": "0.58.0"
+        "@unocss/core": "0.58.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/@unocss/vite": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.58.0.tgz",
-      "integrity": "sha512-OCUOLMSOBEtXOEyBbAvMI3/xdR175BWRzmvV9Wc34ANZclEvCdVH8+WU725ibjY4VT0gVIuX68b13fhXdHV41A==",
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.58.3.tgz",
+      "integrity": "sha512-gmB2//z7lDEK7Bw5HbHTSQ3abOM0iveAY/W3L3FFXpvduoxMQyuI5dDk0hOCtzhAWeJoynnVN4MBGVmXM4Y/Mg==",
       "dev": true,
       "dependencies": {
         "@ampproject/remapping": "^2.2.1",
         "@rollup/pluginutils": "^5.1.0",
-        "@unocss/config": "0.58.0",
-        "@unocss/core": "0.58.0",
-        "@unocss/inspector": "0.58.0",
-        "@unocss/scope": "0.58.0",
-        "@unocss/transformer-directives": "0.58.0",
+        "@unocss/config": "0.58.3",
+        "@unocss/core": "0.58.3",
+        "@unocss/inspector": "0.58.3",
+        "@unocss/scope": "0.58.3",
+        "@unocss/transformer-directives": "0.58.3",
         "chokidar": "^3.5.3",
         "fast-glob": "^3.3.2",
         "magic-string": "^0.30.5"
@@ -2769,15 +2857,15 @@
       }
     },
     "node_modules/@vitejs/plugin-vue": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.0.tgz",
-      "integrity": "sha512-XHuyFdAikWRmHuAd89FOyUGIjrBU5KlxJtyi2hVeR9ySGFxQwE0bl5xAQju/ArMq5azdBivY4d+D2yPKwoYWUg==",
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.3.tgz",
+      "integrity": "sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==",
       "dev": true,
       "engines": {
-        "node": "^14.18.0 || >=16.0.0"
+        "node": "^18.0.0 || >=20.0.0"
       },
       "peerDependencies": {
-        "vite": "^4.0.0 || ^5.0.0",
+        "vite": "^5.0.0",
         "vue": "^3.2.25"
       }
     },
@@ -2826,13 +2914,14 @@
       }
     },
     "node_modules/@vue/compiler-core": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.13.tgz",
-      "integrity": "sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz",
+      "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==",
       "dev": true,
       "dependencies": {
-        "@babel/parser": "^7.23.5",
-        "@vue/shared": "3.3.13",
+        "@babel/parser": "^7.23.6",
+        "@vue/shared": "3.4.15",
+        "entities": "^4.5.0",
         "estree-walker": "^2.0.2",
         "source-map-js": "^1.0.2"
       }
@@ -2844,30 +2933,29 @@
       "dev": true
     },
     "node_modules/@vue/compiler-dom": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.13.tgz",
-      "integrity": "sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz",
+      "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==",
       "dev": true,
       "dependencies": {
-        "@vue/compiler-core": "3.3.13",
-        "@vue/shared": "3.3.13"
+        "@vue/compiler-core": "3.4.15",
+        "@vue/shared": "3.4.15"
       }
     },
     "node_modules/@vue/compiler-sfc": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.13.tgz",
-      "integrity": "sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz",
+      "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==",
       "dev": true,
       "dependencies": {
-        "@babel/parser": "^7.23.5",
-        "@vue/compiler-core": "3.3.13",
-        "@vue/compiler-dom": "3.3.13",
-        "@vue/compiler-ssr": "3.3.13",
-        "@vue/reactivity-transform": "3.3.13",
-        "@vue/shared": "3.3.13",
+        "@babel/parser": "^7.23.6",
+        "@vue/compiler-core": "3.4.15",
+        "@vue/compiler-dom": "3.4.15",
+        "@vue/compiler-ssr": "3.4.15",
+        "@vue/shared": "3.4.15",
         "estree-walker": "^2.0.2",
         "magic-string": "^0.30.5",
-        "postcss": "^8.4.32",
+        "postcss": "^8.4.33",
         "source-map-js": "^1.0.2"
       }
     },
@@ -2878,13 +2966,13 @@
       "dev": true
     },
     "node_modules/@vue/compiler-ssr": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.13.tgz",
-      "integrity": "sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz",
+      "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==",
       "dev": true,
       "dependencies": {
-        "@vue/compiler-dom": "3.3.13",
-        "@vue/shared": "3.3.13"
+        "@vue/compiler-dom": "3.4.15",
+        "@vue/shared": "3.4.15"
       }
     },
     "node_modules/@vue/devtools-api": {
@@ -2894,82 +2982,63 @@
       "dev": true
     },
     "node_modules/@vue/reactivity": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.13.tgz",
-      "integrity": "sha512-fjzCxceMahHhi4AxUBzQqqVhuA21RJ0COaWTbIBl1PruGW1CeY97louZzLi4smpYx+CHfFPPU/CS8NybbGvPKQ==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz",
+      "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==",
       "dev": true,
       "dependencies": {
-        "@vue/shared": "3.3.13"
+        "@vue/shared": "3.4.15"
       }
     },
-    "node_modules/@vue/reactivity-transform": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.13.tgz",
-      "integrity": "sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/parser": "^7.23.5",
-        "@vue/compiler-core": "3.3.13",
-        "@vue/shared": "3.3.13",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.30.5"
-      }
-    },
-    "node_modules/@vue/reactivity-transform/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==",
-      "dev": true
-    },
     "node_modules/@vue/runtime-core": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.13.tgz",
-      "integrity": "sha512-1TzA5TvGuh2zUwMJgdfvrBABWZ7y8kBwBhm7BXk8rvdx2SsgcGfz2ruv2GzuGZNvL1aKnK8CQMV/jFOrxNQUMA==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz",
+      "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==",
       "dev": true,
       "dependencies": {
-        "@vue/reactivity": "3.3.13",
-        "@vue/shared": "3.3.13"
+        "@vue/reactivity": "3.4.15",
+        "@vue/shared": "3.4.15"
       }
     },
     "node_modules/@vue/runtime-dom": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.13.tgz",
-      "integrity": "sha512-JJkpE8R/hJKXqVTgUoODwS5wqKtOsmJPEqmp90PDVGygtJ4C0PtOkcEYXwhiVEmef6xeXcIlrT3Yo5aQ4qkHhQ==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz",
+      "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==",
       "dev": true,
       "dependencies": {
-        "@vue/runtime-core": "3.3.13",
-        "@vue/shared": "3.3.13",
+        "@vue/runtime-core": "3.4.15",
+        "@vue/shared": "3.4.15",
         "csstype": "^3.1.3"
       }
     },
     "node_modules/@vue/server-renderer": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.13.tgz",
-      "integrity": "sha512-vSnN+nuf6iSqTL3Qgx/9A+BT+0Zf/VJOgF5uMZrKjYPs38GMYyAU1coDyBNHauehXDaP+zl73VhwWv0vBRBHcg==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz",
+      "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==",
       "dev": true,
       "dependencies": {
-        "@vue/compiler-ssr": "3.3.13",
-        "@vue/shared": "3.3.13"
+        "@vue/compiler-ssr": "3.4.15",
+        "@vue/shared": "3.4.15"
       },
       "peerDependencies": {
-        "vue": "3.3.13"
+        "vue": "3.4.15"
       }
     },
     "node_modules/@vue/shared": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.13.tgz",
-      "integrity": "sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz",
+      "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==",
       "dev": true
     },
     "node_modules/@vueuse/core": {
-      "version": "10.7.0",
-      "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.0.tgz",
-      "integrity": "sha512-4EUDESCHtwu44ZWK3Gc/hZUVhVo/ysvdtwocB5vcauSV4B7NiGY5972WnsojB3vRNdxvAt7kzJWE2h9h7C9d5w==",
+      "version": "10.7.2",
+      "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.2.tgz",
+      "integrity": "sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==",
       "dev": true,
       "dependencies": {
         "@types/web-bluetooth": "^0.0.20",
-        "@vueuse/metadata": "10.7.0",
-        "@vueuse/shared": "10.7.0",
+        "@vueuse/metadata": "10.7.2",
+        "@vueuse/shared": "10.7.2",
         "vue-demi": ">=0.14.6"
       },
       "funding": {
@@ -3003,12 +3072,12 @@
       }
     },
     "node_modules/@vueuse/math": {
-      "version": "10.7.0",
-      "resolved": "https://registry.npmjs.org/@vueuse/math/-/math-10.7.0.tgz",
-      "integrity": "sha512-JTHFTQ/Mr5nGe6YYC30evYna+981TR6HYFvjD83Aay2dLIEVZGRwM8+f6IxOGcoq9u95hFkhOcer/VsjIDvETg==",
+      "version": "10.7.2",
+      "resolved": "https://registry.npmjs.org/@vueuse/math/-/math-10.7.2.tgz",
+      "integrity": "sha512-Z1h/kdW5f4c/v/QOpWFFaEx4UaIt7xQTxoDnxQAx1gHGHpGYTtBlQHm80zrRodCz0auyBZMkALkCgKinzGggXw==",
       "dev": true,
       "dependencies": {
-        "@vueuse/shared": "10.7.0",
+        "@vueuse/shared": "10.7.2",
         "vue-demi": ">=0.14.6"
       },
       "funding": {
@@ -3042,9 +3111,9 @@
       }
     },
     "node_modules/@vueuse/metadata": {
-      "version": "10.7.0",
-      "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.0.tgz",
-      "integrity": "sha512-GlaH7tKP2iBCZ3bHNZ6b0cl9g0CJK8lttkBNUX156gWvNYhTKEtbweWLm9rxCPIiwzYcr/5xML6T8ZUEt+DkvA==",
+      "version": "10.7.2",
+      "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.2.tgz",
+      "integrity": "sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==",
       "dev": true,
       "funding": {
         "url": "https://github.com/sponsors/antfu"
@@ -3071,9 +3140,9 @@
       }
     },
     "node_modules/@vueuse/shared": {
-      "version": "10.7.0",
-      "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.0.tgz",
-      "integrity": "sha512-kc00uV6CiaTdc3i1CDC4a3lBxzaBE9AgYNtFN87B5OOscqeWElj/uza8qVDmk7/U8JbqoONLbtqiLJ5LGRuqlw==",
+      "version": "10.7.2",
+      "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.2.tgz",
+      "integrity": "sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==",
       "dev": true,
       "dependencies": {
         "vue-demi": ">=0.14.6"
@@ -3308,6 +3377,12 @@
         "readable-stream": "^3.4.0"
       }
     },
+    "node_modules/blueimp-md5": {
+      "version": "2.19.0",
+      "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
+      "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==",
+      "dev": true
+    },
     "node_modules/bplist-parser": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
@@ -4625,9 +4700,9 @@
       }
     },
     "node_modules/defu": {
-      "version": "6.1.3",
-      "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz",
-      "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==",
+      "version": "6.1.4",
+      "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
+      "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
       "dev": true
     },
     "node_modules/delaunator": {
@@ -4738,9 +4813,9 @@
       }
     },
     "node_modules/dompurify": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz",
-      "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==",
+      "version": "3.0.8",
+      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.8.tgz",
+      "integrity": "sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ==",
       "dev": true
     },
     "node_modules/domutils": {
@@ -4801,9 +4876,9 @@
       "dev": true
     },
     "node_modules/elkjs": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz",
-      "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==",
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.1.tgz",
+      "integrity": "sha512-JWKDyqAdltuUcyxaECtYG6H4sqysXSLeoXuGUBfRNESMTkj+w+qdb0jya8Z/WI0jVd03WQtCGhS6FOFtlhD5FQ==",
       "dev": true
     },
     "node_modules/emoji-regex": {
@@ -5164,9 +5239,9 @@
       }
     },
     "node_modules/follow-redirects": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
-      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+      "version": "1.15.5",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+      "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
       "dev": true,
       "funding": [
         {
@@ -5328,9 +5403,9 @@
       }
     },
     "node_modules/get-port-please": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.1.tgz",
-      "integrity": "sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==",
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz",
+      "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==",
       "dev": true
     },
     "node_modules/get-stream": {
@@ -5612,9 +5687,9 @@
       }
     },
     "node_modules/htmlparser2": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.0.0.tgz",
-      "integrity": "sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ==",
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz",
+      "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==",
       "dev": true,
       "funding": [
         "https://github.com/fb55/htmlparser2?sponsor=1",
@@ -6022,9 +6097,9 @@
       }
     },
     "node_modules/js-base64": {
-      "version": "3.7.5",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz",
-      "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==",
+      "version": "3.7.6",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.6.tgz",
+      "integrity": "sha512-NPrWuHFxFUknr1KqJRDgUQPexQF0uIJWjeT+2KjEePhitQxQEx5EJBG1lVn5/hc8aLycTpXrDOgPQ6Zq+EDiTA==",
       "dev": true
     },
     "node_modules/js-tokens": {
@@ -6528,13 +6603,13 @@
       }
     },
     "node_modules/markdown-it-shikiji": {
-      "version": "0.9.12",
-      "resolved": "https://registry.npmjs.org/markdown-it-shikiji/-/markdown-it-shikiji-0.9.12.tgz",
-      "integrity": "sha512-JfCGML9/ymRIY5d93OFvTK9cQVCX2hCnKjLLlcP7/8Gsvc5tWNV+IvvsKTIYAzwFrBOJZXYOUxgCRmebFeeXmg==",
+      "version": "0.9.19",
+      "resolved": "https://registry.npmjs.org/markdown-it-shikiji/-/markdown-it-shikiji-0.9.19.tgz",
+      "integrity": "sha512-AjGg991Tge1VbQb4whEvJ0Xa8Dopjowd0Mxy0ntzkCAuRwjNUhriGqu0AZEjM8Caab5+324VD8eEkPD7ihUIMA==",
       "dev": true,
       "dependencies": {
         "markdown-it": "^14.0.0",
-        "shikiji": "0.9.12"
+        "shikiji": "0.9.19"
       }
     },
     "node_modules/mdast-util-from-markdown": {
@@ -6602,9 +6677,9 @@
       }
     },
     "node_modules/mermaid": {
-      "version": "10.6.1",
-      "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.6.1.tgz",
-      "integrity": "sha512-Hky0/RpOw/1il9X8AvzOEChfJtVvmXm+y7JML5C//ePYMy0/9jCEmW1E1g86x9oDfW9+iVEdTV/i+M6KWRNs4A==",
+      "version": "10.7.0",
+      "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.7.0.tgz",
+      "integrity": "sha512-PsvGupPCkN1vemAAjScyw4pw34p4/0dZkSrqvAB26hUvJulOWGIwt35FZWmT9wPIi4r0QLa5X0PB4YLIGn0/YQ==",
       "dev": true,
       "dependencies": {
         "@braintree/sanitize-url": "^6.0.1",
@@ -6618,7 +6693,7 @@
         "dagre-d3-es": "7.0.10",
         "dayjs": "^1.11.7",
         "dompurify": "^3.0.5",
-        "elkjs": "^0.8.2",
+        "elkjs": "^0.9.0",
         "khroma": "^2.0.0",
         "lodash-es": "^4.17.21",
         "mdast-util-from-markdown": "^1.3.0",
@@ -7766,9 +7841,9 @@
       }
     },
     "node_modules/postcss": {
-      "version": "8.4.32",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
-      "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
+      "version": "8.4.33",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
+      "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
       "dev": true,
       "funding": [
         {
@@ -7844,9 +7919,9 @@
       }
     },
     "node_modules/prettier": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz",
-      "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==",
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz",
+      "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==",
       "dev": true,
       "bin": {
         "prettier": "bin/prettier.cjs"
@@ -8345,47 +8420,47 @@
     },
     "node_modules/shiki": {
       "name": "shikiji-compat",
-      "version": "0.9.12",
-      "resolved": "https://registry.npmjs.org/shikiji-compat/-/shikiji-compat-0.9.12.tgz",
-      "integrity": "sha512-PrdGN6fC4n6KRkptVNNZxWmGMac9UQ2MVP5eBghtSZMNU1yHeawAm8BHbyVtjb90dzxML7YvUAVqZhbo5ZF7pQ==",
+      "version": "0.9.19",
+      "resolved": "https://registry.npmjs.org/shikiji-compat/-/shikiji-compat-0.9.19.tgz",
+      "integrity": "sha512-W0qrnED9VnVOSgEsv+gAZasjpPM1eESBI84iPGSvVx/qwcqL9/n+p8QUPW1Rc3Y8o8pXjJLNZDeOS9lPzdYA0w==",
       "dev": true,
       "dependencies": {
-        "shikiji": "0.9.12",
-        "shikiji-transformers": "0.9.12"
+        "shikiji": "0.9.19",
+        "shikiji-transformers": "0.9.19"
       }
     },
     "node_modules/shikiji": {
-      "version": "0.9.12",
-      "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.9.12.tgz",
-      "integrity": "sha512-jYbulSGcPKYKu2uFZOSg4lgrF7s9s8/ITFzRvczE6633wypMjnnTcRnG/mCFe6v1Dbov7bRCMsXVINBUD2FV9w==",
+      "version": "0.9.19",
+      "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.9.19.tgz",
+      "integrity": "sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==",
       "dev": true,
       "dependencies": {
-        "shikiji-core": "0.9.12"
+        "shikiji-core": "0.9.19"
       }
     },
     "node_modules/shikiji-core": {
-      "version": "0.9.12",
-      "resolved": "https://registry.npmjs.org/shikiji-core/-/shikiji-core-0.9.12.tgz",
-      "integrity": "sha512-AYsAtsbZuq0FPT3mdskNMa+yxD5VwXrFC2sH7R2ELmncVGNYvSzR6Zlfq8iEzINq7/kKL5prtt81UFzFWTTbxQ==",
+      "version": "0.9.19",
+      "resolved": "https://registry.npmjs.org/shikiji-core/-/shikiji-core-0.9.19.tgz",
+      "integrity": "sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==",
       "dev": true
     },
     "node_modules/shikiji-transformers": {
-      "version": "0.9.12",
-      "resolved": "https://registry.npmjs.org/shikiji-transformers/-/shikiji-transformers-0.9.12.tgz",
-      "integrity": "sha512-ge+47j4MLTbKAnTnhTTolD9DKGW2Fhp80MV7Tb2E+p4HsJixu4slq2SDV/eFR34iH/egtyi/cjGMD8vJbNLBUA==",
+      "version": "0.9.19",
+      "resolved": "https://registry.npmjs.org/shikiji-transformers/-/shikiji-transformers-0.9.19.tgz",
+      "integrity": "sha512-lGLI7Z8frQrIBbhZ74/eiJtxMoCQRbpaHEB+gcfvdIy+ZFaAtXncJGnc52932/UET+Y4GyKtwwC/vjWUCp+c/Q==",
       "dev": true,
       "dependencies": {
-        "shikiji": "0.9.12"
+        "shikiji": "0.9.19"
       }
     },
     "node_modules/shikiji-twoslash": {
-      "version": "0.9.12",
-      "resolved": "https://registry.npmjs.org/shikiji-twoslash/-/shikiji-twoslash-0.9.12.tgz",
-      "integrity": "sha512-KeTK4cAsDH9NE+gG2iFgVShpz19RgzbBC+Cy0WMmUM3ivqciqhlQ/6QeskBVF7SZeopQq6xF5iIyTEPDqtZ8/w==",
+      "version": "0.9.19",
+      "resolved": "https://registry.npmjs.org/shikiji-twoslash/-/shikiji-twoslash-0.9.19.tgz",
+      "integrity": "sha512-wwF5GWEZuIFWjGioqPygcnnQmEduK5bdV9L2AzjmEVJD7Xt1Zg/K8bN7StxPBR/1xmbJ9RnHYeFvqCxySpXEsw==",
       "dev": true,
       "dependencies": {
         "@typescript/twoslash": "^3.2.4",
-        "shikiji-core": "0.9.12"
+        "shikiji-core": "0.9.19"
       }
     },
     "node_modules/signal-exit": {
@@ -8538,9 +8613,9 @@
       }
     },
     "node_modules/stylis": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz",
-      "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==",
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz",
+      "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==",
       "dev": true
     },
     "node_modules/supports-color": {
@@ -8791,14 +8866,14 @@
       "dev": true
     },
     "node_modules/unhead": {
-      "version": "1.8.9",
-      "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.8.9.tgz",
-      "integrity": "sha512-qqCNmA4KOEDjcl+OtRZTllGehXewcQ31zbHjvhl/jqCs2MfRcZoxFW1y7A4Y4BgR/O7PI89K+GoWGcxK3gn64Q==",
+      "version": "1.8.10",
+      "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.8.10.tgz",
+      "integrity": "sha512-dth8FvZkLriO5ZWWOBIYBNSfGiwJtKcqpPWpSOk/Z0e2jdlgwoZEWZHFyte0EKvmbZxKcsWNMqIuv7dEmS5yZQ==",
       "dev": true,
       "dependencies": {
-        "@unhead/dom": "1.8.9",
-        "@unhead/schema": "1.8.9",
-        "@unhead/shared": "1.8.9",
+        "@unhead/dom": "1.8.10",
+        "@unhead/schema": "1.8.10",
+        "@unhead/shared": "1.8.10",
         "hookable": "^5.5.3"
       },
       "funding": {
@@ -8876,31 +8951,31 @@
       }
     },
     "node_modules/unocss": {
-      "version": "0.58.0",
-      "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.58.0.tgz",
-      "integrity": "sha512-MSPRHxBqWN+1AHGV+J5uUy4//e6ZBK6O+ISzD0qrXcCD/GNtxk1+lYjOK2ltkUiKX539+/KF91vNxzhhwEf+xA==",
-      "dev": true,
-      "dependencies": {
-        "@unocss/astro": "0.58.0",
-        "@unocss/cli": "0.58.0",
-        "@unocss/core": "0.58.0",
-        "@unocss/extractor-arbitrary-variants": "0.58.0",
-        "@unocss/postcss": "0.58.0",
-        "@unocss/preset-attributify": "0.58.0",
-        "@unocss/preset-icons": "0.58.0",
-        "@unocss/preset-mini": "0.58.0",
-        "@unocss/preset-tagify": "0.58.0",
-        "@unocss/preset-typography": "0.58.0",
-        "@unocss/preset-uno": "0.58.0",
-        "@unocss/preset-web-fonts": "0.58.0",
-        "@unocss/preset-wind": "0.58.0",
-        "@unocss/reset": "0.58.0",
-        "@unocss/transformer-attributify-jsx": "0.58.0",
-        "@unocss/transformer-attributify-jsx-babel": "0.58.0",
-        "@unocss/transformer-compile-class": "0.58.0",
-        "@unocss/transformer-directives": "0.58.0",
-        "@unocss/transformer-variant-group": "0.58.0",
-        "@unocss/vite": "0.58.0"
+      "version": "0.58.3",
+      "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.58.3.tgz",
+      "integrity": "sha512-2rnvghfiIDRQ2cOrmN4P7J7xV2p3yBK+bPAt1aoUxCXcszkLczAnQzh9c7IZ+p70kSVstK45cJTYV6TMzOLF7Q==",
+      "dev": true,
+      "dependencies": {
+        "@unocss/astro": "0.58.3",
+        "@unocss/cli": "0.58.3",
+        "@unocss/core": "0.58.3",
+        "@unocss/extractor-arbitrary-variants": "0.58.3",
+        "@unocss/postcss": "0.58.3",
+        "@unocss/preset-attributify": "0.58.3",
+        "@unocss/preset-icons": "0.58.3",
+        "@unocss/preset-mini": "0.58.3",
+        "@unocss/preset-tagify": "0.58.3",
+        "@unocss/preset-typography": "0.58.3",
+        "@unocss/preset-uno": "0.58.3",
+        "@unocss/preset-web-fonts": "0.58.3",
+        "@unocss/preset-wind": "0.58.3",
+        "@unocss/reset": "0.58.3",
+        "@unocss/transformer-attributify-jsx": "0.58.3",
+        "@unocss/transformer-attributify-jsx-babel": "0.58.3",
+        "@unocss/transformer-compile-class": "0.58.3",
+        "@unocss/transformer-directives": "0.58.3",
+        "@unocss/transformer-variant-group": "0.58.3",
+        "@unocss/vite": "0.58.3"
       },
       "engines": {
         "node": ">=14"
@@ -8909,7 +8984,7 @@
         "url": "https://github.com/sponsors/antfu"
       },
       "peerDependencies": {
-        "@unocss/webpack": "0.58.0",
+        "@unocss/webpack": "0.58.3",
         "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0"
       },
       "peerDependenciesMeta": {
@@ -8943,9 +9018,9 @@
       }
     },
     "node_modules/unplugin-icons": {
-      "version": "0.18.1",
-      "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.18.1.tgz",
-      "integrity": "sha512-WzKu/eoq74YC7vyEAGsFebkRzsZrRkR4FUzLU6gbpfa7WRaVVpQS2n7LSxE1iRUN0scKL5b9bq+i0wucR+ttFQ==",
+      "version": "0.18.2",
+      "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.18.2.tgz",
+      "integrity": "sha512-OgZoIJHGubeJmc3KePMOy62ovtxPEJfNMlr5tU+1ZqHGpSXubg3fnqq28VPvLL0D5vKj2PRCJF9tVGbQ7vBXJQ==",
       "dev": true,
       "dependencies": {
         "@antfu/install-pkg": "^0.3.0",
@@ -9250,9 +9325,9 @@
       "dev": true
     },
     "node_modules/vite": {
-      "version": "5.0.10",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz",
-      "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==",
+      "version": "5.0.12",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz",
+      "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==",
       "dev": true,
       "dependencies": {
         "esbuild": "^0.19.3",
@@ -9335,12 +9410,14 @@
       }
     },
     "node_modules/vite-plugin-remote-assets": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/vite-plugin-remote-assets/-/vite-plugin-remote-assets-0.4.0.tgz",
-      "integrity": "sha512-cBUafEnFLiSsDNbsqDsIt6fuogptB9GboTgLJ7nGkSZrb/uSX8XjN/dXLMqNkxYI2nR5NlPIfkc83+Rg4OuxUg==",
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/vite-plugin-remote-assets/-/vite-plugin-remote-assets-0.4.1.tgz",
+      "integrity": "sha512-HSfIUiq9YniObqyQAXe5uQZR/SidnymyHw/Ep/wYOAWTWaZsctKoUir79S8PryK4BcjvBqBEB+SdqV7lfCsevA==",
       "dev": true,
       "dependencies": {
-        "axios": "^1.6.2",
+        "@antfu/utils": "^0.7.7",
+        "axios": "^1.6.3",
+        "blueimp-md5": "^2.19.0",
         "debug": "^4.3.4",
         "fs-extra": "^11.2.0",
         "magic-string": "^0.30.5"
@@ -9353,12 +9430,12 @@
       }
     },
     "node_modules/vite-plugin-remote-assets/node_modules/axios": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz",
-      "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==",
+      "version": "1.6.5",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz",
+      "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==",
       "dev": true,
       "dependencies": {
-        "follow-redirects": "^1.15.0",
+        "follow-redirects": "^1.15.4",
         "form-data": "^4.0.0",
         "proxy-from-env": "^1.1.0"
       }
@@ -9445,16 +9522,16 @@
       }
     },
     "node_modules/vue": {
-      "version": "3.3.13",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.13.tgz",
-      "integrity": "sha512-LDnUpQvDgsfc0u/YgtAgTMXJlJQqjkxW1PVcOnJA5cshPleULDjHi7U45pl2VJYazSSvLH8UKcid/kzH8I0a0Q==",
+      "version": "3.4.15",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz",
+      "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==",
       "dev": true,
       "dependencies": {
-        "@vue/compiler-dom": "3.3.13",
-        "@vue/compiler-sfc": "3.3.13",
-        "@vue/runtime-dom": "3.3.13",
-        "@vue/server-renderer": "3.3.13",
-        "@vue/shared": "3.3.13"
+        "@vue/compiler-dom": "3.4.15",
+        "@vue/compiler-sfc": "3.4.15",
+        "@vue/runtime-dom": "3.4.15",
+        "@vue/server-renderer": "3.4.15",
+        "@vue/shared": "3.4.15"
       },
       "peerDependencies": {
         "typescript": "*"
@@ -9503,9 +9580,9 @@
       }
     },
     "node_modules/web-worker": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz",
-      "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz",
+      "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==",
       "dev": true
     },
     "node_modules/webpack-sources": {
diff --git a/package.json b/package.json
index 94267bb..a38a5ea 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
     "howto-use-react-keys"
   ],
   "devDependencies": {
-    "@slidev/cli": "^0.46.1",
+    "@slidev/cli": "^0.46.2",
     "@slidev/theme-default": "^0.21.2",
     "@slidev/theme-seriph": "^0.21.3",
     "@swc/core": "^1.3.103",