diff --git a/package-lock.json b/package-lock.json
index f25e99f..b761cd3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,7 +23,7 @@
 			"devDependencies": {
 				"@playwright/test": "1.25.0",
 				"@sveltejs/adapter-static": "^1.0.0-next.48",
-				"@sveltejs/kit": "1.0.0-next.531",
+				"@sveltejs/kit": "1.15.1",
 				"@typescript-eslint/eslint-plugin": "5.27.0",
 				"@typescript-eslint/parser": "5.27.0",
 				"eslint": "8.16.0",
@@ -801,60 +801,56 @@
 			}
 		},
 		"node_modules/@sveltejs/kit": {
-			"version": "1.0.0-next.531",
-			"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.531.tgz",
-			"integrity": "sha512-8uBJF5BweIFoyw+Kqv0jsDSfndNw2mTF222qi8rDuptOy7gjoWXYFy2F0kd8orNeZUnjFrHE+g/qDNHq7zzEJg==",
+			"version": "1.15.1",
+			"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.15.1.tgz",
+			"integrity": "sha512-Wexy3N+COoClTuRawVJRbLoH5HFxNrXG3uoHt/Yd5IGx8WAcJM9Nj/CcBLw/tjCR9uDDYMnx27HxuPy3YIYQUA==",
 			"dev": true,
 			"hasInstallScript": true,
 			"dependencies": {
-				"@sveltejs/vite-plugin-svelte": "^1.1.0",
+				"@sveltejs/vite-plugin-svelte": "^2.0.0",
 				"@types/cookie": "^0.5.1",
 				"cookie": "^0.5.0",
-				"devalue": "^4.0.1",
+				"devalue": "^4.3.0",
+				"esm-env": "^1.0.0",
 				"kleur": "^4.1.5",
-				"magic-string": "^0.26.7",
+				"magic-string": "^0.30.0",
 				"mime": "^3.0.0",
 				"sade": "^1.8.1",
 				"set-cookie-parser": "^2.5.1",
 				"sirv": "^2.0.2",
 				"tiny-glob": "^0.2.9",
-				"undici": "5.12.0"
+				"undici": "5.20.0"
 			},
 			"bin": {
 				"svelte-kit": "svelte-kit.js"
 			},
 			"engines": {
-				"node": ">=16.14"
+				"node": "^16.14 || >=18"
 			},
 			"peerDependencies": {
-				"svelte": "^3.44.0",
-				"vite": "^3.1.0"
+				"svelte": "^3.54.0",
+				"vite": "^4.0.0"
 			}
 		},
-		"node_modules/@sveltejs/vite-plugin-svelte": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.1.0.tgz",
-			"integrity": "sha512-cFRfEdztubtj1c/rYh7ArK7XCfFJn6wG6+J8/e9amFsKtEJILovoBrK0/mxt1AjPQg0vaX+fHPKvhx+q8mTPaQ==",
+		"node_modules/@sveltejs/kit/node_modules/@sveltejs/vite-plugin-svelte": {
+			"version": "2.0.4",
+			"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.4.tgz",
+			"integrity": "sha512-pjqhW00KwK2uzDGEr+yJBwut+D+4XfJO/+bHHdHzPRXn9+1Jeq5JcFHyrUiYaXgHtyhX0RsllCTm4ssAx4ZY7Q==",
 			"dev": true,
 			"dependencies": {
 				"debug": "^4.3.4",
-				"deepmerge": "^4.2.2",
+				"deepmerge": "^4.3.1",
 				"kleur": "^4.1.5",
-				"magic-string": "^0.26.7",
-				"svelte-hmr": "^0.15.0"
+				"magic-string": "^0.30.0",
+				"svelte-hmr": "^0.15.1",
+				"vitefu": "^0.2.4"
 			},
 			"engines": {
 				"node": "^14.18.0 || >= 16"
 			},
 			"peerDependencies": {
-				"diff-match-patch": "^1.0.5",
-				"svelte": "^3.44.0",
-				"vite": "^3.0.0"
-			},
-			"peerDependenciesMeta": {
-				"diff-match-patch": {
-					"optional": true
-				}
+				"svelte": "^3.54.0",
+				"vite": "^4.0.0"
 			}
 		},
 		"node_modules/@types/cookie": {
@@ -1616,9 +1612,9 @@
 			"dev": true
 		},
 		"node_modules/deepmerge": {
-			"version": "4.2.2",
-			"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-			"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+			"version": "4.3.1",
+			"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+			"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
 			"dev": true,
 			"engines": {
 				"node": ">=0.10.0"
@@ -1647,9 +1643,9 @@
 			}
 		},
 		"node_modules/devalue": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/devalue/-/devalue-4.1.0.tgz",
-			"integrity": "sha512-glzE77YSRp97HdNQ8EKTYJQ3tS/7DaY+c7/NjsTrJsNexqYIEANww4qyjhxsJqvpDpoqxgRqjwDNrOq8WS8NFQ==",
+			"version": "4.3.0",
+			"resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.0.tgz",
+			"integrity": "sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==",
 			"dev": true
 		},
 		"node_modules/dir-glob": {
@@ -2203,6 +2199,12 @@
 				"node": ">=4.0"
 			}
 		},
+		"node_modules/esm-env": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz",
+			"integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==",
+			"dev": true
+		},
 		"node_modules/espree": {
 			"version": "9.4.0",
 			"resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz",
@@ -2852,12 +2854,12 @@
 			}
 		},
 		"node_modules/magic-string": {
-			"version": "0.26.7",
-			"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
-			"integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
+			"version": "0.30.0",
+			"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz",
+			"integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
 			"dev": true,
 			"dependencies": {
-				"sourcemap-codec": "^1.4.8"
+				"@jridgewell/sourcemap-codec": "^1.4.13"
 			},
 			"engines": {
 				"node": ">=12"
@@ -3796,9 +3798,9 @@
 			}
 		},
 		"node_modules/svelte-hmr": {
-			"version": "0.15.0",
-			"resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz",
-			"integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==",
+			"version": "0.15.1",
+			"resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz",
+			"integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==",
 			"dev": true,
 			"engines": {
 				"node": "^12.20 || ^14.13.1 || >= 16"
@@ -4082,9 +4084,9 @@
 			}
 		},
 		"node_modules/undici": {
-			"version": "5.12.0",
-			"resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz",
-			"integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==",
+			"version": "5.20.0",
+			"resolved": "https://registry.npmjs.org/undici/-/undici-5.20.0.tgz",
+			"integrity": "sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==",
 			"dev": true,
 			"dependencies": {
 				"busboy": "^1.6.0"
@@ -4162,6 +4164,20 @@
 				}
 			}
 		},
+		"node_modules/vitefu": {
+			"version": "0.2.4",
+			"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz",
+			"integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==",
+			"dev": true,
+			"peerDependencies": {
+				"vite": "^3.0.0 || ^4.0.0"
+			},
+			"peerDependenciesMeta": {
+				"vite": {
+					"optional": true
+				}
+			}
+		},
 		"node_modules/webidl-conversions": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -4913,36 +4929,40 @@
 			}
 		},
 		"@sveltejs/kit": {
-			"version": "1.0.0-next.531",
-			"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.531.tgz",
-			"integrity": "sha512-8uBJF5BweIFoyw+Kqv0jsDSfndNw2mTF222qi8rDuptOy7gjoWXYFy2F0kd8orNeZUnjFrHE+g/qDNHq7zzEJg==",
+			"version": "1.15.1",
+			"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.15.1.tgz",
+			"integrity": "sha512-Wexy3N+COoClTuRawVJRbLoH5HFxNrXG3uoHt/Yd5IGx8WAcJM9Nj/CcBLw/tjCR9uDDYMnx27HxuPy3YIYQUA==",
 			"dev": true,
 			"requires": {
-				"@sveltejs/vite-plugin-svelte": "^1.1.0",
+				"@sveltejs/vite-plugin-svelte": "^2.0.0",
 				"@types/cookie": "^0.5.1",
 				"cookie": "^0.5.0",
-				"devalue": "^4.0.1",
+				"devalue": "^4.3.0",
+				"esm-env": "^1.0.0",
 				"kleur": "^4.1.5",
-				"magic-string": "^0.26.7",
+				"magic-string": "^0.30.0",
 				"mime": "^3.0.0",
 				"sade": "^1.8.1",
 				"set-cookie-parser": "^2.5.1",
 				"sirv": "^2.0.2",
 				"tiny-glob": "^0.2.9",
-				"undici": "5.12.0"
-			}
-		},
-		"@sveltejs/vite-plugin-svelte": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.1.0.tgz",
-			"integrity": "sha512-cFRfEdztubtj1c/rYh7ArK7XCfFJn6wG6+J8/e9amFsKtEJILovoBrK0/mxt1AjPQg0vaX+fHPKvhx+q8mTPaQ==",
-			"dev": true,
-			"requires": {
-				"debug": "^4.3.4",
-				"deepmerge": "^4.2.2",
-				"kleur": "^4.1.5",
-				"magic-string": "^0.26.7",
-				"svelte-hmr": "^0.15.0"
+				"undici": "5.20.0"
+			},
+			"dependencies": {
+				"@sveltejs/vite-plugin-svelte": {
+					"version": "2.0.4",
+					"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.4.tgz",
+					"integrity": "sha512-pjqhW00KwK2uzDGEr+yJBwut+D+4XfJO/+bHHdHzPRXn9+1Jeq5JcFHyrUiYaXgHtyhX0RsllCTm4ssAx4ZY7Q==",
+					"dev": true,
+					"requires": {
+						"debug": "^4.3.4",
+						"deepmerge": "^4.3.1",
+						"kleur": "^4.1.5",
+						"magic-string": "^0.30.0",
+						"svelte-hmr": "^0.15.1",
+						"vitefu": "^0.2.4"
+					}
+				}
 			}
 		},
 		"@types/cookie": {
@@ -5491,9 +5511,9 @@
 			"dev": true
 		},
 		"deepmerge": {
-			"version": "4.2.2",
-			"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-			"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+			"version": "4.3.1",
+			"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+			"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
 			"dev": true
 		},
 		"delegates": {
@@ -5513,9 +5533,9 @@
 			"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
 		},
 		"devalue": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/devalue/-/devalue-4.1.0.tgz",
-			"integrity": "sha512-glzE77YSRp97HdNQ8EKTYJQ3tS/7DaY+c7/NjsTrJsNexqYIEANww4qyjhxsJqvpDpoqxgRqjwDNrOq8WS8NFQ==",
+			"version": "4.3.0",
+			"resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.0.tgz",
+			"integrity": "sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==",
 			"dev": true
 		},
 		"dir-glob": {
@@ -5835,6 +5855,12 @@
 			"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
 			"dev": true
 		},
+		"esm-env": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz",
+			"integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==",
+			"dev": true
+		},
 		"espree": {
 			"version": "9.4.0",
 			"resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz",
@@ -6328,12 +6354,12 @@
 			}
 		},
 		"magic-string": {
-			"version": "0.26.7",
-			"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
-			"integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
+			"version": "0.30.0",
+			"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz",
+			"integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
 			"dev": true,
 			"requires": {
-				"sourcemap-codec": "^1.4.8"
+				"@jridgewell/sourcemap-codec": "^1.4.13"
 			}
 		},
 		"make-dir": {
@@ -6974,9 +7000,9 @@
 			}
 		},
 		"svelte-hmr": {
-			"version": "0.15.0",
-			"resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz",
-			"integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==",
+			"version": "0.15.1",
+			"resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz",
+			"integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==",
 			"dev": true,
 			"requires": {}
 		},
@@ -7161,9 +7187,9 @@
 			"integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw=="
 		},
 		"undici": {
-			"version": "5.12.0",
-			"resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz",
-			"integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==",
+			"version": "5.20.0",
+			"resolved": "https://registry.npmjs.org/undici/-/undici-5.20.0.tgz",
+			"integrity": "sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==",
 			"dev": true,
 			"requires": {
 				"busboy": "^1.6.0"
@@ -7207,6 +7233,13 @@
 				"rollup": "~2.78.0"
 			}
 		},
+		"vitefu": {
+			"version": "0.2.4",
+			"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz",
+			"integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==",
+			"dev": true,
+			"requires": {}
+		},
 		"webidl-conversions": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
diff --git a/package.json b/package.json
index b5d84e5..df9bd96 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
 	"devDependencies": {
 		"@playwright/test": "1.25.0",
 		"@sveltejs/adapter-static": "^1.0.0-next.48",
-		"@sveltejs/kit": "1.0.0-next.531",
+		"@sveltejs/kit": "1.15.1",
 		"@typescript-eslint/eslint-plugin": "5.27.0",
 		"@typescript-eslint/parser": "5.27.0",
 		"eslint": "8.16.0",