diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 063e651d5accb66275965848d8321d22145a53fa..4ab1061b5d235cf30bf47d5745f300c0e4d74679 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -5,12 +5,7 @@ module.exports = {
     "plugin:@typescript-eslint/recommended",
     "prettier",
   ],
-  ignorePatterns: [
-    ".eslintrc.cjs",
-    "build/**",
-    "postcss.config.cjs",
-    "prettier.config.cjs",
-  ],
+  ignorePatterns: ["*.cjs", "build/**"],
   overrides: [{ files: ["*.svelte"], processor: "svelte3/svelte3" }],
   parser: "@typescript-eslint/parser",
   plugins: ["svelte3", "@typescript-eslint"],
@@ -18,6 +13,11 @@ module.exports = {
     sourceType: "module",
     ecmaVersion: 2018,
   },
+  env: {
+    browser: true,
+    es2017: true,
+    node: true,
+  },
   root: true,
   settings: {
     "svelte3/typescript": require("typescript"),
diff --git a/package-lock.json b/package-lock.json
index 7f61ce4f66d26dbc2c4516e6c2357b6f41f8591e..8c7d9d92539309c55c8885645dd0a915ce374b11 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -37,9 +37,9 @@
       }
     },
     "node_modules/@auditors/core": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/@auditors/core/-/core-0.1.7.tgz",
-      "integrity": "sha512-rnTWXBSAfcMKB8cSZD4vs6i+l4kUvVbt0H/f5KKDjFLTXWwHPs3wCeVTAEZZeLWRMOyWu7vK8fAIMCocfFYFdA==",
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/@auditors/core/-/core-0.1.8.tgz",
+      "integrity": "sha512-F6o5pnRC2RI+Uk+Fsa2AWmoo98+bQ4FDk0VxLoDEk+PB8se6MWp36Ac0RKCY9Rv2wVLK8zTl7mhEK7kVywKGLw==",
       "dev": true,
       "engines": {
         "node": ">=15"
@@ -269,9 +269,9 @@
       "dev": true
     },
     "node_modules/@sveltejs/kit": {
-      "version": "1.0.0-next.60",
-      "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.60.tgz",
-      "integrity": "sha512-1dpec/fm6bMSOnMyJacboxiK3jLFF7h8pHp8xi+KXb7V4UAGtnjCvRPpk6fggmXQ40mCdrxf/my0fS+0Ci6x+g==",
+      "version": "1.0.0-next.64",
+      "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.64.tgz",
+      "integrity": "sha512-ccLesgGBDEkbYnz9j+xHfwkO6EF/oka9sPS+OEsveN5gmYF3o7j13Q8lZQgyXOTuUnnB+WDsklHL36ihWZzNkw==",
       "dev": true,
       "dependencies": {
         "@sveltejs/vite-plugin-svelte": "^1.0.0-next.5",
@@ -310,9 +310,9 @@
       }
     },
     "node_modules/@tailwindcss/jit": {
-      "version": "0.1.10",
-      "resolved": "https://registry.npmjs.org/@tailwindcss/jit/-/jit-0.1.10.tgz",
-      "integrity": "sha512-fmNJQE7clhauVcmYWJ2C4En5X6BF5ZsKqeIjl7UzbM37fvPHmrhgMzc5K4/l32LV8aPX2dRS/0XsbnZ4mrcSHg==",
+      "version": "0.1.17",
+      "resolved": "https://registry.npmjs.org/@tailwindcss/jit/-/jit-0.1.17.tgz",
+      "integrity": "sha512-Of3NbM2Peex6iPkOap5JBmAPq6oVjKEKMysy6iH/9Vl0TjuEuB094Uc7yzJz8q6j6AQEImlaOGxwF+sdBlG2pw==",
       "dev": true,
       "dependencies": {
         "chokidar": "^3.5.1",
@@ -321,6 +321,7 @@
         "lodash.topath": "^4.5.2",
         "normalize-path": "^3.0.0",
         "object-hash": "^2.1.1",
+        "parse-glob": "^3.0.4",
         "postcss-selector-parser": "^6.0.4",
         "quick-lru": "^5.1.1"
       },
@@ -336,9 +337,9 @@
       "dev": true
     },
     "node_modules/@types/node": {
-      "version": "14.14.36",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.36.tgz",
-      "integrity": "sha512-kjivUwDJfIjngzbhooRnOLhGYz6oRFi+L+EpMjxroDYXwDw9lHrJJ43E+dJ6KAd3V3WxWAJ/qZE9XKYHhjPOFQ==",
+      "version": "14.14.37",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz",
+      "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==",
       "dev": true
     },
     "node_modules/@types/parse-json": {
@@ -369,13 +370,13 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.19.0.tgz",
-      "integrity": "sha512-CRQNQ0mC2Pa7VLwKFbrGVTArfdVDdefS+gTw0oC98vSI98IX5A8EVH4BzJ2FOB0YlCmm8Im36Elad/Jgtvveaw==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.20.0.tgz",
+      "integrity": "sha512-sw+3HO5aehYqn5w177z2D82ZQlqHCwcKSMboueo7oE4KU9QiC0SAgfS/D4z9xXvpTc8Bt41Raa9fBR8T2tIhoQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/experimental-utils": "4.19.0",
-        "@typescript-eslint/scope-manager": "4.19.0",
+        "@typescript-eslint/experimental-utils": "4.20.0",
+        "@typescript-eslint/scope-manager": "4.20.0",
         "debug": "^4.1.1",
         "functional-red-black-tree": "^1.0.1",
         "lodash": "^4.17.15",
@@ -401,15 +402,15 @@
       }
     },
     "node_modules/@typescript-eslint/experimental-utils": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.19.0.tgz",
-      "integrity": "sha512-9/23F1nnyzbHKuoTqFN1iXwN3bvOm/PRIXSBR3qFAYotK/0LveEOHr5JT1WZSzcD6BESl8kPOG3OoDRKO84bHA==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.20.0.tgz",
+      "integrity": "sha512-sQNlf6rjLq2yB5lELl3gOE7OuoA/6IVXJUJ+Vs7emrQMva14CkOwyQwD7CW+TkmOJ4Q/YGmoDLmbfFrpGmbKng==",
       "dev": true,
       "dependencies": {
         "@types/json-schema": "^7.0.3",
-        "@typescript-eslint/scope-manager": "4.19.0",
-        "@typescript-eslint/types": "4.19.0",
-        "@typescript-eslint/typescript-estree": "4.19.0",
+        "@typescript-eslint/scope-manager": "4.20.0",
+        "@typescript-eslint/types": "4.20.0",
+        "@typescript-eslint/typescript-estree": "4.20.0",
         "eslint-scope": "^5.0.0",
         "eslint-utils": "^2.0.0"
       },
@@ -425,14 +426,14 @@
       }
     },
     "node_modules/@typescript-eslint/parser": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.19.0.tgz",
-      "integrity": "sha512-/uabZjo2ZZhm66rdAu21HA8nQebl3lAIDcybUoOxoI7VbZBYavLIwtOOmykKCJy+Xq6Vw6ugkiwn8Js7D6wieA==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.20.0.tgz",
+      "integrity": "sha512-m6vDtgL9EABdjMtKVw5rr6DdeMCH3OA1vFb0dAyuZSa3e5yw1YRzlwFnm9knma9Lz6b2GPvoNSa8vOXrqsaglA==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/scope-manager": "4.19.0",
-        "@typescript-eslint/types": "4.19.0",
-        "@typescript-eslint/typescript-estree": "4.19.0",
+        "@typescript-eslint/scope-manager": "4.20.0",
+        "@typescript-eslint/types": "4.20.0",
+        "@typescript-eslint/typescript-estree": "4.20.0",
         "debug": "^4.1.1"
       },
       "engines": {
@@ -452,13 +453,13 @@
       }
     },
     "node_modules/@typescript-eslint/scope-manager": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.19.0.tgz",
-      "integrity": "sha512-GGy4Ba/hLXwJXygkXqMzduqOMc+Na6LrJTZXJWVhRrSuZeXmu8TAnniQVKgj8uTRKe4igO2ysYzH+Np879G75g==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.20.0.tgz",
+      "integrity": "sha512-/zm6WR6iclD5HhGpcwl/GOYDTzrTHmvf8LLLkwKqqPKG6+KZt/CfSgPCiybshmck66M2L5fWSF/MKNuCwtKQSQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "4.19.0",
-        "@typescript-eslint/visitor-keys": "4.19.0"
+        "@typescript-eslint/types": "4.20.0",
+        "@typescript-eslint/visitor-keys": "4.20.0"
       },
       "engines": {
         "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
@@ -469,9 +470,9 @@
       }
     },
     "node_modules/@typescript-eslint/types": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.19.0.tgz",
-      "integrity": "sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.20.0.tgz",
+      "integrity": "sha512-cYY+1PIjei1nk49JAPnH1VEnu7OYdWRdJhYI5wiKOUMhLTG1qsx5cQxCUTuwWCmQoyriadz3Ni8HZmGSofeC+w==",
       "dev": true,
       "engines": {
         "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
@@ -482,13 +483,13 @@
       }
     },
     "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.19.0.tgz",
-      "integrity": "sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.20.0.tgz",
+      "integrity": "sha512-Knpp0reOd4ZsyoEJdW8i/sK3mtZ47Ls7ZHvD8WVABNx5Xnn7KhenMTRGegoyMTx6TiXlOVgMz9r0pDgXTEEIHA==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "4.19.0",
-        "@typescript-eslint/visitor-keys": "4.19.0",
+        "@typescript-eslint/types": "4.20.0",
+        "@typescript-eslint/visitor-keys": "4.20.0",
         "debug": "^4.1.1",
         "globby": "^11.0.1",
         "is-glob": "^4.0.1",
@@ -509,12 +510,12 @@
       }
     },
     "node_modules/@typescript-eslint/visitor-keys": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.19.0.tgz",
-      "integrity": "sha512-aGPS6kz//j7XLSlgpzU2SeTqHPsmRYxFztj2vPuMMFJXZudpRSehE3WCV+BaxwZFvfAqMoSd86TEuM0PQ59E/A==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.20.0.tgz",
+      "integrity": "sha512-NXKRM3oOVQL8yNFDNCZuieRIwZ5UtjNLYtmMx2PacEAGmbaEYtGgVHUHVyZvU/0rYZcizdrWjDo+WBtRPSgq+A==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "4.19.0",
+        "@typescript-eslint/types": "4.20.0",
         "eslint-visitor-keys": "^2.0.0"
       },
       "engines": {
@@ -1873,9 +1874,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.3.700",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.700.tgz",
-      "integrity": "sha512-wQtaxVZzpOeCjW1CGuC5W3bYjE2jglvk076LcTautBOB9UtHztty7wNzjVsndiMcSsdUsdMy5w76w5J1U7OPTQ==",
+      "version": "1.3.702",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.702.tgz",
+      "integrity": "sha512-qJVUKFWQnF6wP7MmTngDkmm8/KPzaiTXNFOAg5j7DSa6J7kPou7mTBqC8jpUOxauQWwHR3pn4dMRdV8IE1xdtA==",
       "dev": true
     },
     "node_modules/emoji-regex": {
@@ -1990,9 +1991,9 @@
       }
     },
     "node_modules/eslint": {
-      "version": "7.22.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz",
-      "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==",
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.23.0.tgz",
+      "integrity": "sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q==",
       "dev": true,
       "dependencies": {
         "@babel/code-frame": "7.12.11",
@@ -2418,6 +2419,49 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
+    "node_modules/glob-base": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+      "dev": true,
+      "dependencies": {
+        "glob-parent": "^2.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/glob-base/node_modules/glob-parent": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+      "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^2.0.0"
+      }
+    },
+    "node_modules/glob-base/node_modules/is-extglob": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+      "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/glob-base/node_modules/is-glob": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+      "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/glob-parent": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -2757,6 +2801,15 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/is-dotfile": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -2976,6 +3029,18 @@
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
       "dev": true
     },
+    "node_modules/lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+      "dev": true
+    },
+    "node_modules/lodash.flatten": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+      "dev": true
+    },
     "node_modules/lodash.memoize": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
@@ -2994,6 +3059,12 @@
       "integrity": "sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak=",
       "dev": true
     },
+    "node_modules/lodash.truncate": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+      "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
+      "dev": true
+    },
     "node_modules/lodash.uniq": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@@ -3320,6 +3391,42 @@
         "node": ">=6"
       }
     },
+    "node_modules/parse-glob": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+      "dev": true,
+      "dependencies": {
+        "glob-base": "^0.3.0",
+        "is-dotfile": "^1.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/parse-glob/node_modules/is-extglob": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+      "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/parse-glob/node_modules/is-glob": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+      "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/parse-json": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
@@ -7107,9 +7214,9 @@
       }
     },
     "node_modules/rollup": {
-      "version": "2.42.4",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.42.4.tgz",
-      "integrity": "sha512-Zqv3EvNfcllBHyyEUM754npqsZw82VIjK34cDQMwrQ1d6aqxzeYu5yFb7smGkPU4C1Bj7HupIMeT6WU7uIdnMw==",
+      "version": "2.44.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz",
+      "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==",
       "dev": true,
       "bin": {
         "rollup": "dist/bin/rollup"
@@ -7484,9 +7591,9 @@
       }
     },
     "node_modules/svelte": {
-      "version": "3.35.0",
-      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.35.0.tgz",
-      "integrity": "sha512-gknlZkR2sXheu/X+B7dDImwANVvK1R0QGQLd8CNIfxxGPeXBmePnxfzb6fWwTQRsYQG7lYkZXvpXJvxvpsoB7g==",
+      "version": "3.36.0",
+      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.36.0.tgz",
+      "integrity": "sha512-LSmdCYoAS6kzLff9nejB5KK5FBJaqyiivs7hPl0OJZ+OxiggI8lMAhvo5W3y8vSP0IWS5++Yb5EbKuQdzOSIoA==",
       "dev": true,
       "engines": {
         "node": ">= 8"
@@ -7502,9 +7609,9 @@
       }
     },
     "node_modules/svelte-preprocess": {
-      "version": "4.6.9",
-      "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.6.9.tgz",
-      "integrity": "sha512-SROWH0rB0DJ+0Ii264cprmNu/NJyZacs5wFD71ya93Cg/oA2lKHgQm4F6j0EWA4ktFMzeuJJm/eX6fka39hEHA==",
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.7.0.tgz",
+      "integrity": "sha512-iNrY4YGqi0LD2e6oT9YbdSzOKntxk8gmzfqso1z/lUJOZh4o6fyIqkirmiZ8/dDJFqtIE1spVgDFWgkfhLEYlw==",
       "dev": true,
       "hasInstallScript": true,
       "dependencies": {
@@ -7655,13 +7762,18 @@
       }
     },
     "node_modules/table": {
-      "version": "6.0.7",
-      "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz",
-      "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==",
+      "version": "6.0.9",
+      "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz",
+      "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==",
       "dev": true,
       "dependencies": {
-        "ajv": "^7.0.2",
-        "lodash": "^4.17.20",
+        "ajv": "^8.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "lodash.clonedeep": "^4.5.0",
+        "lodash.flatten": "^4.4.0",
+        "lodash.truncate": "^4.4.2",
         "slice-ansi": "^4.0.0",
         "string-width": "^4.2.0"
       },
@@ -7670,9 +7782,9 @@
       }
     },
     "node_modules/table/node_modules/ajv": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz",
-      "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==",
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.1.tgz",
+      "integrity": "sha512-46ZA4TalFcLLqX1dEU3dhdY38wAtDydJ4e7QQTVekLUTzXkb1LfqU6VOBXC/a9wiv4T094WURqJH6ZitF92Kqw==",
       "dev": true,
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
@@ -7907,9 +8019,9 @@
       }
     },
     "node_modules/vite": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-2.1.3.tgz",
-      "integrity": "sha512-bUzArZIUwADVJS/3ywCr4KKFn3a7izs4M87ZDlAlY2V34E4g1kH6p3sVNAh8/IXCn/56fwgMh3rRavPUW7qEQQ==",
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-2.1.4.tgz",
+      "integrity": "sha512-j/p0RZQvNY/auSPfazsDfo1PHtFp8ktwXPbzI6NqplzHcR3Cn/dfQWiMxL6zp8j9IWdcJP1Zfms7mxruBhStJw==",
       "dev": true,
       "dependencies": {
         "esbuild": "^0.9.3",
@@ -8000,9 +8112,9 @@
   },
   "dependencies": {
     "@auditors/core": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/@auditors/core/-/core-0.1.7.tgz",
-      "integrity": "sha512-rnTWXBSAfcMKB8cSZD4vs6i+l4kUvVbt0H/f5KKDjFLTXWwHPs3wCeVTAEZZeLWRMOyWu7vK8fAIMCocfFYFdA==",
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/@auditors/core/-/core-0.1.8.tgz",
+      "integrity": "sha512-F6o5pnRC2RI+Uk+Fsa2AWmoo98+bQ4FDk0VxLoDEk+PB8se6MWp36Ac0RKCY9Rv2wVLK8zTl7mhEK7kVywKGLw==",
       "dev": true
     },
     "@babel/code-frame": {
@@ -8185,9 +8297,9 @@
       "dev": true
     },
     "@sveltejs/kit": {
-      "version": "1.0.0-next.60",
-      "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.60.tgz",
-      "integrity": "sha512-1dpec/fm6bMSOnMyJacboxiK3jLFF7h8pHp8xi+KXb7V4UAGtnjCvRPpk6fggmXQ40mCdrxf/my0fS+0Ci6x+g==",
+      "version": "1.0.0-next.64",
+      "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.64.tgz",
+      "integrity": "sha512-ccLesgGBDEkbYnz9j+xHfwkO6EF/oka9sPS+OEsveN5gmYF3o7j13Q8lZQgyXOTuUnnB+WDsklHL36ihWZzNkw==",
       "dev": true,
       "requires": {
         "@sveltejs/vite-plugin-svelte": "^1.0.0-next.5",
@@ -8212,9 +8324,9 @@
       }
     },
     "@tailwindcss/jit": {
-      "version": "0.1.10",
-      "resolved": "https://registry.npmjs.org/@tailwindcss/jit/-/jit-0.1.10.tgz",
-      "integrity": "sha512-fmNJQE7clhauVcmYWJ2C4En5X6BF5ZsKqeIjl7UzbM37fvPHmrhgMzc5K4/l32LV8aPX2dRS/0XsbnZ4mrcSHg==",
+      "version": "0.1.17",
+      "resolved": "https://registry.npmjs.org/@tailwindcss/jit/-/jit-0.1.17.tgz",
+      "integrity": "sha512-Of3NbM2Peex6iPkOap5JBmAPq6oVjKEKMysy6iH/9Vl0TjuEuB094Uc7yzJz8q6j6AQEImlaOGxwF+sdBlG2pw==",
       "dev": true,
       "requires": {
         "chokidar": "^3.5.1",
@@ -8223,6 +8335,7 @@
         "lodash.topath": "^4.5.2",
         "normalize-path": "^3.0.0",
         "object-hash": "^2.1.1",
+        "parse-glob": "^3.0.4",
         "postcss-selector-parser": "^6.0.4",
         "quick-lru": "^5.1.1"
       }
@@ -8234,9 +8347,9 @@
       "dev": true
     },
     "@types/node": {
-      "version": "14.14.36",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.36.tgz",
-      "integrity": "sha512-kjivUwDJfIjngzbhooRnOLhGYz6oRFi+L+EpMjxroDYXwDw9lHrJJ43E+dJ6KAd3V3WxWAJ/qZE9XKYHhjPOFQ==",
+      "version": "14.14.37",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz",
+      "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==",
       "dev": true
     },
     "@types/parse-json": {
@@ -8267,13 +8380,13 @@
       }
     },
     "@typescript-eslint/eslint-plugin": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.19.0.tgz",
-      "integrity": "sha512-CRQNQ0mC2Pa7VLwKFbrGVTArfdVDdefS+gTw0oC98vSI98IX5A8EVH4BzJ2FOB0YlCmm8Im36Elad/Jgtvveaw==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.20.0.tgz",
+      "integrity": "sha512-sw+3HO5aehYqn5w177z2D82ZQlqHCwcKSMboueo7oE4KU9QiC0SAgfS/D4z9xXvpTc8Bt41Raa9fBR8T2tIhoQ==",
       "dev": true,
       "requires": {
-        "@typescript-eslint/experimental-utils": "4.19.0",
-        "@typescript-eslint/scope-manager": "4.19.0",
+        "@typescript-eslint/experimental-utils": "4.20.0",
+        "@typescript-eslint/scope-manager": "4.20.0",
         "debug": "^4.1.1",
         "functional-red-black-tree": "^1.0.1",
         "lodash": "^4.17.15",
@@ -8283,55 +8396,55 @@
       }
     },
     "@typescript-eslint/experimental-utils": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.19.0.tgz",
-      "integrity": "sha512-9/23F1nnyzbHKuoTqFN1iXwN3bvOm/PRIXSBR3qFAYotK/0LveEOHr5JT1WZSzcD6BESl8kPOG3OoDRKO84bHA==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.20.0.tgz",
+      "integrity": "sha512-sQNlf6rjLq2yB5lELl3gOE7OuoA/6IVXJUJ+Vs7emrQMva14CkOwyQwD7CW+TkmOJ4Q/YGmoDLmbfFrpGmbKng==",
       "dev": true,
       "requires": {
         "@types/json-schema": "^7.0.3",
-        "@typescript-eslint/scope-manager": "4.19.0",
-        "@typescript-eslint/types": "4.19.0",
-        "@typescript-eslint/typescript-estree": "4.19.0",
+        "@typescript-eslint/scope-manager": "4.20.0",
+        "@typescript-eslint/types": "4.20.0",
+        "@typescript-eslint/typescript-estree": "4.20.0",
         "eslint-scope": "^5.0.0",
         "eslint-utils": "^2.0.0"
       }
     },
     "@typescript-eslint/parser": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.19.0.tgz",
-      "integrity": "sha512-/uabZjo2ZZhm66rdAu21HA8nQebl3lAIDcybUoOxoI7VbZBYavLIwtOOmykKCJy+Xq6Vw6ugkiwn8Js7D6wieA==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.20.0.tgz",
+      "integrity": "sha512-m6vDtgL9EABdjMtKVw5rr6DdeMCH3OA1vFb0dAyuZSa3e5yw1YRzlwFnm9knma9Lz6b2GPvoNSa8vOXrqsaglA==",
       "dev": true,
       "requires": {
-        "@typescript-eslint/scope-manager": "4.19.0",
-        "@typescript-eslint/types": "4.19.0",
-        "@typescript-eslint/typescript-estree": "4.19.0",
+        "@typescript-eslint/scope-manager": "4.20.0",
+        "@typescript-eslint/types": "4.20.0",
+        "@typescript-eslint/typescript-estree": "4.20.0",
         "debug": "^4.1.1"
       }
     },
     "@typescript-eslint/scope-manager": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.19.0.tgz",
-      "integrity": "sha512-GGy4Ba/hLXwJXygkXqMzduqOMc+Na6LrJTZXJWVhRrSuZeXmu8TAnniQVKgj8uTRKe4igO2ysYzH+Np879G75g==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.20.0.tgz",
+      "integrity": "sha512-/zm6WR6iclD5HhGpcwl/GOYDTzrTHmvf8LLLkwKqqPKG6+KZt/CfSgPCiybshmck66M2L5fWSF/MKNuCwtKQSQ==",
       "dev": true,
       "requires": {
-        "@typescript-eslint/types": "4.19.0",
-        "@typescript-eslint/visitor-keys": "4.19.0"
+        "@typescript-eslint/types": "4.20.0",
+        "@typescript-eslint/visitor-keys": "4.20.0"
       }
     },
     "@typescript-eslint/types": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.19.0.tgz",
-      "integrity": "sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.20.0.tgz",
+      "integrity": "sha512-cYY+1PIjei1nk49JAPnH1VEnu7OYdWRdJhYI5wiKOUMhLTG1qsx5cQxCUTuwWCmQoyriadz3Ni8HZmGSofeC+w==",
       "dev": true
     },
     "@typescript-eslint/typescript-estree": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.19.0.tgz",
-      "integrity": "sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.20.0.tgz",
+      "integrity": "sha512-Knpp0reOd4ZsyoEJdW8i/sK3mtZ47Ls7ZHvD8WVABNx5Xnn7KhenMTRGegoyMTx6TiXlOVgMz9r0pDgXTEEIHA==",
       "dev": true,
       "requires": {
-        "@typescript-eslint/types": "4.19.0",
-        "@typescript-eslint/visitor-keys": "4.19.0",
+        "@typescript-eslint/types": "4.20.0",
+        "@typescript-eslint/visitor-keys": "4.20.0",
         "debug": "^4.1.1",
         "globby": "^11.0.1",
         "is-glob": "^4.0.1",
@@ -8340,12 +8453,12 @@
       }
     },
     "@typescript-eslint/visitor-keys": {
-      "version": "4.19.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.19.0.tgz",
-      "integrity": "sha512-aGPS6kz//j7XLSlgpzU2SeTqHPsmRYxFztj2vPuMMFJXZudpRSehE3WCV+BaxwZFvfAqMoSd86TEuM0PQ59E/A==",
+      "version": "4.20.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.20.0.tgz",
+      "integrity": "sha512-NXKRM3oOVQL8yNFDNCZuieRIwZ5UtjNLYtmMx2PacEAGmbaEYtGgVHUHVyZvU/0rYZcizdrWjDo+WBtRPSgq+A==",
       "dev": true,
       "requires": {
-        "@typescript-eslint/types": "4.19.0",
+        "@typescript-eslint/types": "4.20.0",
         "eslint-visitor-keys": "^2.0.0"
       }
     },
@@ -9407,9 +9520,9 @@
       "dev": true
     },
     "electron-to-chromium": {
-      "version": "1.3.700",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.700.tgz",
-      "integrity": "sha512-wQtaxVZzpOeCjW1CGuC5W3bYjE2jglvk076LcTautBOB9UtHztty7wNzjVsndiMcSsdUsdMy5w76w5J1U7OPTQ==",
+      "version": "1.3.702",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.702.tgz",
+      "integrity": "sha512-qJVUKFWQnF6wP7MmTngDkmm8/KPzaiTXNFOAg5j7DSa6J7kPou7mTBqC8jpUOxauQWwHR3pn4dMRdV8IE1xdtA==",
       "dev": true
     },
     "emoji-regex": {
@@ -9496,9 +9609,9 @@
       "dev": true
     },
     "eslint": {
-      "version": "7.22.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz",
-      "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==",
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.23.0.tgz",
+      "integrity": "sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "7.12.11",
@@ -9825,6 +9938,42 @@
         "path-is-absolute": "^1.0.0"
       }
     },
+    "glob-base": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+      "dev": true,
+      "requires": {
+        "glob-parent": "^2.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "dependencies": {
+        "glob-parent": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+          "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^2.0.0"
+          }
+        },
+        "is-extglob": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        }
+      }
+    },
     "glob-parent": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -10081,6 +10230,12 @@
       "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
       "dev": true
     },
+    "is-dotfile": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+      "dev": true
+    },
     "is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -10244,6 +10399,18 @@
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
       "dev": true
     },
+    "lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+      "dev": true
+    },
+    "lodash.flatten": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+      "dev": true
+    },
     "lodash.memoize": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
@@ -10262,6 +10429,12 @@
       "integrity": "sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak=",
       "dev": true
     },
+    "lodash.truncate": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+      "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
+      "dev": true
+    },
     "lodash.uniq": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@@ -10506,6 +10679,35 @@
         }
       }
     },
+    "parse-glob": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+      "dev": true,
+      "requires": {
+        "glob-base": "^0.3.0",
+        "is-dotfile": "^1.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "dependencies": {
+        "is-extglob": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        }
+      }
+    },
     "parse-json": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
@@ -13483,9 +13685,9 @@
       }
     },
     "rollup": {
-      "version": "2.42.4",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.42.4.tgz",
-      "integrity": "sha512-Zqv3EvNfcllBHyyEUM754npqsZw82VIjK34cDQMwrQ1d6aqxzeYu5yFb7smGkPU4C1Bj7HupIMeT6WU7uIdnMw==",
+      "version": "2.44.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz",
+      "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==",
       "dev": true,
       "requires": {
         "fsevents": "~2.3.1"
@@ -13764,9 +13966,9 @@
       }
     },
     "svelte": {
-      "version": "3.35.0",
-      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.35.0.tgz",
-      "integrity": "sha512-gknlZkR2sXheu/X+B7dDImwANVvK1R0QGQLd8CNIfxxGPeXBmePnxfzb6fWwTQRsYQG7lYkZXvpXJvxvpsoB7g==",
+      "version": "3.36.0",
+      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.36.0.tgz",
+      "integrity": "sha512-LSmdCYoAS6kzLff9nejB5KK5FBJaqyiivs7hPl0OJZ+OxiggI8lMAhvo5W3y8vSP0IWS5++Yb5EbKuQdzOSIoA==",
       "dev": true
     },
     "svelte-hmr": {
@@ -13777,9 +13979,9 @@
       "requires": {}
     },
     "svelte-preprocess": {
-      "version": "4.6.9",
-      "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.6.9.tgz",
-      "integrity": "sha512-SROWH0rB0DJ+0Ii264cprmNu/NJyZacs5wFD71ya93Cg/oA2lKHgQm4F6j0EWA4ktFMzeuJJm/eX6fka39hEHA==",
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.7.0.tgz",
+      "integrity": "sha512-iNrY4YGqi0LD2e6oT9YbdSzOKntxk8gmzfqso1z/lUJOZh4o6fyIqkirmiZ8/dDJFqtIE1spVgDFWgkfhLEYlw==",
       "dev": true,
       "requires": {
         "@types/pug": "^2.0.4",
@@ -13862,21 +14064,26 @@
       }
     },
     "table": {
-      "version": "6.0.7",
-      "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz",
-      "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==",
+      "version": "6.0.9",
+      "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz",
+      "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==",
       "dev": true,
       "requires": {
-        "ajv": "^7.0.2",
-        "lodash": "^4.17.20",
+        "ajv": "^8.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "lodash.clonedeep": "^4.5.0",
+        "lodash.flatten": "^4.4.0",
+        "lodash.truncate": "^4.4.2",
         "slice-ansi": "^4.0.0",
         "string-width": "^4.2.0"
       },
       "dependencies": {
         "ajv": {
-          "version": "7.2.3",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz",
-          "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==",
+          "version": "8.0.1",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.1.tgz",
+          "integrity": "sha512-46ZA4TalFcLLqX1dEU3dhdY38wAtDydJ4e7QQTVekLUTzXkb1LfqU6VOBXC/a9wiv4T094WURqJH6ZitF92Kqw==",
           "dev": true,
           "requires": {
             "fast-deep-equal": "^3.1.1",
@@ -14062,9 +14269,9 @@
       "dev": true
     },
     "vite": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-2.1.3.tgz",
-      "integrity": "sha512-bUzArZIUwADVJS/3ywCr4KKFn3a7izs4M87ZDlAlY2V34E4g1kH6p3sVNAh8/IXCn/56fwgMh3rRavPUW7qEQQ==",
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-2.1.4.tgz",
+      "integrity": "sha512-j/p0RZQvNY/auSPfazsDfo1PHtFp8ktwXPbzI6NqplzHcR3Cn/dfQWiMxL6zp8j9IWdcJP1Zfms7mxruBhStJw==",
       "dev": true,
       "requires": {
         "esbuild": "^0.9.3",
diff --git a/package.json b/package.json
index eefcbe178f38ae635c896796c48062a9e947396a..d342ed2b4000386f549b6dee45335ac520e85ebf 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
   "scripts": {
     "build": "svelte-kit build",
     "dev": "svelte-kit dev",
-    "lint": "prettier --check . && eslint .",
+    "lint": "prettier --check . && eslint--ignore-path .gitignore .",
     "prettier": "prettier --plugin-search-dir=. --write \"*.cjs\" --write \"src/*.ts\" \"src/**/*.ts\" \"src/**/*.svelte\"",
     "start": "svelte-kit start"
   },
diff --git a/tsconfig.json b/tsconfig.json
index 3b27273ec97f66e198db0a337d3277ee49faea6c..9b7cfa3fa3aebd8518648509304c134a5f2be429 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,15 +3,15 @@
     "moduleResolution": "node",
     "target": "es2018",
     /**
-			svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript
-			to enforce using \`import type\` instead of \`import\` for Types.
-			*/
+      svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript
+      to enforce using \`import type\` instead of \`import\` for Types.
+      */
     "importsNotUsedAsValues": "error",
     "isolatedModules": true,
     /**
-			To have warnings/errors of the Svelte compiler at the correct position,
-			enable source maps by default.
-			*/
+      To have warnings/errors of the Svelte compiler at the correct position,
+      enable source maps by default.
+      */
     "sourceMap": true,
     "esModuleInterop": true,
     "skipLibCheck": true,
@@ -21,6 +21,7 @@
     "checkJs": true,
     "paths": {
       "$app/*": [".svelte/dev/runtime/app/*", ".svelte/build/runtime/app/*"],
+      "$service-worker": [".svelte/build/runtime/service-worker"],
       "$lib/*": ["src/lib/*"]
     }
   },