diff --git a/.gitignore b/.gitignore
index 0592ec30af8ecaafd34798974544fd4087cab856..0dea1b881f19c986ccec58126f52cbca5ec6b6d6 100755
--- a/.gitignore
+++ b/.gitignore
@@ -14,4 +14,5 @@ scripts/Pfam-A.hmm.dat
 meili_data
 #refseq_res.csv
 *.pyc
-# pfam-a-hmm.csv
\ No newline at end of file
+# pfam-a-hmm.csv
+.vscode
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4a947922d8233505c34350b1bcf8732ffc33f6a2..98b94b0803c84246a262220e43d93f6030625743 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -492,7 +492,7 @@ build:prod:wiki:
 deploy:dev:
   extends: .deploy
   rules:
-    - if: $CI_COMMIT_BRANCH == "dev" || $CI_COMMIT_BRANCH == "distri-system-section"
+    - if: $CI_COMMIT_BRANCH == "dev" || $CI_COMMIT_BRANCH == "uniq-molstar-plugin-per-page"
   needs:
     - "build:dev:wiki"
   when: manual
diff --git a/components/AutocompleteMeiliFacets.vue b/components/AutocompleteMeiliFacets.vue
index fed95eeb55847f7041b242f50a044170ded88526..ff77c3d56e566a08afd9b9fb34424f30f6091368 100644
--- a/components/AutocompleteMeiliFacets.vue
+++ b/components/AutocompleteMeiliFacets.vue
@@ -193,6 +193,7 @@ function updateAutocompleteFocused(isFocused: boolean) {
 
 
 function emitUpdateModelValue(filters: MaybeRef<FilterItem[] | undefined>) {
+    console.log(filters)
     emit('update:modelValue', toValue(filters))
 
 }
diff --git a/components/ServerDbTable.vue b/components/ServerDbTable.vue
index 14eebd3eca3075c04c70f4cb2cdf6ea1778dae27..214e3d44b757680a6f49776ef3961d3209b0914e 100644
--- a/components/ServerDbTable.vue
+++ b/components/ServerDbTable.vue
@@ -4,7 +4,7 @@ import { useCsvDownload } from "@/composables/useCsvDownload"
 import { useMeiliFilters } from "@/composables/useMeiliFilters"
 import { useSlots } from 'vue'
 import { useDisplay } from "vuetify";
-import { useThrottleFn } from '@vueuse/core'
+import { toValue, useThrottleFn } from '@vueuse/core'
 import type { FacetInputItem, FilterItem } from '@/components/AutocompleteMeiliFacets.vue'
 import { useMeiliSearch } from "#imports"
 // import { saveAs } from "file-saver";
@@ -39,7 +39,7 @@ export interface Props {
     autocompleteMeiliFacetsProps: AutocompleteMeiliFacetProps
 }
 
-
+const msFilters = defineModel('msFilters')
 const props = withDefaults(defineProps<Props>(), {
     title: '',
     columnsToDownload: undefined,
@@ -52,7 +52,9 @@ const props = withDefaults(defineProps<Props>(), {
             facets: undefined
 
         }
-    }
+    },
+    msFilters: undefined
+
 });
 const slots = useSlots()
 const sortByRef = toRef(props.sortBy)
@@ -123,45 +125,10 @@ onBeforeMount(async () => {
     emitRefreshRes()
 })
 
-const msFilterCompo = ref<FilterItem[] | undefined>(undefined)
-
-
-const computedFilterStr = computed(() => {
-    const toValFilters = toValue(msFilterCompo)
-    let filtersStr: string | undefined = undefined
-    if (toValFilters !== undefined && toValFilters.length > 0) {
-        const tmpFilterItems = [...toValFilters]
-        if (tmpFilterItems.length % 4 === 0) {
-            tmpFilterItems.splice(-1)
-        }
-        filtersStr = "(" + tmpFilterItems.map((it, index) => {
-            const sanitizedValue = it.value.split("-").slice(0, -1).join("-")
-            if ((index + 1) % 4 === 3) {
-                return `"${sanitizedValue}"`
-            } else if ((index + 1) % 4 === 0) {
-                return ` ${sanitizedValue} `
-            }
-            else {
-                return `${sanitizedValue}`
-            }
-
-        }).join("") + ")"
-
-    }
-
-    return [filtersStr, props.numericalFilters].filter(f => f !== undefined && f !== null).join(" AND ")
-
-})
 
 
 const computedF = computed(() => toValue(props.numericalFilters))
-const { arrayFilters: computedFilter } = useMeiliFilters(msFilterCompo, computedF)
-// const computedFilter = computed(() => {
-//     const toValFilters = toValue(msFilterCompo)
-//     if (toValFilters !== undefined && toValFilters.length > 0) {
-//         meiliFilterAsArray
-//     }
-// })
+const { arrayFilters: computedFilter } = useMeiliFilters(msFilters, computedF)
 
 
 watch(computedFilter, () => {
@@ -185,14 +152,14 @@ const throttleSearch = useThrottleFn(async () => {
 
 
 const lastFilterItem = computed(() => {
-    const toValFilterItems = toValue(msFilterCompo)
+    const toValFilterItems = toValue(msFilters)
     if (toValFilterItems !== undefined && Array.isArray(toValFilterItems)) {
         return toValFilterItems.slice(-1)[0]
     }
 })
 
 const isValidFilters = computed(() => {
-    const toValFilterItems = toValue(msFilterCompo)
+    const toValFilterItems = toValue(msFilters)
     if (toValFilterItems === undefined || Array.isArray(toValFilterItems) && toValFilterItems?.length === 0) {
         return true
     }
@@ -249,10 +216,7 @@ watch(search, () => {
     // emitRefreshRes()
 
 })
-// watch(msFilterCompo, () => {
-//     searchOrFilter()
 
-// })
 
 async function downloadData() {
     pendingDownloadData.value = true
@@ -305,7 +269,7 @@ function focusedOrBlur(isFocused: boolean) {
                             @update:focused="focusedOrBlur"></v-text-field>
                     </v-card-text>
                     <v-card-text>
-                        <AutocompleteMeiliFacets v-model="msFilterCompo" v-bind="props.autocompleteMeiliFacetsProps"
+                        <AutocompleteMeiliFacets v-model="msFilters" v-bind="props.autocompleteMeiliFacetsProps"
                             :is-valid-filters="isValidFilters">
                         </AutocompleteMeiliFacets>
                     </v-card-text>
diff --git a/components/content/ArticleStructure.vue b/components/content/ArticleStructure.vue
new file mode 100644
index 0000000000000000000000000000000000000000..bbbae0e6c8b549b6462b951f382263603f0f58ae
--- /dev/null
+++ b/components/content/ArticleStructure.vue
@@ -0,0 +1,102 @@
+<script setup lang="ts">
+import { toValue } from '@vueuse/core';
+import MolstarPdbePlugin from './MolstarPdbePlugin.vue';
+
+
+const { page } = useContent();
+// get the structures
+const msIndexName = ref<string>("structure")
+const stuctureUrls = ref<string[] | undefined>(undefined)
+const headers = ref<Record<string, any>[]>([
+    { title: 'Structure', key: 'structure', sortable: false, removable: false, fixed: true, minWidth: "110px" },
+
+    { title: " System", key: "System" },
+    { title: "Gene name", key: "gene_name", removable: false },
+    { title: "Subtype", key: "subtype", removable: false },
+    { title: "Proteins in structure", key: 'proteins_in_the_prediction', sortable: false, removable: true },
+    { title: "System genes", key: "system_genes", sortable: false, removable: true },
+    { title: "Prediction type", key: "prediction_type", removable: true },
+    { title: "N genes in sys", key: "system_number_of_genes", removable: true },
+    { title: "pLDDT", key: "plddts", removable: true },
+    { title: "iptm+ptm", key: "iptm+ptm", removable: true },
+    { title: "pDockQ", key: "pDockQ", removable: true },
+])
+const groupBy = ref([
+    {
+        key: 'subtype',
+        order: 'asc',
+    },
+])
+
+
+function namesToCollapsibleChips(names: string[], systemDir: string, file: string | null = null) {
+    if (file === null) {
+        return names.filter((it) => it !== "").map(it => ({ title: it.split("__")[1] }))
+    } else {
+        return names.filter((it) => it !== "").map(it => ({ title: it.split("__")[1], href: `/wiki/${systemDir}/${file}` }))
+    }
+}
+function pdbNameToCif(pdbPath: string) {
+    const cifPath = pdbPath.split(".").slice(0, -1).join(".")
+    return `${cifPath}.cif`
+}
+function displayStructure(item) {
+    stuctureUrls.value = [`/${item.System_name_ok}/${pdbNameToCif(item.pdb)}`, `/${item.System_name_ok}/${item.pdb}`]
+}
+
+
+
+// ==================================================================================
+// ASYNC PART 
+const { data: structures, error, refresh } = await useAsyncMeiliSearch({
+    index: toValue(msIndexName),
+    query: "",
+    params: {
+        facets: ["*"],
+        filter: [`System='${toValue(page).title}'`, "completed='true'"],
+    }
+})
+
+if (error.value) {
+    throw createError(`Cannot get structure for system: ${page.title}`)
+}
+
+
+// watch(page() => {
+
+
+//     refresh()
+// })
+console.log(structures)
+</script>
+<template>
+    <v-card flat>
+        <v-data-table :headers="headers" :items="structures.hits" :group-by="groupBy">
+            <template #[`item.proteins_in_the_prediction`]="{ item }">
+                <CollapsibleChips
+                    :items="namesToCollapsibleChips(item.proteins_in_the_prediction, item.System_name_ok, item.fasta_file)">
+                </CollapsibleChips>
+            </template>
+            <template #[`item.system_genes`]="{ item }">
+                <CollapsibleChips :items="namesToCollapsibleChips(item.system_genes, item.System_name_ok)">
+                </CollapsibleChips>
+
+            </template>
+            <template v-slot:group-header="{ item, columns, toggleGroup, isGroupOpen }">
+                <tr>
+                    <td :colspan="columns.length">
+                        <VBtn :icon="isGroupOpen(item) ? '$expand' : '$next'" size="small" variant="text"
+                            @click="toggleGroup(item)"></VBtn>
+                        {{ item.value === 'na' ? 'No subtype' : item.value }}
+                    </td>
+                </tr>
+            </template>
+            <template #[`item.structure`]="{ item }">
+                <v-row no-gutters align="center">
+                    <v-btn v-if="item?.pdb && item.pdb !== 'na'" @click="displayStructure(item)">view</v-btn>
+                </v-row>
+            </template>
+        </v-data-table>
+        <PdbeMolstarPlugin v-model="stuctureUrls" />
+    </v-card>
+</template>
\ No newline at end of file
diff --git a/components/content/MolstarPdbePlugin.vue b/components/content/MolstarPdbePlugin.vue
index 83a69f03e78ee4ed7c27ed3b501330a3b176727a..114d01c68990afb6a18bc8e9ee0c06cb0cb1e5e7 100644
--- a/components/content/MolstarPdbePlugin.vue
+++ b/components/content/MolstarPdbePlugin.vue
@@ -11,11 +11,13 @@ import { useDisplay } from "vuetify";
 export interface Props {
     height?: number
     dataUrls?: string[]
-    dataUrl?: string
+    dataUrl?: string | undefined
     uniq?: boolean
     format?: "pdb" | "cif"
 }
 
+
+
 const { mobile } = useDisplay()
 const refinedDataUrls = computed(() => {
 
@@ -53,7 +55,8 @@ const refinedDataUrls = computed(() => {
 const props = withDefaults(defineProps<Props>(), {
     height: 600,
     uniq: false,
-    format: 'pdb'
+    format: 'pdb',
+    dataUrl: undefined
 })
 
 const { width, height } = useDisplay()
@@ -72,7 +75,6 @@ const computedHeight = computed(() => {
     return height.value - 250
 })
 
-const paeError: Ref<string | null> = ref(null)
 
 function closeStructure() {
     selectedPdb.value = null
diff --git a/components/content/PdbeMolstarPlugin.vue b/components/content/PdbeMolstarPlugin.vue
new file mode 100644
index 0000000000000000000000000000000000000000..bb1a3cee5973822db5331be5611d33a6629bf64a
--- /dev/null
+++ b/components/content/PdbeMolstarPlugin.vue
@@ -0,0 +1,189 @@
+<script setup lang="ts">
+import { withTrailingSlash, withLeadingSlash, joinURL } from 'ufo'
+import { useRuntimeConfig, computed, toValue } from '#imports'
+import type { MaybeRef } from "vue"
+import FoldseekDialog from '../FoldseekDialog.vue'
+
+useHead({
+    link: [
+        {
+            rel: 'stylesheet',
+            href: 'https://www.ebi.ac.uk/pdbe/pdb-component-library/css/pdbe-molstar-3.1.3.css'
+        },
+    ],
+    script: [
+        // Required for IE11
+        {
+            src: "https://cdn.jsdelivr.net/npm/babel-polyfill/dist/polyfill.min.js"
+        },
+        {
+            src: "https://cdn.jsdelivr.net/npm/@webcomponents/webcomponentsjs/webcomponents-lite.js"
+        },
+        {
+            type: "text/javascript",
+            src: "https://www.ebi.ac.uk/pdbe/pdb-component-library/js/pdbe-molstar-component-3.1.3.js",
+            // tagPosition: 'bodyClose'
+        }
+    ]
+})
+
+export interface Props {
+    height?: number
+    // dataUrls?: MaybeRef<string[] | undefined>
+    format?: "pdb" | "cif"
+}
+
+const props = withDefaults(defineProps<Props>(), {
+    height: 600,
+    format: 'pdb',
+    // dataUrls: undefined
+})
+
+const dataUrls = defineModel()
+const pdbeMolstarComponent = ref(null)
+
+const dialog = ref(false)
+const moleculeFormat: Ref<string> = ref("pdb")
+const selectedPdb: Ref<string | null> = ref(null)
+const structureToDownload: Ref<string | null> = ref(null)
+
+
+function refinedUrl(url: string) {
+    if (url?.startsWith('/') && !url.startsWith('//')) {
+        const _base = withLeadingSlash(withTrailingSlash(useRuntimeConfig().app.baseURL))
+        if (_base !== '/' && !url.startsWith(_base)) {
+            return joinURL(_base, url)
+        }
+    }
+    return url
+}
+function viewPdb(pdbPath: string | null) {
+    if (pdbPath !== null) {
+        dialog.value = true
+        const format = toValue(pdbPath)?.split(".").slice(-1)[0]?.toLowerCase() ?? "pdb"
+        moleculeFormat.value = format
+        if (pdbeMolstarComponent.value?.viewerInstance) {
+            const viewerInstance = pdbeMolstarComponent.value.viewerInstance
+            const customData = { url: pdbPath, format: format, binary: false }
+            viewerInstance.visual.update({ customData })
+
+        }
+    }
+}
+
+const refinedDataUrls = computed(() => {
+    const toValDataUrls = toValue(dataUrls)
+    if (toValDataUrls !== undefined && toValDataUrls.length > 0) {
+        return toValDataUrls.map((dataUrl) => {
+            return refinedUrl(dataUrl)
+            // return dataUrl
+        })
+    }
+    return toValDataUrls
+
+
+})
+function closeStructure() {
+    selectedPdb.value = null
+    dialog.value = false
+}
+watch(selectedPdb, (newSelectedPdb, prevSelectPdb) => {
+    viewPdb(newSelectedPdb)
+    structureToDownload.value = newSelectedPdb
+})
+
+watchEffect(() => {
+    const toValUrl = toValue(refinedDataUrls)
+    if (toValUrl?.length > 0) {
+        dialog.value = true
+    }
+    else {
+        dialog.value = false
+    }
+})
+
+</script>
+<template>
+    <v-dialog v-model="dialog" transition="dialog-bottom-transition" fullscreen :scrim="false">
+        <v-card flat :rounded="false">
+            <v-toolbar>
+                <v-toolbar-title>Structures</v-toolbar-title>
+                <v-select v-model="selectedPdb" label="Select PDB" :items="refinedDataUrls"
+                    hide-details="auto"></v-select>
+                <v-spacer></v-spacer>
+
+                <v-btn :disabled="!selectedPdb" icon="md:download" :href="structureToDownload"></v-btn>
+                <v-btn icon @click="closeStructure">
+                    <v-icon>mdi-close</v-icon>
+                </v-btn>
+
+            </v-toolbar>
+            <v-card-text>
+                <v-row>
+                    <v-col :cols="mobile ? 12 : 'auto'">
+                        <v-sheet v-if="selectedPdb"
+                            class="d-flex align-center justify-center flex-wrap text-center mx-auto px-4 my-3"
+                            :height="computedHeight" :width="computedWidth" style="position:relative;">
+                            <pdbe-molstar ref="pdbeMolstarComponent" :custom-data-url="selectedPdb" alphafold-view
+                                sequence-panel="true" landscape="false"
+                                :custom-data-format="moleculeFormat"></pdbe-molstar>
+                        </v-sheet>
+                    </v-col>
+                    <v-col v-if="moleculeFormat === 'cif'" :cols="mobile ? 12 : undefined">
+                        <v-img :src="selectedPaePath"></v-img>
+                        <v-card flat color="transparent">
+                            <v-card-title>Model Confidence</v-card-title>
+                            <v-card-text>
+                                AlphaFold produces a per-residue model
+                                confidence score (pLDDT) between 0 and 100. Some regions below 50 pLDDT may be
+                                unstructured
+                                in isolation.
+                            </v-card-text>
+                            <v-list>
+                                <v-list-item>
+                                    <template #prepend>
+                                        <div class="legendColor mr-2" style="background-color: rgb(0, 83, 214);">
+                                            &nbsp;</div>
+                                    </template>
+                                    <v-list-item-title>
+                                        Very high (pLDDT > 90)
+                                    </v-list-item-title>
+
+                                </v-list-item>
+                                <v-list-item>
+                                    <template #prepend>
+                                        <div class="legendColor mr-2" style="background-color: rgb(101, 203, 243);">
+                                            &nbsp;</div>
+                                    </template>
+                                    <v-list-item-title>
+                                        High (90 > pLDDT > 70)
+                                    </v-list-item-title>
+
+                                </v-list-item>
+                                <v-list-item>
+                                    <template #prepend>
+                                        <div class="legendColor mr-2" style="background-color: rgb(255, 219, 19);">
+                                            &nbsp;</div>
+                                    </template>
+                                    <v-list-item-title>
+                                        Low (70 > pLDDT > 50) </v-list-item-title>
+
+                                </v-list-item>
+                                <v-list-item>
+                                    <template #prepend>
+                                        <div class="legendColor mr-2" style="background-color: rgb(255, 125, 69);">
+                                            &nbsp;</div>
+                                    </template>
+                                    <v-list-item-title>
+                                        Very low (pLDDT &lt; 50) </v-list-item-title>
+
+                                </v-list-item>
+                            </v-list>
+                        </v-card>
+                    </v-col>
+                </v-row>
+            </v-card-text>
+        </v-card>
+    </v-dialog>
+
+</template>
\ No newline at end of file
diff --git a/components/content/StructureDb.vue b/components/content/StructureDb.vue
index 59db42f08ca3a2d213e3a977007d718603d36f81..380ce2bc38afb1e874ffa773d63cc951a3dd0c12 100644
--- a/components/content/StructureDb.vue
+++ b/components/content/StructureDb.vue
@@ -6,13 +6,12 @@ import { ServerDbTable } from "#components"
 
 import { withQuery, joinURL, withTrailingSlash } from 'ufo'
 
-
 interface Item {
-
     Foldseek_name: string
     System_name_ok: string
-
 }
+
+
 const sortBy: Ref<SortItem[]> = ref([{ key: 'System', order: "asc" }])
 const itemValue = ref("id");
 const dbName = ref("structure")
@@ -163,49 +162,60 @@ const { refinedUrl: downloadAllCifUrl } = useRefinedUrl("/df-all-cifs.tar.gz")
         :autocomplete-meili-facets-props="computedAutocompleteMeiliFacetsProps"
         :numerical-filters="toRef(numericalFilters)">
         <template #numerical-filters="{ search }">
-            <v-list>
-                <v-list-item>
-                    <v-list-item-title class="text-subtitle-1 text-medium-emphasis">
-                        pLDDT
-                    </v-list-item-title>
-                    <v-row>
-                        <v-col class="pt-8 pl-8" :lg="8">
-                            <v-range-slider v-model="plddtsRange" strict density="compact" hide-details="auto"
+            <v-row>
+                <v-col cols="12" md="4">
+                    <v-card flat variant="tonal">
+                        <v-card-item class="mb-4">
+                            <v-card-title> pLDDT
+                            </v-card-title>
+                        </v-card-item>
+                        <v-card-text class="pr-0">
+                            <v-range-slider v-model="plddtsRange" strict density="compact" hide-details="auto" class=""
                                 step="0.5" :min="0" :max="100" thumb-label="always" @update:modelValue="search()">
                                 <template #append>
-                                    <v-btn variant="text" icon="md:restart_alt" @click="plddtsReset()"></v-btn>
+                                    <v-btn variant="text" density="compact" icon="md:restart_alt"
+                                        @click="plddtsReset()"></v-btn>
                                 </template>
 
                             </v-range-slider>
-                        </v-col></v-row>
-                </v-list-item>
-                <v-list-item>
-                    <v-list-item-title class="text-subtitle-1 text-medium-emphasis">
-                        iptm+ptm
-                    </v-list-item-title>
-                    <v-row>
-                        <v-col class="pt-8 pl-8" :lg="8">
+                        </v-card-text>
+                    </v-card>
+                </v-col>
+                <v-col cols="12" md="4">
+                    <v-card flat variant="tonal">
+                        <v-card-item class="mb-4">
+                            <v-card-title> iptm+ptm
+                            </v-card-title>
+                        </v-card-item>
+                        <v-card-text class="pr-0">
                             <v-range-slider v-model="iptmRange" strict density="compact" hide-details="auto" step="0.1"
                                 :min="0" :max="1" thumb-label="always" @update:modelValue="search()">
                                 <template #append>
-                                    <v-btn variant="text" icon="md:restart_alt" @click="iptmReset()"></v-btn>
+                                    <v-btn variant="text" density="compact" icon="md:restart_alt"
+                                        @click="iptmReset()"></v-btn>
                                 </template>
                             </v-range-slider>
-                        </v-col></v-row>
-                </v-list-item>
-                <v-list-item>
-                    <v-list-item-title class="text-subtitle-1 text-medium-emphasis">pDockQ</v-list-item-title>
-                    <v-row>
-                        <v-col class="pt-8 pl-8" :lg="8">
+                        </v-card-text></v-card>
+                </v-col>
+
+                <v-col cols="12" md="4">
+                    <v-card flat variant="tonal">
+                        <v-card-item class="mb-4">
+                            <v-card-title> pDockQ
+                            </v-card-title>
+                        </v-card-item>
+                        <v-card-text class="pr-0">
                             <v-range-slider v-model="pdockqRange" density="compact" strict hide-details="auto"
                                 step="0.1" :min="0" :max="1" thumb-label="always" @update:modelValue="search()">
                                 <template #append>
-                                    <v-btn variant="text" icon="md:restart_alt" @click="pdockqReset()"></v-btn>
+                                    <v-btn variant="text" density="compact" icon="md:restart_alt"
+                                        @click="pdockqReset()"></v-btn>
                                 </template>
                             </v-range-slider>
-                        </v-col></v-row>
-                </v-list-item>
-            </v-list>
+                        </v-card-text>
+                    </v-card>
+                </v-col>
+            </v-row>
         </template>
         <template #[`item.Foldseek_name`]="{ item }">
             <FoldseekDialog v-if="item.Foldseek_name !== 'na'" :foldseek-path="toFolseekUrl(item)"></FoldseekDialog>
@@ -227,16 +237,6 @@ const { refinedUrl: downloadAllCifUrl } = useRefinedUrl("/df-all-cifs.tar.gz")
                     uniq format="cif">
                 </MolstarPdbePlugin>
             </v-row>
-            <!-- <v-row no-gutters align="center">
-                <MolstarPdbePlugin v-if="item?.pdb && item.pdb !== 'na'"
-                    :data-urls="[`/${item.System_name_ok}/${item.pdb}`]" uniq format="pdb">
-                </MolstarPdbePlugin>
-            </v-row> -->
-
-
-
-            <!-- <v-icon v-else color="warning" icon="md:dangerous"></v-icon> -->
-
         </template>
         <template #[`item.completed`]="{ item }">
             <v-icon v-if="item.completed" color="success" icon="md:check"></v-icon>
diff --git a/composables/useRefinedUrl.ts b/composables/useRefinedUrl.ts
index 9ac7397ff4f79894334609e1ab4674ffbef902bd..7120de550f55cb6b1de082afb6d3e3e058e8a9ed 100644
--- a/composables/useRefinedUrl.ts
+++ b/composables/useRefinedUrl.ts
@@ -1,19 +1,18 @@
-import { withTrailingSlash, withLeadingSlash, joinURL } from "ufo";
+import { withoutTrailingSlash, withLeadingSlash, joinURL } from "ufo";
 
-
-export function useRefinedUrl(url: string | Ref<string>) {
+export function useRefinedUrl(url: MaybeRef<string>) {
     const refinedUrl = computed(() => {
         const sanitzedUrl = toValue(url)
 
         if (sanitzedUrl.startsWith("/") && !sanitzedUrl.startsWith("//")) {
             const _base = withLeadingSlash(
-                withTrailingSlash(useRuntimeConfig().app.baseURL)
+                withoutTrailingSlash(useRuntimeConfig().app.baseURL)
             );
             if (_base !== "/" && !sanitzedUrl.startsWith(_base)) {
                 return joinURL(_base, sanitzedUrl);
             }
         }
-        return toValue(url);
+        return sanitzedUrl;
     });
     return { refinedUrl }
 }
\ No newline at end of file
diff --git a/content/3.defense-systems/avs.md b/content/3.defense-systems/avs.md
index c56bd7711cdfa1adc3000c135aefa544a773361a..64700d42bf68cc710e9d6639ac7419a7e16ace17 100644
--- a/content/3.defense-systems/avs.md
+++ b/content/3.defense-systems/avs.md
@@ -73,65 +73,12 @@ The system was detected in 366 different species.
 
 Proportion of genome encoding the Avs system for the 14 phyla with more than 50 genomes in the RefSeq database.
 
-## Structure
-### AVAST_I
-##### Example 1
+## Structures
 
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
-   - /avs/AVAST_I.AVAST_I__Avs1A.0.V.cif
-   - /avs/AVAST_I.AVAST_I__Avs1C.0.V.cif
-   - /avs/AVAST_I.AVAST_I__Avs1B.0.V.cif
 
----
+::article-structure
 ::
-### AVAST_II
-##### Example 1
-
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
-   - /avs/AVAST_II__Avs2A.cif
 
----
-::
-### AVAST_III
-##### Example 1
-
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
-   - /avs/AVAST_III.AVAST_III__Avs3B.0.V.cif
-   - /avs/AVAST_III.AVAST_III__Avs3A.0.V.cif
-
----
-::
-### AVAST_IV
-##### Example 1
-
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
-   - /avs/AVAST_IV__Avs4A.cif
-
----
-::
-### AVAST_V
-##### Example 1
-
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
-   - /avs/AVAST_V__Avs5A.cif
-
----
-::
 
 ## Experimental validation
 
diff --git a/package-lock.json b/package-lock.json
index 5e235c3d99a4202bc7c085e325f48bf0cbdf0a9f..92be4468f20ad15133c3d8512e710a16ec84c32d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -31,7 +31,7 @@
         "@unocss/preset-icons": "^0.58.3",
         "@vueuse/core": "^10.7.1",
         "@vueuse/nuxt": "^10.7.1",
-        "nuxt": "^3.9.1",
+        "nuxt": "^3.11.1",
         "nuxt-meilisearch": "^1.1.0",
         "vuetify-nuxt-module": "^0.9.0"
       }
@@ -1136,86 +1136,6 @@
         "@css-inline/css-inline-win32-x64-msvc": "0.13.0"
       }
     },
-    "node_modules/@css-inline/css-inline-darwin-arm64": {
-      "version": "0.13.0",
-      "resolved": "https://registry.npmjs.org/@css-inline/css-inline-darwin-arm64/-/css-inline-darwin-arm64-0.13.0.tgz",
-      "integrity": "sha512-A4QvlZdhp8v+3IHKF/UftRf5GrAVUMEHCGRuk2Dx594xn/UR4ieh+B70aMm5rfONh2hv5mlR9UcoYAkVpEQ99g==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@css-inline/css-inline-darwin-x64": {
-      "version": "0.13.0",
-      "resolved": "https://registry.npmjs.org/@css-inline/css-inline-darwin-x64/-/css-inline-darwin-x64-0.13.0.tgz",
-      "integrity": "sha512-px9z4ypzeECMyBEtlrNzTMpA1tnw5MmMIiMkBRhb8UGRr2pOBZY3yd/eEIxWzVVSPt0aIjVDwUOJ3+d0Z+BskA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@css-inline/css-inline-linux-arm-gnueabihf": {
-      "version": "0.13.0",
-      "resolved": "https://registry.npmjs.org/@css-inline/css-inline-linux-arm-gnueabihf/-/css-inline-linux-arm-gnueabihf-0.13.0.tgz",
-      "integrity": "sha512-+uo0coLQNgk/AKeOB8mXSRd8VIlUg38zRSB9B9q0ior9oBCDPtEdn1HuCSvWxHoOSJ8QNNk+uwbz0zW4CETzFw==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@css-inline/css-inline-linux-arm64-gnu": {
-      "version": "0.13.0",
-      "resolved": "https://registry.npmjs.org/@css-inline/css-inline-linux-arm64-gnu/-/css-inline-linux-arm64-gnu-0.13.0.tgz",
-      "integrity": "sha512-GVrsFbY5l0Hxyzxsm5S5JPGObvHm/Ybf2wZgnWBsQigxqGtr1FL535HaTwEnq6aHOpH3f08gR5Vx33gB7jG4pw==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@css-inline/css-inline-linux-arm64-musl": {
-      "version": "0.13.0",
-      "resolved": "https://registry.npmjs.org/@css-inline/css-inline-linux-arm64-musl/-/css-inline-linux-arm64-musl-0.13.0.tgz",
-      "integrity": "sha512-V5h5+CRnE01EgoafI/kyjEcM8zvN+sKLnp17Aq9LqQfsut7mO3i72d8g/xeVC37DCLoGQFLvDCzbze2NbF2dIQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
     "node_modules/@css-inline/css-inline-linux-x64-gnu": {
       "version": "0.13.0",
       "resolved": "https://registry.npmjs.org/@css-inline/css-inline-linux-x64-gnu/-/css-inline-linux-x64-gnu-0.13.0.tgz",
@@ -1257,26 +1177,10 @@
         "node": ">= 10"
       }
     },
-    "node_modules/@css-inline/css-inline-win32-x64-msvc": {
-      "version": "0.13.0",
-      "resolved": "https://registry.npmjs.org/@css-inline/css-inline-win32-x64-msvc/-/css-inline-win32-x64-msvc-0.13.0.tgz",
-      "integrity": "sha512-6VFhFSXp4FH+NzJhLd6fFi7jKCPvIRW+vq0tV+CPuiQ3zPzMfC9nIk8sB/1VJR8EcvBAjMV53YnacuDjRFRT9g==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
     "node_modules/@esbuild/aix-ppc64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz",
-      "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
+      "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
       "cpu": [
         "ppc64"
       ],
@@ -1290,9 +1194,9 @@
       }
     },
     "node_modules/@esbuild/android-arm": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz",
-      "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
+      "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
       "cpu": [
         "arm"
       ],
@@ -1306,9 +1210,9 @@
       }
     },
     "node_modules/@esbuild/android-arm64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz",
-      "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
+      "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
       "cpu": [
         "arm64"
       ],
@@ -1322,9 +1226,9 @@
       }
     },
     "node_modules/@esbuild/android-x64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz",
-      "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
+      "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
       "cpu": [
         "x64"
       ],
@@ -1338,9 +1242,9 @@
       }
     },
     "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz",
-      "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
+      "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
       "cpu": [
         "arm64"
       ],
@@ -1354,9 +1258,9 @@
       }
     },
     "node_modules/@esbuild/darwin-x64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz",
-      "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
+      "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
       "cpu": [
         "x64"
       ],
@@ -1370,9 +1274,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz",
-      "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
+      "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
       "cpu": [
         "arm64"
       ],
@@ -1386,9 +1290,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz",
-      "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
+      "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
       "cpu": [
         "x64"
       ],
@@ -1402,9 +1306,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz",
-      "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
+      "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
       "cpu": [
         "arm"
       ],
@@ -1418,9 +1322,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz",
-      "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
+      "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
       "cpu": [
         "arm64"
       ],
@@ -1434,9 +1338,9 @@
       }
     },
     "node_modules/@esbuild/linux-ia32": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz",
-      "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
+      "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
       "cpu": [
         "ia32"
       ],
@@ -1450,9 +1354,9 @@
       }
     },
     "node_modules/@esbuild/linux-loong64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz",
-      "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
+      "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
       "cpu": [
         "loong64"
       ],
@@ -1466,9 +1370,9 @@
       }
     },
     "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz",
-      "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
+      "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
       "cpu": [
         "mips64el"
       ],
@@ -1482,9 +1386,9 @@
       }
     },
     "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz",
-      "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
+      "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
       "cpu": [
         "ppc64"
       ],
@@ -1498,9 +1402,9 @@
       }
     },
     "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz",
-      "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
+      "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
       "cpu": [
         "riscv64"
       ],
@@ -1514,9 +1418,9 @@
       }
     },
     "node_modules/@esbuild/linux-s390x": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz",
-      "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
+      "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
       "cpu": [
         "s390x"
       ],
@@ -1530,9 +1434,9 @@
       }
     },
     "node_modules/@esbuild/linux-x64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz",
-      "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
+      "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
       "cpu": [
         "x64"
       ],
@@ -1546,9 +1450,9 @@
       }
     },
     "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz",
-      "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
+      "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
       "cpu": [
         "x64"
       ],
@@ -1562,9 +1466,9 @@
       }
     },
     "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz",
-      "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
+      "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
       "cpu": [
         "x64"
       ],
@@ -1578,9 +1482,9 @@
       }
     },
     "node_modules/@esbuild/sunos-x64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz",
-      "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
+      "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
       "cpu": [
         "x64"
       ],
@@ -1594,9 +1498,9 @@
       }
     },
     "node_modules/@esbuild/win32-arm64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz",
-      "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
+      "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
       "cpu": [
         "arm64"
       ],
@@ -1610,9 +1514,9 @@
       }
     },
     "node_modules/@esbuild/win32-ia32": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz",
-      "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
+      "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
       "cpu": [
         "ia32"
       ],
@@ -1626,9 +1530,9 @@
       }
     },
     "node_modules/@esbuild/win32-x64": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz",
-      "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
+      "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
       "cpu": [
         "x64"
       ],
@@ -2251,9 +2155,9 @@
       }
     },
     "node_modules/@mapbox/node-pre-gyp/node_modules/detect-libc": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
-      "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+      "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
       "dev": true,
       "engines": {
         "node": ">=8"
@@ -2788,12 +2692,12 @@
       }
     },
     "node_modules/@nuxt/kit": {
-      "version": "3.10.3",
-      "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.10.3.tgz",
-      "integrity": "sha512-PUjYB9Mvx0qD9H1QZBwwtY4fLlCLET+Mm9BVqUOtXCaGoXd6u6BE4e/dGFPk2UEKkIcDGrUMSbqkHYvsEuK9NQ==",
+      "version": "3.11.1",
+      "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.11.1.tgz",
+      "integrity": "sha512-8VVlhaY4N+wipgHmSXP+gLM+esms9TEBz13I/J++PbOUJuf2cJlUUTyqMoRVL0xudVKK/8fJgSndRkyidy1m2w==",
       "dependencies": {
-        "@nuxt/schema": "3.10.3",
-        "c12": "^1.9.0",
+        "@nuxt/schema": "3.11.1",
+        "c12": "^1.10.0",
         "consola": "^3.2.3",
         "defu": "^6.1.4",
         "globby": "^14.0.1",
@@ -2801,12 +2705,12 @@
         "ignore": "^5.3.1",
         "jiti": "^1.21.0",
         "knitwork": "^1.0.0",
-        "mlly": "^1.6.0",
+        "mlly": "^1.6.1",
         "pathe": "^1.1.2",
         "pkg-types": "^1.0.3",
         "scule": "^1.3.0",
         "semver": "^7.6.0",
-        "ufo": "^1.4.0",
+        "ufo": "^1.5.2",
         "unctx": "^2.3.1",
         "unimport": "^3.7.1",
         "untyped": "^1.4.2"
@@ -2816,9 +2720,9 @@
       }
     },
     "node_modules/@nuxt/schema": {
-      "version": "3.10.3",
-      "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.10.3.tgz",
-      "integrity": "sha512-a4cYbeskEVBPazgAhvUGkL/j7ho/iPWMK3vCEm6dRMjSqHVEITRosrj0aMfLbRrDpTrMjlRs0ZitxiaUfE/p5Q==",
+      "version": "3.11.1",
+      "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.11.1.tgz",
+      "integrity": "sha512-XyGlJsf3DtkouBCvBHlvjz+xvN4vza3W7pY3YBNMnktxlMQtfFiF3aB3A2NGLmBnJPqD3oY0j7lljraELb5hkg==",
       "dependencies": {
         "@nuxt/ui-templates": "^1.3.1",
         "consola": "^3.2.3",
@@ -2828,7 +2732,7 @@
         "pkg-types": "^1.0.3",
         "scule": "^1.3.0",
         "std-env": "^3.7.0",
-        "ufo": "^1.4.0",
+        "ufo": "^1.5.2",
         "unimport": "^3.7.1",
         "untyped": "^1.4.2"
       },
@@ -2870,43 +2774,43 @@
       "integrity": "sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA=="
     },
     "node_modules/@nuxt/vite-builder": {
-      "version": "3.10.3",
-      "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.10.3.tgz",
-      "integrity": "sha512-BqkbrYkEk1AVUJleofbqTRV+ltf2p1CDjGDK78zENPCgrSABlj4F4oK8rze8vmRY5qoH7kMZxgMa2dXVXCp6OA==",
+      "version": "3.11.1",
+      "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.11.1.tgz",
+      "integrity": "sha512-8DVK2Jb9xgfnvTfKr5mL3UDdAIrd3q3F4EmoVsXVKJe8NTt9LW38QdGwGViIQm9wzLDDEo0mgWF+n7WoGEH0xQ==",
       "dev": true,
       "dependencies": {
-        "@nuxt/kit": "3.10.3",
+        "@nuxt/kit": "3.11.1",
         "@rollup/plugin-replace": "^5.0.5",
         "@vitejs/plugin-vue": "^5.0.4",
         "@vitejs/plugin-vue-jsx": "^3.1.0",
-        "autoprefixer": "^10.4.17",
+        "autoprefixer": "^10.4.18",
         "clear": "^0.1.0",
         "consola": "^3.2.3",
-        "cssnano": "^6.0.3",
+        "cssnano": "^6.1.0",
         "defu": "^6.1.4",
-        "esbuild": "^0.20.1",
+        "esbuild": "^0.20.2",
         "escape-string-regexp": "^5.0.0",
         "estree-walker": "^3.0.3",
         "externality": "^1.0.2",
         "fs-extra": "^11.2.0",
         "get-port-please": "^3.1.2",
-        "h3": "^1.10.2",
+        "h3": "^1.11.1",
         "knitwork": "^1.0.0",
-        "magic-string": "^0.30.7",
-        "mlly": "^1.6.0",
+        "magic-string": "^0.30.8",
+        "mlly": "^1.6.1",
         "ohash": "^1.1.3",
         "pathe": "^1.1.2",
         "perfect-debounce": "^1.0.0",
         "pkg-types": "^1.0.3",
-        "postcss": "^8.4.35",
+        "postcss": "^8.4.36",
         "rollup-plugin-visualizer": "^5.12.0",
         "std-env": "^3.7.0",
         "strip-literal": "^2.0.0",
-        "ufo": "^1.4.0",
+        "ufo": "^1.5.2",
         "unenv": "^1.9.0",
-        "unplugin": "^1.7.1",
-        "vite": "^5.1.4",
-        "vite-node": "^1.3.1",
+        "unplugin": "^1.10.0",
+        "vite": "^5.1.6",
+        "vite-node": "^1.4.0",
         "vite-plugin-checker": "^0.6.4",
         "vue-bundle-renderer": "^2.0.0"
       },
@@ -3091,17 +2995,17 @@
         "@parcel/watcher-win32-x64": "2.4.1"
       }
     },
-    "node_modules/@parcel/watcher-android-arm64": {
+    "node_modules/@parcel/watcher-linux-x64-glibc": {
       "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz",
-      "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
+      "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
       "cpu": [
-        "arm64"
+        "x64"
       ],
       "dev": true,
       "optional": true,
       "os": [
-        "android"
+        "linux"
       ],
       "engines": {
         "node": ">= 10.0.0"
@@ -3111,17 +3015,17 @@
         "url": "https://opencollective.com/parcel"
       }
     },
-    "node_modules/@parcel/watcher-darwin-arm64": {
+    "node_modules/@parcel/watcher-linux-x64-musl": {
       "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
-      "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
+      "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
       "cpu": [
-        "arm64"
+        "x64"
       ],
       "dev": true,
       "optional": true,
       "os": [
-        "darwin"
+        "linux"
       ],
       "engines": {
         "node": ">= 10.0.0"
@@ -3131,18 +3035,19 @@
         "url": "https://opencollective.com/parcel"
       }
     },
-    "node_modules/@parcel/watcher-darwin-x64": {
+    "node_modules/@parcel/watcher-wasm": {
       "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
-      "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
-      "cpu": [
-        "x64"
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz",
+      "integrity": "sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==",
+      "bundleDependencies": [
+        "napi-wasm"
       ],
       "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
+      "dependencies": {
+        "is-glob": "^4.0.3",
+        "micromatch": "^4.0.5",
+        "napi-wasm": "^1.1.0"
+      },
       "engines": {
         "node": ">= 10.0.0"
       },
@@ -3151,72 +3056,80 @@
         "url": "https://opencollective.com/parcel"
       }
     },
-    "node_modules/@parcel/watcher-freebsd-x64": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz",
-      "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==",
-      "cpu": [
-        "x64"
-      ],
+    "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": {
+      "version": "1.1.0",
       "dev": true,
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">= 10.0.0"
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/@pinia/nuxt": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/@pinia/nuxt/-/nuxt-0.5.1.tgz",
+      "integrity": "sha512-6wT6TqY81n+7/x3Yhf0yfaJVKkZU42AGqOR0T3+UvChcaOJhSma7OWPN64v+ptYlznat+fS1VTwNAcbi2lzHnw==",
+      "dependencies": {
+        "@nuxt/kit": "^3.5.0",
+        "pinia": ">=2.1.7"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
+        "url": "https://github.com/sponsors/posva"
       }
     },
-    "node_modules/@parcel/watcher-linux-arm-glibc": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz",
-      "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==",
-      "cpu": [
-        "arm"
-      ],
+    "node_modules/@pkgjs/parseargs": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+      "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
       "dev": true,
       "optional": true,
-      "os": [
-        "linux"
-      ],
       "engines": {
-        "node": ">= 10.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
+        "node": ">=14"
       }
     },
-    "node_modules/@parcel/watcher-linux-arm64-glibc": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz",
-      "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==",
-      "cpu": [
-        "arm64"
-      ],
+    "node_modules/@polka/url": {
+      "version": "1.0.0-next.25",
+      "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz",
+      "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==",
+      "dev": true
+    },
+    "node_modules/@replit/codemirror-indentation-markers": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/@replit/codemirror-indentation-markers/-/codemirror-indentation-markers-6.5.0.tgz",
+      "integrity": "sha512-5RgeuQ6erfROi1EVI2X7G4UR+KByjb07jhYMynvpvlrV22JlnARifmKMGEUKy0pKcxBNfwbFqoUlTYHPgyZNlg==",
+      "dev": true,
+      "peerDependencies": {
+        "@codemirror/language": "^6.0.0",
+        "@codemirror/state": "^6.0.0",
+        "@codemirror/view": "^6.0.0"
+      }
+    },
+    "node_modules/@resvg/resvg-js": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.0.tgz",
+      "integrity": "sha512-Tf3YpbBKcQn991KKcw/vg7vZf98v01seSv6CVxZBbRkL/xyjnoYB6KgrFL6zskT1A4dWC/vg77KyNOW+ePaNlA==",
       "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
       "engines": {
-        "node": ">= 10.0.0"
+        "node": ">= 10"
       },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
+      "optionalDependencies": {
+        "@resvg/resvg-js-android-arm-eabi": "2.6.0",
+        "@resvg/resvg-js-android-arm64": "2.6.0",
+        "@resvg/resvg-js-darwin-arm64": "2.6.0",
+        "@resvg/resvg-js-darwin-x64": "2.6.0",
+        "@resvg/resvg-js-linux-arm-gnueabihf": "2.6.0",
+        "@resvg/resvg-js-linux-arm64-gnu": "2.6.0",
+        "@resvg/resvg-js-linux-arm64-musl": "2.6.0",
+        "@resvg/resvg-js-linux-x64-gnu": "2.6.0",
+        "@resvg/resvg-js-linux-x64-musl": "2.6.0",
+        "@resvg/resvg-js-win32-arm64-msvc": "2.6.0",
+        "@resvg/resvg-js-win32-ia32-msvc": "2.6.0",
+        "@resvg/resvg-js-win32-x64-msvc": "2.6.0"
       }
     },
-    "node_modules/@parcel/watcher-linux-arm64-musl": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz",
-      "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==",
+    "node_modules/@resvg/resvg-js-linux-x64-gnu": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.6.0.tgz",
+      "integrity": "sha512-n3zC8DWsvxC1AwxpKFclIPapDFibs5XdIRoV/mcIlxlh0vseW1F49b97F33BtJQRmlntsqqN6GMMqx8byB7B+Q==",
       "cpu": [
-        "arm64"
+        "x64"
       ],
       "dev": true,
       "optional": true,
@@ -3224,17 +3137,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">= 10.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
+        "node": ">= 10"
       }
     },
-    "node_modules/@parcel/watcher-linux-x64-glibc": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
-      "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
+    "node_modules/@resvg/resvg-js-linux-x64-musl": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.6.0.tgz",
+      "integrity": "sha512-n4tasK1HOlAxdTEROgYA1aCfsEKk0UOFDNd/AQTTZlTmCbHKXPq+O8npaaKlwXquxlVK8vrkcWbksbiGqbCAcw==",
       "cpu": [
         "x64"
       ],
@@ -3243,371 +3152,6 @@
       "os": [
         "linux"
       ],
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
-      }
-    },
-    "node_modules/@parcel/watcher-linux-x64-musl": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
-      "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
-      }
-    },
-    "node_modules/@parcel/watcher-wasm": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz",
-      "integrity": "sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==",
-      "bundleDependencies": [
-        "napi-wasm"
-      ],
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.3",
-        "micromatch": "^4.0.5",
-        "napi-wasm": "^1.1.0"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
-      }
-    },
-    "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": {
-      "version": "1.1.0",
-      "dev": true,
-      "inBundle": true,
-      "license": "MIT"
-    },
-    "node_modules/@parcel/watcher-win32-arm64": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz",
-      "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
-      }
-    },
-    "node_modules/@parcel/watcher-win32-ia32": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz",
-      "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
-      }
-    },
-    "node_modules/@parcel/watcher-win32-x64": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz",
-      "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
-      }
-    },
-    "node_modules/@pinia/nuxt": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/@pinia/nuxt/-/nuxt-0.5.1.tgz",
-      "integrity": "sha512-6wT6TqY81n+7/x3Yhf0yfaJVKkZU42AGqOR0T3+UvChcaOJhSma7OWPN64v+ptYlznat+fS1VTwNAcbi2lzHnw==",
-      "dependencies": {
-        "@nuxt/kit": "^3.5.0",
-        "pinia": ">=2.1.7"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/posva"
-      }
-    },
-    "node_modules/@pkgjs/parseargs": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
-      "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
-      "dev": true,
-      "optional": true,
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/@polka/url": {
-      "version": "1.0.0-next.25",
-      "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz",
-      "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==",
-      "dev": true
-    },
-    "node_modules/@replit/codemirror-indentation-markers": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/@replit/codemirror-indentation-markers/-/codemirror-indentation-markers-6.5.0.tgz",
-      "integrity": "sha512-5RgeuQ6erfROi1EVI2X7G4UR+KByjb07jhYMynvpvlrV22JlnARifmKMGEUKy0pKcxBNfwbFqoUlTYHPgyZNlg==",
-      "dev": true,
-      "peerDependencies": {
-        "@codemirror/language": "^6.0.0",
-        "@codemirror/state": "^6.0.0",
-        "@codemirror/view": "^6.0.0"
-      }
-    },
-    "node_modules/@resvg/resvg-js": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.0.tgz",
-      "integrity": "sha512-Tf3YpbBKcQn991KKcw/vg7vZf98v01seSv6CVxZBbRkL/xyjnoYB6KgrFL6zskT1A4dWC/vg77KyNOW+ePaNlA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 10"
-      },
-      "optionalDependencies": {
-        "@resvg/resvg-js-android-arm-eabi": "2.6.0",
-        "@resvg/resvg-js-android-arm64": "2.6.0",
-        "@resvg/resvg-js-darwin-arm64": "2.6.0",
-        "@resvg/resvg-js-darwin-x64": "2.6.0",
-        "@resvg/resvg-js-linux-arm-gnueabihf": "2.6.0",
-        "@resvg/resvg-js-linux-arm64-gnu": "2.6.0",
-        "@resvg/resvg-js-linux-arm64-musl": "2.6.0",
-        "@resvg/resvg-js-linux-x64-gnu": "2.6.0",
-        "@resvg/resvg-js-linux-x64-musl": "2.6.0",
-        "@resvg/resvg-js-win32-arm64-msvc": "2.6.0",
-        "@resvg/resvg-js-win32-ia32-msvc": "2.6.0",
-        "@resvg/resvg-js-win32-x64-msvc": "2.6.0"
-      }
-    },
-    "node_modules/@resvg/resvg-js-android-arm-eabi": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-2.6.0.tgz",
-      "integrity": "sha512-lJnZ/2P5aMocrFMW7HWhVne5gH82I8xH6zsfH75MYr4+/JOaVcGCTEQ06XFohGMdYRP3v05SSPLPvTM/RHjxfA==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-android-arm64": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-2.6.0.tgz",
-      "integrity": "sha512-N527f529bjMwYWShZYfBD60dXA4Fux+D695QsHQ93BDYZSHUoOh1CUGUyICevnTxs7VgEl98XpArmUWBZQVMfQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-darwin-arm64": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-2.6.0.tgz",
-      "integrity": "sha512-MabUKLVayEwlPo0mIqAmMt+qESN8LltCvv5+GLgVga1avpUrkxj/fkU1TKm8kQegutUjbP/B0QuMuUr0uhF8ew==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-darwin-x64": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-2.6.0.tgz",
-      "integrity": "sha512-zrFetdnSw/suXjmyxSjfDV7i61hahv6DDG6kM7BYN2yJ3Es5+BZtqYZTcIWogPJedYKmzN1YTMWGd/3f0ubFiA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-linux-arm-gnueabihf": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-2.6.0.tgz",
-      "integrity": "sha512-sH4gxXt7v7dGwjGyzLwn7SFGvwZG6DQqLaZ11MmzbCwd9Zosy1TnmrMJfn6TJ7RHezmQMgBPi18bl55FZ1AT4A==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-linux-arm64-gnu": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-2.6.0.tgz",
-      "integrity": "sha512-fCyMncqCJtrlANADIduYF4IfnWQ295UKib7DAxFXQhBsM9PLDTpizr0qemZcCNadcwSVHnAIzL4tliZhCM8P6A==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-linux-arm64-musl": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-2.6.0.tgz",
-      "integrity": "sha512-ouLjTgBQHQyxLht4FdMPTvuY8xzJigM9EM2Tlu0llWkN1mKyTQrvYWi6TA6XnKdzDJHy7ZLpWpjZi7F5+Pg+Vg==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-linux-x64-gnu": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.6.0.tgz",
-      "integrity": "sha512-n3zC8DWsvxC1AwxpKFclIPapDFibs5XdIRoV/mcIlxlh0vseW1F49b97F33BtJQRmlntsqqN6GMMqx8byB7B+Q==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-linux-x64-musl": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.6.0.tgz",
-      "integrity": "sha512-n4tasK1HOlAxdTEROgYA1aCfsEKk0UOFDNd/AQTTZlTmCbHKXPq+O8npaaKlwXquxlVK8vrkcWbksbiGqbCAcw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-win32-arm64-msvc": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-2.6.0.tgz",
-      "integrity": "sha512-X2+EoBJFwDI5LDVb51Sk7ldnVLitMGr9WwU/i21i3fAeAXZb3hM16k67DeTy16OYkT2dk/RfU1tP1wG+rWbz2Q==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-win32-ia32-msvc": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-2.6.0.tgz",
-      "integrity": "sha512-L7oevWjQoUgK5W1fCKn0euSVemhDXVhrjtwqpc7MwBKKimYeiOshO1Li1pa8bBt5PESahenhWgdB6lav9O0fEg==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/@resvg/resvg-js-win32-x64-msvc": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-2.6.0.tgz",
-      "integrity": "sha512-8lJlghb+Unki5AyKgsnFbRJwkEj9r1NpwyuBG8yEJiG1W9eEGl03R3I7bsVa3haof/3J1NlWf0rzSa1G++A2iw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
       "engines": {
         "node": ">= 10"
       }
@@ -3744,174 +3288,70 @@
           "optional": true
         }
       }
-    },
-    "node_modules/@rollup/plugin-replace": {
-      "version": "5.0.5",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz",
-      "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==",
-      "dev": true,
-      "dependencies": {
-        "@rollup/pluginutils": "^5.0.1",
-        "magic-string": "^0.30.3"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
-      },
-      "peerDependenciesMeta": {
-        "rollup": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@rollup/plugin-terser": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
-      "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
-      "dev": true,
-      "dependencies": {
-        "serialize-javascript": "^6.0.1",
-        "smob": "^1.0.0",
-        "terser": "^5.17.4"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^2.0.0||^3.0.0||^4.0.0"
-      },
-      "peerDependenciesMeta": {
-        "rollup": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@rollup/pluginutils": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
-      "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "estree-walker": "^2.0.2",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
-      },
-      "peerDependenciesMeta": {
-        "rollup": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@rollup/rollup-android-arm-eabi": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz",
-      "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ]
-    },
-    "node_modules/@rollup/rollup-android-arm64": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz",
-      "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ]
-    },
-    "node_modules/@rollup/rollup-darwin-arm64": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz",
-      "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ]
-    },
-    "node_modules/@rollup/rollup-darwin-x64": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz",
-      "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz",
-      "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm64-gnu": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz",
-      "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/@rollup/rollup-linux-arm64-musl": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz",
-      "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==",
-      "cpu": [
-        "arm64"
-      ],
+    },
+    "node_modules/@rollup/plugin-replace": {
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz",
+      "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==",
       "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ]
+      "dependencies": {
+        "@rollup/pluginutils": "^5.0.1",
+        "magic-string": "^0.30.3"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        }
+      }
     },
-    "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz",
-      "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==",
-      "cpu": [
-        "riscv64"
-      ],
+    "node_modules/@rollup/plugin-terser": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
+      "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
       "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ]
+      "dependencies": {
+        "serialize-javascript": "^6.0.1",
+        "smob": "^1.0.0",
+        "terser": "^5.17.4"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^2.0.0||^3.0.0||^4.0.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@rollup/pluginutils": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+      "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+      "dependencies": {
+        "@types/estree": "^1.0.0",
+        "estree-walker": "^2.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        }
+      }
     },
     "node_modules/@rollup/rollup-linux-x64-gnu": {
       "version": "4.13.0",
@@ -3939,45 +3379,6 @@
         "linux"
       ]
     },
-    "node_modules/@rollup/rollup-win32-arm64-msvc": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz",
-      "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-ia32-msvc": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz",
-      "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-x64-msvc": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz",
-      "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
     "node_modules/@rushstack/eslint-patch": {
       "version": "1.7.2",
       "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
@@ -4576,13 +3977,38 @@
       }
     },
     "node_modules/@unhead/dom": {
-      "version": "1.8.13",
-      "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.8.13.tgz",
-      "integrity": "sha512-BWqtatmrcrT+rN/FBZ/Il7mW0TuPlS4bXrsZewAVanOPU3ahr+sHAIUDJmDjziBjSUsO5wLOEYXA+4t08AZnrQ==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.9.2.tgz",
+      "integrity": "sha512-yREmUAfYJsPV9qR3G85MkdH+FdvsHf8AIJRm7FgQidrPxFr8tCICdID3+jXULz3oq8pFye1tAyHlBHXeq3SIpA==",
       "dev": true,
       "dependencies": {
-        "@unhead/schema": "1.8.13",
-        "@unhead/shared": "1.8.13"
+        "@unhead/schema": "1.9.2",
+        "@unhead/shared": "1.9.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/harlan-zw"
+      }
+    },
+    "node_modules/@unhead/dom/node_modules/@unhead/schema": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.2.tgz",
+      "integrity": "sha512-NRCAcuWtD2WCL8u3qR1yn41JpDB+ExjBnSLAuJseOD9+XJjQBqPRgx/bhxZ3Dx6vrrCnCF+SvKr+W1pa+3mWdA==",
+      "dev": true,
+      "dependencies": {
+        "hookable": "^5.5.3",
+        "zhead": "^2.2.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/harlan-zw"
+      }
+    },
+    "node_modules/@unhead/dom/node_modules/@unhead/shared": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.2.tgz",
+      "integrity": "sha512-jXQ4vK9wXf66hflOSBUXQKVsOLJrYVSOknDH+9PTwz5CIgJv/Y/o/NkRCJjyf5W7qFf605Te28lbTeLumT+BeQ==",
+      "dev": true,
+      "dependencies": {
+        "@unhead/schema": "1.9.2"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
@@ -4630,28 +4056,53 @@
       }
     },
     "node_modules/@unhead/ssr": {
-      "version": "1.8.13",
-      "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.8.13.tgz",
-      "integrity": "sha512-4GzpVlwJn8HRa6YE+9UuABf3XSe1WvcqLOWszCJiD3oUaFCZ2jqrVXS4v/jhJ6bAm7LTHrfT7Znyw4nQG57/XQ==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.9.2.tgz",
+      "integrity": "sha512-XKNAK3A67ZZpNq8arTyUj7brmTOYH3PJrVSx546MCQQvCuP6U3brWyIPy12+a/XiAxr4z62vd2IHCZya8OrZrQ==",
       "dev": true,
       "dependencies": {
-        "@unhead/schema": "1.8.13",
-        "@unhead/shared": "1.8.13"
+        "@unhead/schema": "1.9.2",
+        "@unhead/shared": "1.9.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/harlan-zw"
+      }
+    },
+    "node_modules/@unhead/ssr/node_modules/@unhead/schema": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.2.tgz",
+      "integrity": "sha512-NRCAcuWtD2WCL8u3qR1yn41JpDB+ExjBnSLAuJseOD9+XJjQBqPRgx/bhxZ3Dx6vrrCnCF+SvKr+W1pa+3mWdA==",
+      "dev": true,
+      "dependencies": {
+        "hookable": "^5.5.3",
+        "zhead": "^2.2.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/harlan-zw"
+      }
+    },
+    "node_modules/@unhead/ssr/node_modules/@unhead/shared": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.2.tgz",
+      "integrity": "sha512-jXQ4vK9wXf66hflOSBUXQKVsOLJrYVSOknDH+9PTwz5CIgJv/Y/o/NkRCJjyf5W7qFf605Te28lbTeLumT+BeQ==",
+      "dev": true,
+      "dependencies": {
+        "@unhead/schema": "1.9.2"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
     },
     "node_modules/@unhead/vue": {
-      "version": "1.8.13",
-      "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.8.13.tgz",
-      "integrity": "sha512-2CIwSeadfJxFfY44nz7U+w/F7lg646aw2t8G58P4A08t6KtPRoAVA0cR0iX+yqQEZIAKYEoaNINv3p/GMxyvBw==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.9.2.tgz",
+      "integrity": "sha512-wp0eOyb7tu2isSt1IiDGm194W/8DVL3cXZd8uvhVlhS9yPL3TzwrSNbvwx95fhfrGuXFraoLjp4SpZ2BCszFsg==",
       "dev": true,
       "dependencies": {
-        "@unhead/schema": "1.8.13",
-        "@unhead/shared": "1.8.13",
+        "@unhead/schema": "1.9.2",
+        "@unhead/shared": "1.9.2",
         "hookable": "^5.5.3",
-        "unhead": "1.8.13"
+        "unhead": "1.9.2"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
@@ -4660,6 +4111,31 @@
         "vue": ">=2.7 || >=3"
       }
     },
+    "node_modules/@unhead/vue/node_modules/@unhead/schema": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.2.tgz",
+      "integrity": "sha512-NRCAcuWtD2WCL8u3qR1yn41JpDB+ExjBnSLAuJseOD9+XJjQBqPRgx/bhxZ3Dx6vrrCnCF+SvKr+W1pa+3mWdA==",
+      "dev": true,
+      "dependencies": {
+        "hookable": "^5.5.3",
+        "zhead": "^2.2.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/harlan-zw"
+      }
+    },
+    "node_modules/@unhead/vue/node_modules/@unhead/shared": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.2.tgz",
+      "integrity": "sha512-jXQ4vK9wXf66hflOSBUXQKVsOLJrYVSOknDH+9PTwz5CIgJv/Y/o/NkRCJjyf5W7qFf605Te28lbTeLumT+BeQ==",
+      "dev": true,
+      "dependencies": {
+        "@unhead/schema": "1.9.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/harlan-zw"
+      }
+    },
     "node_modules/@unocss/astro": {
       "version": "0.58.5",
       "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.58.5.tgz",
@@ -5728,9 +5204,9 @@
       }
     },
     "node_modules/acorn-import-attributes": {
-      "version": "1.9.2",
-      "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.2.tgz",
-      "integrity": "sha512-O+nfJwNolEA771IYJaiLWK1UAwjNsQmZbTRqqwBYxCgVQTmpFEMvBw6LOIQV0Me339L5UMVYFyRohGnGlQDdIQ==",
+      "version": "1.9.4",
+      "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.4.tgz",
+      "integrity": "sha512-dNIX/5UEnZvVL94dV2scl4VIooK36D8AteP4xiz7cPKhDbhLhSuWkzG580g+Q7TXJklp+Z21SiaK7/HpLO84Qg==",
       "dev": true,
       "peerDependencies": {
         "acorn": "^8"
@@ -6100,9 +5576,9 @@
       "dev": true
     },
     "node_modules/autoprefixer": {
-      "version": "10.4.18",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz",
-      "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==",
+      "version": "10.4.19",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",
+      "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
       "dev": true,
       "funding": [
         {
@@ -6120,7 +5596,7 @@
       ],
       "dependencies": {
         "browserslist": "^4.23.0",
-        "caniuse-lite": "^1.0.30001591",
+        "caniuse-lite": "^1.0.30001599",
         "fraction.js": "^4.3.7",
         "normalize-range": "^0.1.2",
         "picocolors": "^1.0.0",
@@ -6168,9 +5644,9 @@
       "dev": true
     },
     "node_modules/bare-events": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.1.tgz",
-      "integrity": "sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz",
+      "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==",
       "dev": true,
       "optional": true
     },
@@ -6498,9 +5974,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001597",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz",
-      "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==",
+      "version": "1.0.30001600",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz",
+      "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==",
       "funding": [
         {
           "type": "opencollective",
@@ -7150,9 +6626,9 @@
       }
     },
     "node_modules/css-declaration-sorter": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz",
-      "integrity": "sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==",
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz",
+      "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==",
       "dev": true,
       "engines": {
         "node": "^14 || ^16 || >=18"
@@ -7226,12 +6702,12 @@
       }
     },
     "node_modules/cssnano": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.0.tgz",
-      "integrity": "sha512-e2v4w/t3OFM6HTuSweI4RSdABaqgVgHlJp5FZrQsopHnKKHLFIvK2D3C4kHWeFIycN/1L1J5VIrg5KlDzn3r/g==",
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz",
+      "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==",
       "dev": true,
       "dependencies": {
-        "cssnano-preset-default": "^6.1.0",
+        "cssnano-preset-default": "^6.1.2",
         "lilconfig": "^3.1.1"
       },
       "engines": {
@@ -7246,13 +6722,13 @@
       }
     },
     "node_modules/cssnano-preset-default": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.0.tgz",
-      "integrity": "sha512-4DUXZoDj+PI3fRl3MqMjl9DwLGjcsFP4qt+92nLUcN1RGfw2TY+GwNoG2B38Usu1BrcTs8j9pxNfSusmvtSjfg==",
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz",
+      "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==",
       "dev": true,
       "dependencies": {
         "browserslist": "^4.23.0",
-        "css-declaration-sorter": "^7.1.1",
+        "css-declaration-sorter": "^7.2.0",
         "cssnano-utils": "^4.0.2",
         "postcss-calc": "^9.0.1",
         "postcss-colormin": "^6.1.0",
@@ -7261,12 +6737,12 @@
         "postcss-discard-duplicates": "^6.0.3",
         "postcss-discard-empty": "^6.0.3",
         "postcss-discard-overridden": "^6.0.2",
-        "postcss-merge-longhand": "^6.0.4",
-        "postcss-merge-rules": "^6.1.0",
-        "postcss-minify-font-values": "^6.0.3",
+        "postcss-merge-longhand": "^6.0.5",
+        "postcss-merge-rules": "^6.1.1",
+        "postcss-minify-font-values": "^6.1.0",
         "postcss-minify-gradients": "^6.0.3",
         "postcss-minify-params": "^6.1.0",
-        "postcss-minify-selectors": "^6.0.3",
+        "postcss-minify-selectors": "^6.0.4",
         "postcss-normalize-charset": "^6.0.2",
         "postcss-normalize-display-values": "^6.0.2",
         "postcss-normalize-positions": "^6.0.2",
@@ -7280,7 +6756,7 @@
         "postcss-reduce-initial": "^6.1.0",
         "postcss-reduce-transforms": "^6.0.2",
         "postcss-svgo": "^6.0.3",
-        "postcss-unique-selectors": "^6.0.3"
+        "postcss-unique-selectors": "^6.0.4"
       },
       "engines": {
         "node": "^14 || ^16 || >=18.0"
@@ -8289,9 +7765,9 @@
       "peer": true
     },
     "node_modules/esbuild": {
-      "version": "0.20.1",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz",
-      "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
+      "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
       "dev": true,
       "hasInstallScript": true,
       "bin": {
@@ -8301,29 +7777,29 @@
         "node": ">=12"
       },
       "optionalDependencies": {
-        "@esbuild/aix-ppc64": "0.20.1",
-        "@esbuild/android-arm": "0.20.1",
-        "@esbuild/android-arm64": "0.20.1",
-        "@esbuild/android-x64": "0.20.1",
-        "@esbuild/darwin-arm64": "0.20.1",
-        "@esbuild/darwin-x64": "0.20.1",
-        "@esbuild/freebsd-arm64": "0.20.1",
-        "@esbuild/freebsd-x64": "0.20.1",
-        "@esbuild/linux-arm": "0.20.1",
-        "@esbuild/linux-arm64": "0.20.1",
-        "@esbuild/linux-ia32": "0.20.1",
-        "@esbuild/linux-loong64": "0.20.1",
-        "@esbuild/linux-mips64el": "0.20.1",
-        "@esbuild/linux-ppc64": "0.20.1",
-        "@esbuild/linux-riscv64": "0.20.1",
-        "@esbuild/linux-s390x": "0.20.1",
-        "@esbuild/linux-x64": "0.20.1",
-        "@esbuild/netbsd-x64": "0.20.1",
-        "@esbuild/openbsd-x64": "0.20.1",
-        "@esbuild/sunos-x64": "0.20.1",
-        "@esbuild/win32-arm64": "0.20.1",
-        "@esbuild/win32-ia32": "0.20.1",
-        "@esbuild/win32-x64": "0.20.1"
+        "@esbuild/aix-ppc64": "0.20.2",
+        "@esbuild/android-arm": "0.20.2",
+        "@esbuild/android-arm64": "0.20.2",
+        "@esbuild/android-x64": "0.20.2",
+        "@esbuild/darwin-arm64": "0.20.2",
+        "@esbuild/darwin-x64": "0.20.2",
+        "@esbuild/freebsd-arm64": "0.20.2",
+        "@esbuild/freebsd-x64": "0.20.2",
+        "@esbuild/linux-arm": "0.20.2",
+        "@esbuild/linux-arm64": "0.20.2",
+        "@esbuild/linux-ia32": "0.20.2",
+        "@esbuild/linux-loong64": "0.20.2",
+        "@esbuild/linux-mips64el": "0.20.2",
+        "@esbuild/linux-ppc64": "0.20.2",
+        "@esbuild/linux-riscv64": "0.20.2",
+        "@esbuild/linux-s390x": "0.20.2",
+        "@esbuild/linux-x64": "0.20.2",
+        "@esbuild/netbsd-x64": "0.20.2",
+        "@esbuild/openbsd-x64": "0.20.2",
+        "@esbuild/sunos-x64": "0.20.2",
+        "@esbuild/win32-arm64": "0.20.2",
+        "@esbuild/win32-ia32": "0.20.2",
+        "@esbuild/win32-x64": "0.20.2"
       }
     },
     "node_modules/escalade": {
@@ -13421,9 +12897,9 @@
       "peer": true
     },
     "node_modules/nitropack": {
-      "version": "2.9.3",
-      "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.9.3.tgz",
-      "integrity": "sha512-k3wXlhxmTNkkFXnVyRYJ6CCdZmvlqjYJ4oaL8o9uTKIjg7A1udAle+3cVDxUWi2r9owwEysAP2+quNsAujZyTg==",
+      "version": "2.9.5",
+      "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.9.5.tgz",
+      "integrity": "sha512-ClanSILi9O6HX95QNIC+TwxojpRpOSn9n3e3wmHExAHhLN5HdnHGmHN4LwtJdE2p91nse3kDULOTR7k1xRVJ/g==",
       "dev": true,
       "dependencies": {
         "@cloudflare/kv-asset-handler": "^0.3.1",
@@ -13438,7 +12914,7 @@
         "@rollup/pluginutils": "^5.1.0",
         "@types/http-proxy": "^1.17.14",
         "@vercel/nft": "^0.26.4",
-        "archiver": "^7.0.0",
+        "archiver": "^7.0.1",
         "c12": "^1.10.0",
         "chalk": "^5.3.0",
         "chokidar": "^3.6.0",
@@ -13451,7 +12927,7 @@
         "defu": "^6.1.4",
         "destr": "^2.0.3",
         "dot-prop": "^8.0.2",
-        "esbuild": "^0.20.1",
+        "esbuild": "^0.20.2",
         "escape-string-regexp": "^5.0.0",
         "etag": "^1.8.1",
         "fs-extra": "^11.2.0",
@@ -13460,6 +12936,7 @@
         "h3": "^1.11.1",
         "hookable": "^5.5.3",
         "httpxy": "^0.1.5",
+        "ioredis": "^5.3.2",
         "is-primitive": "^3.0.1",
         "jiti": "^1.21.0",
         "klona": "^2.0.6",
@@ -13469,29 +12946,29 @@
         "mime": "^4.0.1",
         "mlly": "^1.6.1",
         "mri": "^1.2.0",
-        "node-fetch-native": "^1.6.2",
-        "ofetch": "^1.3.3",
+        "node-fetch-native": "^1.6.4",
+        "ofetch": "^1.3.4",
         "ohash": "^1.1.3",
-        "openapi-typescript": "^6.7.4",
+        "openapi-typescript": "^6.7.5",
         "pathe": "^1.1.2",
         "perfect-debounce": "^1.0.0",
         "pkg-types": "^1.0.3",
         "pretty-bytes": "^6.1.1",
-        "radix3": "^1.1.1",
-        "rollup": "^4.12.1",
+        "radix3": "^1.1.2",
+        "rollup": "^4.13.0",
         "rollup-plugin-visualizer": "^5.12.0",
         "scule": "^1.3.0",
         "semver": "^7.6.0",
         "serve-placeholder": "^2.0.1",
         "serve-static": "^1.15.0",
         "std-env": "^3.7.0",
-        "ufo": "^1.4.0",
+        "ufo": "^1.5.3",
         "uncrypto": "^0.1.3",
         "unctx": "^2.3.1",
         "unenv": "^1.9.0",
         "unimport": "^3.7.1",
-        "unstorage": "^1.10.1",
-        "unwasm": "^0.3.7"
+        "unstorage": "^1.10.2",
+        "unwasm": "^0.3.8"
       },
       "bin": {
         "nitro": "dist/cli/index.mjs",
@@ -13568,9 +13045,9 @@
       }
     },
     "node_modules/node-fetch-native": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.2.tgz",
-      "integrity": "sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w=="
+      "version": "1.6.4",
+      "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
+      "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ=="
     },
     "node_modules/node-forge": {
       "version": "1.3.1",
@@ -13901,9 +13378,9 @@
       }
     },
     "node_modules/nuxi": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmjs.org/nuxi/-/nuxi-3.10.1.tgz",
-      "integrity": "sha512-ZNt858+FOZDIiKKFJkXO7uJAnALytDdn1XbLgtZAqbtWNMayHbOnWcnxh+WSOE4H9uOi2+loWXEqKElmNWLgcQ==",
+      "version": "3.11.1",
+      "resolved": "https://registry.npmjs.org/nuxi/-/nuxi-3.11.1.tgz",
+      "integrity": "sha512-AW71TpxRHNg8MplQVju9tEFvXPvX42e0wPYknutSStDuAjV99vWTWYed4jxr/grk2FtKAuv2KvdJxcn2W59qyg==",
       "dev": true,
       "bin": {
         "nuxi": "bin/nuxi.mjs",
@@ -13912,70 +13389,71 @@
         "nuxt-cli": "bin/nuxi.mjs"
       },
       "engines": {
-        "node": "^14.18.0 || >=16.10.0"
+        "node": "^16.10.0 || >=18.0.0"
       },
       "optionalDependencies": {
         "fsevents": "~2.3.3"
       }
     },
     "node_modules/nuxt": {
-      "version": "3.10.3",
-      "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.10.3.tgz",
-      "integrity": "sha512-NchGNiiz9g/ErJAb462W/lpX2NqcXYb9hugySKWvLXNdrjeAPiJ2/7mhgwUSiZA9MpjuQg3saiEajr1zlRIOCg==",
+      "version": "3.11.1",
+      "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.11.1.tgz",
+      "integrity": "sha512-CsncE1dxP0cmOYT+PBdjMD0bOK8eZizG5tgNWUOJAAAtU45sO38maoBumYYL2kUpT/SC/dMP+831DAcVPvi9pQ==",
       "dev": true,
       "dependencies": {
         "@nuxt/devalue": "^2.0.2",
         "@nuxt/devtools": "^1.0.8",
-        "@nuxt/kit": "3.10.3",
-        "@nuxt/schema": "3.10.3",
+        "@nuxt/kit": "3.11.1",
+        "@nuxt/schema": "3.11.1",
         "@nuxt/telemetry": "^2.5.3",
         "@nuxt/ui-templates": "^1.3.1",
-        "@nuxt/vite-builder": "3.10.3",
-        "@unhead/dom": "^1.8.10",
-        "@unhead/ssr": "^1.8.10",
-        "@unhead/vue": "^1.8.10",
-        "@vue/shared": "^3.4.19",
+        "@nuxt/vite-builder": "3.11.1",
+        "@unhead/dom": "^1.8.20",
+        "@unhead/ssr": "^1.8.20",
+        "@unhead/vue": "^1.8.20",
+        "@vue/shared": "^3.4.21",
         "acorn": "8.11.3",
-        "c12": "^1.9.0",
+        "c12": "^1.10.0",
         "chokidar": "^3.6.0",
         "cookie-es": "^1.0.0",
         "defu": "^6.1.4",
         "destr": "^2.0.3",
         "devalue": "^4.3.2",
-        "esbuild": "^0.20.1",
+        "esbuild": "^0.20.2",
         "escape-string-regexp": "^5.0.0",
         "estree-walker": "^3.0.3",
         "fs-extra": "^11.2.0",
         "globby": "^14.0.1",
-        "h3": "^1.10.2",
+        "h3": "^1.11.1",
         "hookable": "^5.5.3",
         "jiti": "^1.21.0",
         "klona": "^2.0.6",
         "knitwork": "^1.0.0",
-        "magic-string": "^0.30.7",
-        "mlly": "^1.6.0",
-        "nitropack": "^2.8.1",
-        "nuxi": "^3.10.1",
-        "nypm": "^0.3.6",
+        "magic-string": "^0.30.8",
+        "mlly": "^1.6.1",
+        "nitropack": "^2.9.4",
+        "nuxi": "^3.11.0",
+        "nypm": "^0.3.8",
         "ofetch": "^1.3.3",
         "ohash": "^1.1.3",
         "pathe": "^1.1.2",
         "perfect-debounce": "^1.0.0",
         "pkg-types": "^1.0.3",
-        "radix3": "^1.1.0",
+        "radix3": "^1.1.1",
         "scule": "^1.3.0",
         "std-env": "^3.7.0",
         "strip-literal": "^2.0.0",
-        "ufo": "^1.4.0",
+        "ufo": "^1.5.2",
         "ultrahtml": "^1.5.3",
         "uncrypto": "^0.1.3",
         "unctx": "^2.3.1",
         "unenv": "^1.9.0",
         "unimport": "^3.7.1",
-        "unplugin": "^1.7.1",
+        "unplugin": "^1.10.0",
         "unplugin-vue-router": "^0.7.0",
+        "unstorage": "^1.10.2",
         "untyped": "^1.4.2",
-        "vue": "^3.4.19",
+        "vue": "^3.4.21",
         "vue-bundle-renderer": "^2.0.0",
         "vue-devtools-stub": "^0.1.0",
         "vue-router": "^4.3.0"
@@ -14516,14 +13994,14 @@
       }
     },
     "node_modules/ofetch": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz",
-      "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==",
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz",
+      "integrity": "sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==",
       "dev": true,
       "dependencies": {
-        "destr": "^2.0.1",
-        "node-fetch-native": "^1.4.0",
-        "ufo": "^1.3.0"
+        "destr": "^2.0.3",
+        "node-fetch-native": "^1.6.3",
+        "ufo": "^1.5.3"
       }
     },
     "node_modules/ohash": {
@@ -14611,9 +14089,9 @@
       }
     },
     "node_modules/openapi-typescript": {
-      "version": "6.7.4",
-      "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-6.7.4.tgz",
-      "integrity": "sha512-EZyeW9Wy7UDCKv0iYmKrq2pVZtquXiD/YHiUClAKqiMi42nodx/EQH11K6fLqjt1IZlJmVokrAsExsBMM2RROQ==",
+      "version": "6.7.5",
+      "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-6.7.5.tgz",
+      "integrity": "sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA==",
       "dev": true,
       "dependencies": {
         "ansi-colors": "^4.1.3",
@@ -15042,9 +14520,9 @@
       }
     },
     "node_modules/postcss": {
-      "version": "8.4.35",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
-      "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
+      "version": "8.4.38",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+      "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
       "funding": [
         {
           "type": "opencollective",
@@ -15062,7 +14540,7 @@
       "dependencies": {
         "nanoid": "^3.3.7",
         "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
+        "source-map-js": "^1.2.0"
       },
       "engines": {
         "node": "^10 || ^12 || >=14"
@@ -15167,13 +14645,13 @@
       }
     },
     "node_modules/postcss-merge-longhand": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.4.tgz",
-      "integrity": "sha512-vAfWGcxUUGlFiPM3nDMZA+/Yo9sbpc3JNkcYZez8FfJDv41Dh7tAgA3QGVTocaHCZZL6aXPXPOaBMJsjujodsA==",
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz",
+      "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==",
       "dev": true,
       "dependencies": {
         "postcss-value-parser": "^4.2.0",
-        "stylehacks": "^6.1.0"
+        "stylehacks": "^6.1.1"
       },
       "engines": {
         "node": "^14 || ^16 || >=18.0"
@@ -15183,15 +14661,15 @@
       }
     },
     "node_modules/postcss-merge-rules": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.0.tgz",
-      "integrity": "sha512-lER+W3Gr6XOvxOYk1Vi/6UsAgKMg6MDBthmvbNqi2XxAk/r9XfhdYZSigfWjuWWn3zYw2wLelvtM8XuAEFqRkA==",
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz",
+      "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==",
       "dev": true,
       "dependencies": {
         "browserslist": "^4.23.0",
         "caniuse-api": "^3.0.0",
         "cssnano-utils": "^4.0.2",
-        "postcss-selector-parser": "^6.0.15"
+        "postcss-selector-parser": "^6.0.16"
       },
       "engines": {
         "node": "^14 || ^16 || >=18.0"
@@ -15201,9 +14679,9 @@
       }
     },
     "node_modules/postcss-minify-font-values": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.3.tgz",
-      "integrity": "sha512-SmAeTA1We5rMnN3F8X9YBNo9bj9xB4KyDHnaNJnBfQIPi+60fNiR9OTRnIaMqkYzAQX0vObIw4Pn0vuKEOettg==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz",
+      "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==",
       "dev": true,
       "dependencies": {
         "postcss-value-parser": "^4.2.0"
@@ -15250,12 +14728,12 @@
       }
     },
     "node_modules/postcss-minify-selectors": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.3.tgz",
-      "integrity": "sha512-IcV7ZQJcaXyhx4UBpWZMsinGs2NmiUC60rJSkyvjPCPqhNjVGsrJUM+QhAtCaikZ0w0/AbZuH4wVvF/YMuMhvA==",
+      "version": "6.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz",
+      "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==",
       "dev": true,
       "dependencies": {
-        "postcss-selector-parser": "^6.0.15"
+        "postcss-selector-parser": "^6.0.16"
       },
       "engines": {
         "node": "^14 || ^16 || >=18.0"
@@ -15445,9 +14923,9 @@
       }
     },
     "node_modules/postcss-selector-parser": {
-      "version": "6.0.15",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
-      "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+      "version": "6.0.16",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
+      "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
       "dev": true,
       "dependencies": {
         "cssesc": "^3.0.0",
@@ -15474,12 +14952,12 @@
       }
     },
     "node_modules/postcss-unique-selectors": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.3.tgz",
-      "integrity": "sha512-NFXbYr8qdmCr/AFceaEfdcsKGCvWTeGO6QVC9h2GvtWgj0/0dklKQcaMMVzs6tr8bY+ase8hOtHW8OBTTRvS8A==",
+      "version": "6.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz",
+      "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==",
       "dev": true,
       "dependencies": {
-        "postcss-selector-parser": "^6.0.15"
+        "postcss-selector-parser": "^6.0.16"
       },
       "engines": {
         "node": "^14 || ^16 || >=18.0"
@@ -15686,9 +15164,9 @@
       "dev": true
     },
     "node_modules/radix3": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.1.tgz",
-      "integrity": "sha512-yUUd5VTiFtcMEx0qFUxGAv5gbMc1un4RvEO1JZdP7ZUl/RHygZK6PknIKntmQRZxnMY3ZXD2ISaw1ij8GYW1yg==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz",
+      "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==",
       "dev": true
     },
     "node_modules/randombytes": {
@@ -16963,9 +16441,9 @@
       }
     },
     "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==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -17256,13 +16734,13 @@
       "dev": true
     },
     "node_modules/stylehacks": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.0.tgz",
-      "integrity": "sha512-ETErsPFgwlfYZ/CSjMO2Ddf+TsnkCVPBPaoB99Ro8WMAxf7cglzmFsRBhRmKObFjibtcvlNxFFPHuyr3sNlNUQ==",
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz",
+      "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==",
       "dev": true,
       "dependencies": {
         "browserslist": "^4.23.0",
-        "postcss-selector-parser": "^6.0.15"
+        "postcss-selector-parser": "^6.0.16"
       },
       "engines": {
         "node": "^14 || ^16 || >=18.0"
@@ -17694,9 +17172,9 @@
       }
     },
     "node_modules/ufo": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz",
-      "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ=="
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz",
+      "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw=="
     },
     "node_modules/ultrahtml": {
       "version": "1.5.3",
@@ -17788,20 +17266,45 @@
       }
     },
     "node_modules/unhead": {
-      "version": "1.8.13",
-      "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.8.13.tgz",
-      "integrity": "sha512-VL1eOXc1U0zI6XO2JJQ98tywcEW9cM6tfrmuNcltOKSB7Xg3isVXFSf2bEbO4XPUjg8D5Uy3Q3Zi9cN9XSiTyA==",
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.9.2.tgz",
+      "integrity": "sha512-CveP8bjL8gUJnZ1NqcMU1roe+VuM14wr0cJfNek/LCSI2i968mHDD5tbDXNcMSAVOhffKj6WkTngTUKNOZxA7g==",
       "dev": true,
       "dependencies": {
-        "@unhead/dom": "1.8.13",
-        "@unhead/schema": "1.8.13",
-        "@unhead/shared": "1.8.13",
+        "@unhead/dom": "1.9.2",
+        "@unhead/schema": "1.9.2",
+        "@unhead/shared": "1.9.2",
         "hookable": "^5.5.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
     },
+    "node_modules/unhead/node_modules/@unhead/schema": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.2.tgz",
+      "integrity": "sha512-NRCAcuWtD2WCL8u3qR1yn41JpDB+ExjBnSLAuJseOD9+XJjQBqPRgx/bhxZ3Dx6vrrCnCF+SvKr+W1pa+3mWdA==",
+      "dev": true,
+      "dependencies": {
+        "hookable": "^5.5.3",
+        "zhead": "^2.2.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/harlan-zw"
+      }
+    },
+    "node_modules/unhead/node_modules/@unhead/shared": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.2.tgz",
+      "integrity": "sha512-jXQ4vK9wXf66hflOSBUXQKVsOLJrYVSOknDH+9PTwz5CIgJv/Y/o/NkRCJjyf5W7qFf605Te28lbTeLumT+BeQ==",
+      "dev": true,
+      "dependencies": {
+        "@unhead/schema": "1.9.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/harlan-zw"
+      }
+    },
     "node_modules/unicode-emoji-modifier-base": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz",
@@ -18051,9 +17554,9 @@
       }
     },
     "node_modules/unplugin": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.9.0.tgz",
-      "integrity": "sha512-14PslvMY3gNbXnQtNIRB566Q057L5Fe7f5LDEamxVi0QQVxoz5hrveBwwZLcKyHtZ09ysmipxRRj5Lv+BGz2Iw==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.0.tgz",
+      "integrity": "sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==",
       "dependencies": {
         "acorn": "^8.11.3",
         "chokidar": "^3.6.0",
@@ -18124,36 +17627,36 @@
       }
     },
     "node_modules/unstorage": {
-      "version": "1.10.1",
-      "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.1.tgz",
-      "integrity": "sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==",
+      "version": "1.10.2",
+      "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.2.tgz",
+      "integrity": "sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==",
       "dev": true,
       "dependencies": {
         "anymatch": "^3.1.3",
-        "chokidar": "^3.5.3",
-        "destr": "^2.0.2",
-        "h3": "^1.8.2",
-        "ioredis": "^5.3.2",
-        "listhen": "^1.5.5",
-        "lru-cache": "^10.0.2",
+        "chokidar": "^3.6.0",
+        "destr": "^2.0.3",
+        "h3": "^1.11.1",
+        "listhen": "^1.7.2",
+        "lru-cache": "^10.2.0",
         "mri": "^1.2.0",
-        "node-fetch-native": "^1.4.1",
+        "node-fetch-native": "^1.6.2",
         "ofetch": "^1.3.3",
-        "ufo": "^1.3.1"
+        "ufo": "^1.4.0"
       },
       "peerDependencies": {
-        "@azure/app-configuration": "^1.4.1",
+        "@azure/app-configuration": "^1.5.0",
         "@azure/cosmos": "^4.0.0",
         "@azure/data-tables": "^13.2.2",
-        "@azure/identity": "^3.3.2",
-        "@azure/keyvault-secrets": "^4.7.0",
-        "@azure/storage-blob": "^12.16.0",
-        "@capacitor/preferences": "^5.0.6",
-        "@netlify/blobs": "^6.2.0",
-        "@planetscale/database": "^1.11.0",
-        "@upstash/redis": "^1.23.4",
-        "@vercel/kv": "^0.2.3",
-        "idb-keyval": "^6.2.1"
+        "@azure/identity": "^4.0.1",
+        "@azure/keyvault-secrets": "^4.8.0",
+        "@azure/storage-blob": "^12.17.0",
+        "@capacitor/preferences": "^5.0.7",
+        "@netlify/blobs": "^6.5.0 || ^7.0.0",
+        "@planetscale/database": "^1.16.0",
+        "@upstash/redis": "^1.28.4",
+        "@vercel/kv": "^1.0.1",
+        "idb-keyval": "^6.2.1",
+        "ioredis": "^5.3.2"
       },
       "peerDependenciesMeta": {
         "@azure/app-configuration": {
@@ -18191,6 +17694,9 @@
         },
         "idb-keyval": {
           "optional": true
+        },
+        "ioredis": {
+          "optional": true
         }
       }
     },
@@ -18235,16 +17741,17 @@
       }
     },
     "node_modules/unwasm": {
-      "version": "0.3.7",
-      "resolved": "https://registry.npmjs.org/unwasm/-/unwasm-0.3.7.tgz",
-      "integrity": "sha512-+s4iWvHHYnLuwNo+9mqVFLBmBzGc3gIuzkVZ8fdMN9K/kWopCnfaUVnDagd2OX3It5nRR5EenI5nSQb8FOd0fA==",
+      "version": "0.3.8",
+      "resolved": "https://registry.npmjs.org/unwasm/-/unwasm-0.3.8.tgz",
+      "integrity": "sha512-nIJQXxGl/gTUp5dZkSc8jbxAqSOa9Vv4jjSZXNI6OK0JXdvW3SQUHR+KY66rjI0W//km59jivGgd5TCvBUWsnA==",
       "dev": true,
       "dependencies": {
-        "magic-string": "^0.30.5",
-        "mlly": "^1.5.0",
+        "knitwork": "^1.0.0",
+        "magic-string": "^0.30.8",
+        "mlly": "^1.6.1",
         "pathe": "^1.1.2",
         "pkg-types": "^1.0.3",
-        "unplugin": "^1.6.0"
+        "unplugin": "^1.9.0"
       }
     },
     "node_modules/upath": {
@@ -18547,9 +18054,9 @@
       }
     },
     "node_modules/vite-node": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.3.1.tgz",
-      "integrity": "sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.4.0.tgz",
+      "integrity": "sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==",
       "dev": true,
       "dependencies": {
         "cac": "^6.7.14",
diff --git a/package.json b/package.json
index 05c5aa35c0d03aa75bd08fde7b3cd7df2c9fdbde..e9bcee5d0ac62736490a415c5c1b6ac9a888b20f 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
     "@unocss/preset-icons": "^0.58.3",
     "@vueuse/core": "^10.7.1",
     "@vueuse/nuxt": "^10.7.1",
-    "nuxt": "^3.9.1",
+    "nuxt": "^3.11.1",
     "nuxt-meilisearch": "^1.1.0",
     "vuetify-nuxt-module": "^0.9.0"
   },