Repository: sebadob/rauthy (language: rust)

Issue:
Frontend npm run build fails
Hi,

FreeBSD ports maintainer porting rauthy into a working package. This project looks promising sofar, hope that NLnet makes this a final thing!
Looking at the `justfile`, I'm trying to replicate building this without the use of Containers. A rust project ends up being a single binary file anyway.

Ran `npm install` in the `frontend` directory. Then `npm run build` fails with message `[vite-plugin-top-level-await] Bindings not found.`

If you have a solution for this, that's fine. Otherwise I'd have to extract the generated frontend files from the container image layers.
Can you make the frontend a separate project/distribution? Like `dani-garcia/vaultwarden` does with their package, static website separate from the rust application.

```sh
$ npm run build --loglevel verbose
npm verbose cli /usr/local/bin/node /usr/local/bin/npm
npm info using npm@10.9.2
npm info using node@v23.5.0
npm verbose title npm run build
npm verbose argv "run" "build" "--loglevel" "verbose"
npm verbose logfile logs-max:10 dir:/home/bernard/.npm/_logs/2025-01-18T19_27_36_746Z-
npm verbose logfile /home/bernard/.npm/_logs/2025-01-18T19_27_36_746Z-debug-0.log

> frontend@0.0.1 build
> vite build

vite v5.4.11 building SSR bundle for production...
✓ 399 modules transformed.
x Build failed in 1.67s
error during build:
[vite-plugin-top-level-await] Bindings not found.
    at Compiler.<anonymous> (/wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend/node_modules/@swc/core/index.js:123:23)
    at Generator.next (<anonymous>)
    at /wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend/node_modules/@swc/core/index.js:31:71
    at new Promise (<anonymous>)
    at __awaiter (/wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend/node_modules/@swc/core/index.js:27:12)
    at Compiler.parse (/wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend/node_modules/@swc/core/index.js:116:16)
    at Object.parse (/wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend/node_modules/@swc/core/index.js:328:21)
    at /wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend/node_modules/vite-plugin-top-level-await/dist/bundle-info.js:33:19
    at Array.map (<anonymous>)
    at parseBundleAsts (/wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend/node_modules/vite-plugin-top-level-await/dist/bundle-info.js:31:78)
npm verbose cwd /wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend
npm verbose os FreeBSD 14.2-RELEASE
npm verbose node v23.5.0
npm verbose npm  v10.9.2
npm verbose exit 1
npm verbose code 1
```

Contents of `/home/bernard/.npm/_logs/2025-01-18T19_27_36_746Z-debug-0.log`

```log
0 verbose cli /usr/local/bin/node /usr/local/bin/npm
1 info using npm@10.9.2
2 info using node@v23.5.0
3 silly config load:file:/usr/local/lib/node_modules/npm/npmrc
4 silly config load:file:/wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend/.npmrc
5 silly config load:file:/home/bernard/.npmrc
6 silly config load:file:/usr/local/etc/npmrc
7 verbose title npm run build
8 verbose argv "run" "build" "--loglevel" "verbose"
9 verbose logfile logs-max:10 dir:/home/bernard/.npm/_logs/2025-01-18T19_27_36_746Z-
10 verbose logfile /home/bernard/.npm/_logs/2025-01-18T19_27_36_746Z-debug-0.log
11 silly logfile start cleaning logs, removing 1 files
12 silly logfile done cleaning log files
13 verbose cwd /wrkdir/usr/ports/security/rauthy/work/rauthy-0.27.3/frontend
14 verbose os FreeBSD 14.2-RELEASE
15 verbose node v23.5.0
16 verbose npm  v10.9.2
17 verbose exit 1
18 verbose code 1
```

Thanks! Bernard.


Discussion / hints:
Found the exact same issue [here](https://github.com/Menci/vite-plugin-top-level-await/issues/25) and if it's the same  in your case, it may be possible that it won't compile at all on FreeBSD. I took a quick look at the `swc-core` packages and did not see a freebsd version of it.
However, if you find freebsd packages that could be added to the `package.json` without breaking it on linux, that woudl be the preferred solution.

If not, the easiest fix would be to simply check the static html into version control I guess. This would make it possible to build the backend directly. 

> This project looks promising sofar, hope that NLnet makes this a final thing!

Thanks! After the tasks planned with the nlnet funding are done, the project will be ready for a `v1.0.0-rc1`.
> Found the exact same issue [here](https://github.com/Menci/vite-plugin-top-level-await/issues/25) and if it's the same in your case, it may be possible that it won't compile at all on FreeBSD. I took a quick look at the `swc-core` packages and did not see a freebsd version of it. However, if you find freebsd packages that could be added to the `package.json` without breaking it on linux, that woudl be the preferred solution.

I'm a total npm noob 😊 

So if I manage to port `swc-project/swc`, that can be used as backend for this?

> If not, the easiest fix would be to simply check the static html into version control I guess. This would make it possible to build the backend directly.

Yep, exactly what I was after. Also makes sure that whatever is in your tarball is exactly the same everywhere.

> After the tasks planned with the nlnet funding are done, the project will be ready for a `v1.0.0-rc1`.

Awesome!


Fix patch:
diff --git a/.gitignore b/.gitignore
index 90f1501d7..3d0e650b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,8 +13,6 @@ data
 frontend/.next
 frontend/node_modules
 frontend/out
-static/v1
-templates/html/
 book/book
 out/
 .npm_cache
diff --git a/frontend/src/i18n/interface.ts b/frontend/src/i18n/interface.ts
index 9699555c2..9cfb0ffac 100644
--- a/frontend/src/i18n/interface.ts
+++ b/frontend/src/i18n/interface.ts
@@ -191,4 +191,4 @@ export interface I18n {
         success: string,
         userReg: string,
     },
-}
\ No newline at end of file
+}
diff --git a/justfile b/justfile
index 02662604a..f82a4b035 100644
--- a/justfile
+++ b/justfile
@@ -344,6 +344,9 @@ build-ui:
         done;
     done
 
+    git add static/v1/*
+    git add templates/html/*
+
 # builds the rauthy book
 build-docs:
     #!/usr/bin/env bash
diff --git a/src/models/src/entity/auth_codes.rs b/src/models/src/entity/auth_codes.rs
index 691a9e4ef..6dda1c86a 100644
--- a/src/models/src/entity/auth_codes.rs
+++ b/src/models/src/entity/auth_codes.rs
@@ -6,7 +6,6 @@ use serde::{Deserialize, Serialize};
 use std::ops::Add;
 use time::OffsetDateTime;
 
-// Struct for the codes from the 'authorization_code' flow
 #[derive(Debug, Deserialize, Serialize)]
 pub struct AuthCode {
     pub id: String,
diff --git a/static/v1/_app/immutable/assets/0.BjC-dB5x.css b/static/v1/_app/immutable/assets/0.BjC-dB5x.css
new file mode 100644
index 000000000..ec21618f4
--- /dev/null
+++ b/static/v1/_app/immutable/assets/0.BjC-dB5x.css
@@ -0,0 +1,1 @@
+*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}::selection{color:hsl(var(--bg));background:hsl(var(--action))}input,button,textarea,select{font:inherit}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-thumb{background-color:hsl(var(--bg-high));border-radius:30px}::-webkit-scrollbar-corner{display:none}body{width:100%;height:100dvh;font-family:system-ui,-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;scroll-behavior:smooth;scrollbar-gutter:stable;overflow:auto;display:flex;--animate-zoom: zoomIn .25s cubic-bezier(.34, 1.56, .64, 1);--din-a4-width: 595pt;--din-a4-height: 842pt}a,a:link,a:visited{color:hsl(var(--text));transition:all .15s ease-in-out}a:hover,a:active{color:hsl(var(--action));text-decoration:underline}blockquote{padding-left:.33rem;border-left:3px solid hsl(var(--accent));border-radius:var(--border-radius);background-color:hsl(var(--bg-high))}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}h1{font-size:1.5rem;margin:1rem 0;letter-spacing:-.04em}h2{font-size:1.35rem;margin:.75rem 0;letter-spacing:-.03em}h3{font-size:1.25rem;margin:.6rem 0;letter-spacing:-.025em}h4{font-size:1.2rem;margin:.65rem 0;letter-spacing:-.015em}h5{font-size:1.05rem;margin:.55rem 0;letter-spacing:-.01em}p{margin:.5rem 0;max-width:467pt}hr{border:none;border-top:1px solid hsla(var(--bg-high),.66);margin:.5rem 0}.font-default{font-family:system-ui,-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.font-label{font-family:ui-rounded,Hiragino Maru Gothic ProN,Quicksand,Comfortaa,Manjari,Arial Rounded MT,Arial Rounded MT Bold,Calibri,source-sans-pro,sans-serif}.font-mono{font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,DejaVu Sans Mono,monospace}.absolute{position:absolute}.accent{color:hsl(var(--accent))}.action{color:hsl(var(--action))}.clip{overflow:clip}.err{color:hsl(var(--error))}.relative{position:relative}.flex{display:flex;align-items:center}.flex-1{flex:1}.flex-2{flex:2}.flex-col{display:flex;flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-3{flex:3}.gap-05{gap:.5rem}.gap-10{gap:1rem}.gap-15{gap:1.5rem}.gap-20{gap:2rem}.hidden{height:0;width:0;display:none}.m-05{margin:.5rem}.m-10{margin:1rem}.ms-05{margin:0 .5rem}.ms-10{margin:0 1rem}.mh-05{margin:.5rem 0}.mh-10{margin:1rem 0}.noselect{-webkit-user-select:none;user-select:none}.pointer{cursor:pointer}.space-between{justify-content:space-between}.text{color:hsl(var(--text))}.zoom{animation:var(--animate-zoom)}label[data-required=true]:after{content:" *";color:hsla(var(--error),.9)}.fade-in{animation:fadeIn .2s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes zoomIn{0%{transform:scale(.95)}to{transform:scale(1)}}
diff --git a/static/v1/_app/immutable/assets/0.BjC-dB5x.css.br b/static/v1/_app/immutable/assets/0.BjC-dB5x.css.br
new file mode 100644
index 000000000..8c132ec36
Binary files /dev/null and b/static/v1/_app/immutable/assets/0.BjC-dB5x.css.br differ
diff --git a/static/v1/_app/immutable/assets/0.BjC-dB5x.css.gz b/static/v1/_app/immutable/assets/0.BjC-dB5x.css.gz
new file mode 100644
index 000000000..730db6bbc
Binary files /dev/null and b/static/v1/_app/immutable/assets/0.BjC-dB5x.css.gz differ
diff --git a/static/v1/_app/immutable/assets/18.GNJxucTb.css b/static/v1/_app/immutable/assets/18.GNJxucTb.css
new file mode 100644
index 000000000..a62e389fc
--- /dev/null
+++ b/static/v1/_app/immutable/assets/18.GNJxucTb.css
@@ -0,0 +1,1 @@
+.container.svelte-19xxeot{display:flex;flex-direction:column;justify-content:center;max-width:19rem;padding:20px;border:1px solid var(--col-gmid);border-radius:5px;box-shadow:5px 5px 5px #8080801a}.declined.svelte-19xxeot{color:var(--col-err)}.err.svelte-19xxeot,.desc.svelte-19xxeot{margin:0 .33rem 1rem}.err.svelte-19xxeot{color:var(--col-err)}.inline.svelte-19xxeot{display:flex;justify-content:space-between}.name.svelte-19xxeot{margin:-10px 5px 0}
diff --git a/static/v1/_app/immutable/assets/18.GNJxucTb.css.br b/static/v1/_app/immutable/assets/18.GNJxucTb.css.br
new file mode 100644
index 000000000..c2a93d405
--- /dev/null
+++ b/static/v1/_app/immutable/assets/18.GNJxucTb.css.br
@@ -0,0 +1,1 @@
+� n�<���jK(]����Ok�%n�^�LH��u[���^�ã����1FC��5�oL���%��i��Lp�w�Ηz��/ڳ��R���֐�{�;�;��YR�+Q>�}�[�Q��ͻ��=3Ƽ�)��?a%1B�بN>��U��K�<�8��1^1L�/Ě7��ތ#��{b�o#�Ɛ�0L��9�����
\ No newline at end of file
diff --git a/static/v1/_app/immutable/assets/18.GNJxucTb.css.gz b/static/v1/_app/immutable/assets/18.GNJxucTb.css.gz
new file mode 100644
index 000000000..fbfcece36
Binary files /dev/null and b/static/v1/_app/immutable/assets/18.GNJxucTb.css.gz differ
diff --git a/static/v1/_app/immutable/assets/2.CZlF3VMn.css b/static/v1/_app/immutable/assets/2.CZlF3VMn.css
new file mode 100644
index 000000000..07be037d1
--- /dev/null
+++ b/static/v1/_app/immutable/assets/2.CZlF3VMn.css
@@ -0,0 +1,1 @@
+.btn.svelte-1um1rdi{display:flex;flex-direction:column}.version.svelte-1um1rdi{position:absolute;right:0;top:calc(100dvh - 1.2rem)}
diff --git a/static/v1/_app/immutable/assets/2.CZlF3VMn.css.br b/static/v1/_app/immutable/assets/2.CZlF3VMn.css.br
new file mode 100644
index 000000000..a4630f516
Binary files /dev/null and b/static/v1/_app/immutable/assets/2.CZlF3VMn.css.br differ
diff --git a/static/v1/_app/immutable/assets/2.CZlF3VMn.css.gz b/static/v1/_app/immutable/assets/2.CZlF3VMn.css.gz
new file mode 100644
index 000000000..cd8ffc7b5
Binary files /dev/null and b/static/v1/_app/immutable/assets/2.CZlF3VMn.css.gz differ
diff --git a/static/v1/_app/immutable/assets/23.BGsNSr6e.css b/static/v1/_app/immutable/assets/23.BGsNSr6e.css
new file mode 100644
index 000000000..da6507e8f
--- /dev/null
+++ b/static/v1/_app/immutable/assets/23.BGsNSr6e.css
@@ -0,0 +1,1 @@
+.check.svelte-wuqbvo{margin-bottom:-.3rem}.row.svelte-wuqbvo{display:inline-flex;align-items:center;gap:.25rem}.token.svelte-wuqbvo{word-wrap:break-word;width:20rem}
diff --git a/static/v1/_app/immutable/assets/23.BGsNSr6e.css.br b/static/v1/_app/immutable/assets/23.BGsNSr6e.css.br
new file mode 100644
index 000000000..2f462c662
Binary files /dev/null and b/static/v1/_app/immutable/assets/23.BGsNSr6e.css.br differ
diff --git a/static/v1/_app/immutable/assets/23.BGsNSr6e.css.gz b/static/v1/_app/immutable/assets/23.BGsNSr6e.css.gz
new file mode 100644
index 000000000..7f6e51d84
Binary files /dev/null and b/static/v1/_app/immutable/assets/23.BGsNSr6e.css.gz differ
diff --git a/static/v1/_app/immutable/assets/24.GB6k287-.css b/static/v1/_app/immutable/assets/24.GB6k287-.css
new file mode 100644
index 000000000..83b03dfc1
--- /dev/null
+++ b/static/v1/_app/immutable/assets/24.GB6k287-.css
@@ -0,0 +1,1 @@
+.btn.svelte-1ljcjf3{margin:5px 0;display:flex}.container.svelte-1ljcjf3{display:flex;flex-direction:column;justify-content:center;max-width:19rem;padding:20px;border:1px solid var(--col-gmid);border-radius:5px;box-shadow:5px 5px 5px #8080801a}.errMsg.svelte-1ljcjf3{max-width:15rem;margin:-10px 10px 5px 5px;color:var(--col-err)}.flex-col.svelte-1ljcjf3{display:flex;flex-direction:column}.flex-inline.svelte-1ljcjf3{display:inline-flex;align-items:center;gap:.5rem}.forgotten.svelte-1ljcjf3{margin:0 5px;cursor:pointer}.forgotten.svelte-1ljcjf3:hover{color:var(--col-ok)}.head.svelte-1ljcjf3{display:flex;justify-content:space-between}.home.svelte-1ljcjf3{margin-right:5px;cursor:pointer}.name.svelte-1ljcjf3{margin:-10px 5px 0}.logo.svelte-1ljcjf3{margin:0 .25rem;width:84px;height:84px;display:flex;justify-content:center;align-items:center}.providers.svelte-1ljcjf3{margin-top:.66rem}.providerName.svelte-1ljcjf3{margin-top:4px}.reg.svelte-1ljcjf3{margin-left:5px}.success.svelte-1ljcjf3{margin:0 5px;color:var(--col-ok)}
diff --git a/static/v1/_app/immutable/assets/24.GB6k287-.css.br b/static/v1/_app/immutable/assets/24.GB6k287-.css.br
new file mode 100644
index 000000000..e9204e641
--- /dev/null
+++ b/static/v1/_app/immutable/assets/24.GB6k287-.css.br
@@ -0,0 +1,2 @@
+ ��w�PnD�з8��'������������,��M�<�,���_ɟ��l��'��ךE�0˜���-Fn;����j$K1�[��B|��Q,r�K�-Gw��"�DJf���!�tä����6|��������$S2�ȝ�c�I�Cp��G�L �U2�C�\\nM�h��@S&#���f֔���H�6d BCP�"�2MHi�[�_����G��_OG��ni�M1��θu�O�|H�jo2�3�K5�s#@*0�W�3�|8҆���@5�A9~[bU]��5N��֚9���n����1
+�6t-�fX��a��Q
\ No newline at end of file
diff --git a/static/v1/_app/immutable/assets/24.GB6k287-.css.gz b/static/v1/_app/immutable/assets/24.GB6k287-.css.gz
new file mode 100644
index 000000000..aa830d46a
Binary files /dev/null and b/static/v1/_app/immutable/assets/24.GB6k287-.css.gz differ
diff --git a/static/v1/_app/immutable/assets/26.HJ4svAjD.css b/static/v1/_app/immutable/assets/26.HJ4svAjD.css
new file mode 100644
index 000000000..7626c63ab
--- /dev/null
+++ b/static/v1/_app/immutable/assets/26.HJ4svAjD.css
@@ -0,0 +1,1 @@
+.btn.svelte-1r6sjfz{margin:10px}.container.svelte-1r6sjfz{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1rem}.err.svelte-1r6sjfz{margin:10px;color:var(--col-err)}
diff --git a/static/v1/_app/immutable/assets/26.HJ4svAjD.css.br b/static/v1/_app/immutable/assets/26.HJ4svAjD.css.br
new file mode 100644
index 000000000..7efc0478e
Binary files /dev/null and b/static/v1/_app/immutable/assets/26.HJ4svAjD.css.br differ
diff --git a/static/v1/_app/immutable/assets/26.HJ4svAjD.css.gz b/static/v1/_app/immutable/assets/26.HJ4svAjD.css.gz
new file mode 100644
index 000000000..61e8bac76
Binary files /dev/null and b/static/v1/_app/immutable/assets/26.HJ4svAjD.css.gz differ
diff --git a/static/v1/_app/immutable/assets/27.CnT30TCt.css b/static/v1/_app/immutable/assets/27.CnT30TCt.css
new file mode 100644
index 000000000..8381d9fa0
--- /dev/null
+++ b/static/v1/_app/immutable/assets/27.CnT30TCt.css
@@ -0,0 +1,1 @@
+.btn.svelte-1dkpwyo{margin:5px 0;display:flex}.error.svelte-1dkpwyo{color:var(--col-err)}.flex-col.svelte-1dkpwyo{display:flex;flex-direction:column}
diff --git a/static/v1/_app/immutable/assets/27.CnT30TCt.css.br b/static/v1/_app/immutable/assets/27.CnT30TCt.css.br
new file mode 100644
index 000000000..3ed51475a
Binary files /dev/null and b/static/v1/_app/immutable/assets/27.CnT30TCt.css.br differ
diff --git a/static/v1/_app/immutable/assets/27.CnT30TCt.css.gz b/static/v1/_app/immutable/assets/27.CnT30TCt.css.gz
new file mode 100644
index 000000000..ed4839215
Binary files /dev/null and b/static/v1/_app/immutable/assets/27.CnT30TCt.css.gz differ
diff --git a/static/v1/_app/immutable/assets/28.CxOoN8ns.css b/static/v1/_app/immutable/assets/28.CxOoN8ns.css
new file mode 100644
index 000000000..2ddc5583f
--- /dev/null
+++ b/static/v1/_app/immutable/assets/28.CxOoN8ns.css
@@ -0,0 +1,1 @@
+.container.svelte-1ks9oi1{display:flex;flex-direction:column;justify-content:center}.domainTxt.svelte-1ks9oi1{margin:0 5px 15px}.err.svelte-1ks9oi1{margin:0 5px;color:var(--col-err)}.success.svelte-1ks9oi1{margin:0 5px}
diff --git a/static/v1/_app/immutable/assets/28.CxOoN8ns.css.br b/static/v1/_app/immutable/assets/28.CxOoN8ns.css.br
new file mode 100644
index 000000000..5bbf882af
Binary files /dev/null and b/static/v1/_app/immutable/assets/28.CxOoN8ns.css.br differ
diff --git a/static/v1/_app/immutable/assets/28.CxOoN8ns.css.gz b/static/v1/_app/immutable/assets/28.CxOoN8ns.css.gz
new file mode 100644
index 000000000..e40073fc8
Binary files /dev/null and b/static/v1/_app/immutable/assets/28.CxOoN8ns.css.gz differ
diff --git a/static/v1/_app/immutable/assets/29.D1v94sLe.css b/static/v1/_app/immutable/assets/29.D1v94sLe.css
new file mode 100644
index 000000000..66126e7f0
--- /dev/null
+++ b/static/v1/_app/immutable/assets/29.D1v94sLe.css
@@ -0,0 +1,1 @@
+p.svelte-1g19pwu{margin:.5rem 0}.btn.svelte-1g19pwu{margin-left:-5px;width:7.5rem}.container.svelte-1g19pwu{display:flex;flex-direction:column;justify-content:center}
diff --git a/static/v1/_app/immutable/assets/29.D1v94sLe.css.br b/static/v1/_app/immutable/assets/29.D1v94sLe.css.br
new file mode 100644
index 000000000..62066f30b
Binary files /dev/null and b/static/v1/_app/immutable/assets/29.D1v94sLe.css.br differ
diff --git a/static/v1/_app/immutable/assets/29.D1v94sLe.css.gz b/static/v1/_app/immutable/assets/29.D1v94sLe.css.gz
new file mode 100644
index 000000000..45758ce9a
Binary files /dev/null and b/static/v1/_app/immutable/assets/29.D1v94sLe.css.gz differ
diff --git a/static/v1/_app/immutable/assets/3.CF_aMXlW.css b/static/v1/_app/immutable/assets/3.CF_aMXlW.css
new file mode 100644
index 000000000..d00abc385
--- /dev/null
+++ b/static/v1/_app/immutable/assets/3.CF_aMXlW.css
@@ -0,0 +1,1 @@
+dialog.svelte-l3vtl3{border-radius:3px;border:none;padding:0}dialog.svelte-l3vtl3::backdrop{background:#0000004d}dialog.svelte-l3vtl3>div:where(.svelte-l3vtl3){padding:1rem}dialog.svelte-l3vtl3>div:where(.svelte-l3vtl3)>div:where(.svelte-l3vtl3){position:relative}dialog[open].svelte-l3vtl3{animation:svelte-l3vtl3-zoom .3s cubic-bezier(.34,1.56,.64,1)}@keyframes svelte-l3vtl3-zoom{0%{transform:scale(.95)}to{transform:scale(1)}}dialog[open].svelte-l3vtl3::backdrop{animation:svelte-l3vtl3-fade .2s ease-out}@keyframes svelte-l3vtl3-fade{0%{opacity:0}to{opacity:1}}.close.svelte-l3vtl3{margin:-1rem -1rem 0 0;cursor:pointer;text-align:right}.inner.svelte-l3vtl3{margin-top:-.5rem}.container.svelte-bckoh9{margin:0 .25rem;padding:10px}.label.svelte-bckoh9{width:10rem}.labelPhone.svelte-bckoh9{width:12rem}.fed-btn.svelte-bckoh9{margin-left:-5px}.flex-inline.svelte-bckoh9{display:inline-flex;align-items:center;gap:.5rem}.link-err.svelte-bckoh9{margin-left:5px;color:var(--col-err)}.provider-link.svelte-bckoh9{color:var(--col-act2);cursor:pointer}.provider-name.svelte-bckoh9{margin-bottom:-4px}.providers.svelte-bckoh9{margin-top:.66rem;display:flex}.row.svelte-bckoh9{display:flex}.value.svelte-bckoh9{max-width:18rem;word-break:break-word}.container.svelte-1xh7x72{padding:0 5px;display:flex;flex-direction:column}.err.svelte-1xh7x72{width:230px;margin:-5px 10px 0 35px;padding-right:5px;color:var(--col-err)}.err.svelte-1xh7x72{margin:5px;color:var(--col-err)}.bottom.svelte-1xh7x72{height:1em}.success.svelte-1xh7x72{margin:5px;color:var(--col-ok)}.wrapper.svelte-1xh7x72{margin-top:10px;display:flex;flex-direction:row}p.svelte-q7vfo0{margin:.5rem 0}.container.svelte-q7vfo0{padding-left:10px;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.button.svelte-q7vfo0{margin-left:-.33rem}.deleteBtn.svelte-q7vfo0{margin-right:-.8rem}.keysContainer.svelte-q7vfo0{max-height:20rem;padding-right:2rem;overflow-y:auto}.keyContainer.svelte-q7vfo0{margin:.33rem 0}.keysHeader.svelte-q7vfo0{margin-top:.5rem;font-weight:700}.msg.svelte-q7vfo0,.err.svelte-q7vfo0{margin:5px;text-align:center}.err.svelte-q7vfo0{color:var(--col-err)}.msg.svelte-q7vfo0{color:var(--col-ok)}.nameUv.svelte-q7vfo0{display:inline-flex;align-items:center;gap:.25rem}.regBtns.svelte-q7vfo0{display:flex;align-items:center}.regNewBtn.svelte-q7vfo0{margin:0 0 .5rem -.33rem}.row.svelte-q7vfo0{display:flex;gap:.5rem;justify-content:space-between;align-items:center}.container.svelte-dpnwj7{margin-top:5px;margin-bottom:10px}.err.svelte-dpnwj7{margin:-5px 10px 5px;text-align:left;color:var(--col-err)}p.svelte-od1aaa{margin:.5rem 0}.m-05.svelte-od1aaa{margin:.5rem}.wrapper.svelte-od1aaa{display:flex;flex-direction:row}.container.svelte-od1aaa{padding:0 5px;display:flex;flex-direction:column}.convertPasskey.svelte-od1aaa{margin:1rem 0}.err.svelte-od1aaa{width:230px;margin:-5px 10px 0 35px;padding-right:5px;color:var(--col-err)}.err.svelte-od1aaa{margin:5px;color:var(--col-err)}.bottom.svelte-od1aaa{height:1em}.success.svelte-od1aaa{margin:5px;color:var(--col-ok)}p.svelte-naxx27{margin:0 .5rem .5rem}textarea.svelte-naxx27{margin:.5rem;resize:none}.bottom.svelte-naxx27{height:1em}.container.svelte-naxx27{padding:0 5px;display:flex;flex-direction:column}.err.svelte-naxx27{width:230px;margin:-5px 10px 0 35px;padding-right:5px;color:var(--col-err)}.err.svelte-naxx27{margin:5px;color:var(--col-err)}.label.svelte-naxx27{width:12rem}.row.svelte-naxx27{margin:.5rem;display:flex;gap:.5rem}.success.svelte-naxx27{margin:5px;color:var(--col-ok)}.wrapper.svelte-naxx27{margin-top:10px;display:flex;flex-direction:row}.container.svelte-1nrg3bb{padding-left:10px;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.container.svelte-47czfz{display:flex;flex-direction:column}.header.svelte-47czfz{width:100%;margin-left:10px;margin-bottom:-10px}.headerPhone.svelte-47czfz{margin-left:10px;margin-bottom:-10px}.inner.svelte-47czfz{width:30rem}.innerPhone.svelte-47czfz{width:100vw}.wrapper.svelte-47czfz{height:calc(100dvh - 20px)}
diff --git a/static/v1/_app/immutable/assets/3.CF_aMXlW.css.br b/static/v1/_app/immutable/assets/3.CF_aMXlW.css.br
new file mode 100644
index 000000000..73af60980
Binary files /dev/null and b/static/v1/_app/immutable/assets/3.CF_aMXlW.css.br differ
diff --git a/static/v1/_app/immutable/assets/3.CF_aMXlW.css.gz b/static/v1/_app/immutable/assets/3.CF_aMXlW.css.gz
new file mode 100644
index 000000000..74a5643a7
Binary files /dev/null and b/static/v1/_app/immutable/assets/3.CF_aMXlW.css.gz differ
diff --git a/static/v1/_app/immutable/assets/30.DvqR7Iqw.css b/static/v1/_app/immutable/assets/30.DvqR7Iqw.css
new file mode 100644
index 000000000..f7ecc725c
--- /dev/null
+++ b/static/v1/_app/immutable/assets/30.DvqR7Iqw.css
@@ -0,0 +1,1 @@
+a.svelte-189rvns,a.svelte-189rvns:visited{color:var(--col-act2)}.container.svelte-189rvns{display:flex;flex-direction:column;justify-content:center;max-width:20.5rem}.err.svelte-189rvns{margin:0 5px;color:var(--col-err)}.success.svelte-189rvns{margin:5px;color:var(--col-acnt)}
diff --git a/static/v1/_app/immutable/assets/30.DvqR7Iqw.css.br b/static/v1/_app/immutable/assets/30.DvqR7Iqw.css.br
new file mode 100644
index 000000000..686c34000
Binary files /dev/null and b/static/v1/_app/immutable/assets/30.DvqR7Iqw.css.br differ
diff --git a/static/v1/_app/immutable/assets/30.DvqR7Iqw.css.gz b/static/v1/_app/immutable/assets/30.DvqR7Iqw.css.gz
new file mode 100644
index 000000000..430d211c4
Binary files /dev/null and b/static/v1/_app/immutable/assets/30.DvqR7Iqw.css.gz differ
diff --git a/static/v1/_app/immutable/assets/AdminMainPre.ZcanbrCY.css b/static/v1/_app/immutable/assets/AdminMainPre.ZcanbrCY.css
new file mode 100644
index 000000000..10fb89877
--- /dev/null
+++ b/static/v1/_app/immutable/assets/AdminMainPre.ZcanbrCY.css
@@ -0,0 +1,1 @@
+.burger.svelte-1qa3cal:hover,.close.svelte-1qa3cal:hover{cursor:pointer;color:var(--col-act2)}.burger.svelte-1qa3cal{position:absolute;top:0;left:0}.close.svelte-1qa3cal{position:absolute;top:0}.menu.svelte-1qa3cal{display:flex;flex-direction:column;justify-content:space-between}.links.svelte-1qa3cal{flex:1}.nav.svelte-1qa3cal{height:100vh;border-right:1px solid var(--col-gmid);box-shadow:1px 0 5px var(--col-gmid);display:flex;flex-direction:column;justify-content:space-between}.version.svelte-1qa3cal{margin:0 0 -15px -5px}.entry.svelte-ueauq5,.entryCollapsed.svelte-ueauq5{display:flex;align-items:center;color:var(--col-text);cursor:pointer}.entry.svelte-ueauq5{margin:10px 0}.entryCollapsed.svelte-ueauq5{flex-direction:column;text-align:center;margin:10px 0}.entry.svelte-ueauq5:hover,.entryCollapsed.svelte-ueauq5:hover{color:var(--col-act2)}.label.svelte-ueauq5{margin-top:5px;margin-left:3px}.labelCollapsed.svelte-ueauq5{font-size:.8rem}.selected.svelte-ueauq5,.selectedCollapsed.svelte-ueauq5{color:var(--col-act2a)}.selected.svelte-ueauq5:after{margin-top:3px;padding-left:5px;content:"◄"}.selectedCollapsed.svelte-ueauq5{text-decoration:underline;text-underline:var(--col-act2)}.back.svelte-1yhbvsw{position:absolute;top:-12px;right:8px;cursor:pointer;color:var(--col-gmid)}.backWrap.svelte-1yhbvsw{position:relative}.opts.svelte-1yhbvsw{margin-right:15px}.container.svelte-1yhbvsw{width:100%;display:flex;align-items:center}input.svelte-1yhbvsw{padding:5px 30px 5px 25px;background:var(--col-bg);border:1px solid var(--col-glow);border-radius:3px;color:var(--col-text);font-size:1.05rem;outline:none;box-shadow:1px 1px 2px var(--col-gmid)}input.svelte-1yhbvsw:hover{background:#fff}input.svelte-1yhbvsw:focus{background:#fff;border:1px solid var(--col-acnt)}.inputBar.svelte-1yhbvsw{position:relative}.magnify.svelte-1yhbvsw{position:absolute;top:6px;left:5px}select.svelte-1yhbvsw{height:2.13rem;padding-top:.2rem;padding-left:.5rem;color:var(--col-text);background:var(--col-bg);font-size:1.05rem;border-radius:3px;cursor:pointer;border:1px solid var(--col-glow);box-shadow:1px 1px 2px var(--col-gmid)}.icon.svelte-spg3op{margin:0 2px;padding:1px 1px 0;color:var(--col-act2a);border:1px solid var(--col-act2);border-radius:5px;cursor:pointer}.item.svelte-spg3op{padding:3px 5px;cursor:pointer}.item.svelte-spg3op:hover{background:var(--col-act1);color:#fff}.itemsContainer.svelte-spg3op{position:absolute;top:0;left:30px;background:var(--col-bg);border:1px solid var(--col-acnt);border-radius:5px;box-shadow:3px 3px 3px #00000026;overflow:hidden;z-index:1}.items.svelte-spg3op{overflow-y:auto}.search.svelte-spg3op{height:27px;margin:-6px -6px 10px;border-radius:3px}.wrapper.svelte-spg3op{position:relative}.label.svelte-jphwq{position:relative;margin:0 3px;padding:5px 17px 5px 7px;border:1px solid var(--col-acnt);border-radius:6px;background:var(--col-acnta);color:#fff}.icon.svelte-jphwq{position:absolute;top:0;right:1px;cursor:pointer}.container.svelte-1iraqg1{display:flex;flex-wrap:wrap;gap:.5rem 0}.container.svelte-tl4x7h{padding:0 10px 10px}.err.svelte-tl4x7h{color:var(--col-err)}.err.svelte-tl4x7h,.success.svelte-tl4x7h{margin:0 7px}.success.svelte-tl4x7h{margin:0 5px}.row.svelte-tl4x7h{display:flex;justify-content:flex-start;align-items:center}.label.svelte-tl4x7h{margin:5px 5px 0;font-size:.9rem}.language.svelte-tl4x7h{display:flex;gap:.33rem}.success.svelte-tl4x7h{color:var(--col-ok)}.unit.svelte-tl4x7h{margin:7px 0}.value.svelte-tl4x7h{margin-left:5px;display:flex}.container.svelte-8ppjyk{margin:0 10px 10px}.desc.svelte-8ppjyk{margin:7px}.err.svelte-8ppjyk{color:var(--col-err)}.err.svelte-8ppjyk,.success.svelte-8ppjyk{margin:0 7px}.success.svelte-8ppjyk{color:var(--col-ok)}.container.svelte-1ofwsjt{margin:0 10px 20px}.err.svelte-1ofwsjt{color:var(--col-err)}.err.svelte-1ofwsjt,.success.svelte-1ofwsjt{margin:0 5px}.label.svelte-1ofwsjt{margin:5px 7px}.success.svelte-1ofwsjt{color:var(--col-ok)}.container.svelte-iv4fzr{margin:0 10px 10px}.desc.svelte-iv4fzr{margin:5px 7px}.err.svelte-iv4fzr{color:var(--col-err)}.err.svelte-iv4fzr,.success.svelte-iv4fzr{margin:0 7px}.success.svelte-iv4fzr{color:var(--col-ok)}.container.svelte-1a9qw6n{margin:0 10px 10px}.deleteBtn.svelte-1a9qw6n{text-align:right;margin:-.33rem 0 0 -.8rem}.desc.svelte-1a9qw6n{margin:7px}.err.svelte-1a9qw6n{margin:.5rem;color:var(--col-err)}.keyContainer.svelte-1a9qw6n{margin:.33rem 0}.keysContainer.svelte-1a9qw6n{margin:.5rem;gap:.5rem;padding-right:2rem;overflow-y:auto}.label.svelte-1a9qw6n{width:7rem}.row.svelte-1a9qw6n{display:flex;gap:.5rem}.container.svelte-nw2ucx{margin-bottom:1rem;padding-left:1rem;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.container.svelte-1y7ceqm{padding:10px}.btn.svelte-1y7ceqm{margin:10px 0}.header.svelte-1y7ceqm{display:flex;font-size:.9rem;margin-left:10px}.err.svelte-1y7ceqm{margin:0 7px;color:var(--col-err)}.label.svelte-1y7ceqm{margin:10px 3px 5px;font-size:.9rem}.language.svelte-1y7ceqm{margin:7px 5px;display:flex;gap:.33rem}.unit.svelte-1y7ceqm{margin:7px 5px}.tiles.svelte-1y7ceqm{margin-left:5px}.opts.svelte-1ojt600{margin-right:15px}.container.svelte-1ojt600{width:100%;display:flex;align-items:center}.icon.svelte-1ojt600{margin-top:5px;cursor:pointer;color:var(--col-act2a)}select.svelte-1ojt600{height:2.13rem;padding-top:.2rem;padding-left:.5rem;color:var(--col-text);background:var(--col-bg);font-size:1.05rem;border-radius:3px;cursor:pointer;border:1px solid var(--col-glow);box-shadow:1px 1px 2px var(--col-gmid)}.divider.svelte-16rtgja{margin:0 1rem}.container.svelte-16rtgja{display:flex;align-items:center;padding:10px 0 20px}.chunkSize.svelte-9iw34a{margin-left:10px}.container.svelte-9iw34a{display:flex;align-items:center;padding:.25rem .5rem}.icon.svelte-9iw34a{cursor:pointer;color:var(--col-act2)}.iconRight.svelte-9iw34a{margin:0 0 -3px -8px}.iconLeft.svelte-9iw34a{margin:-5px 0 0;transform:rotate(180deg)}.links.svelte-9iw34a{display:flex;margin:-3px 10px 0 0}.link.svelte-9iw34a{margin:2px;padding:2px;cursor:pointer;color:var(--col-act2)}.selected.svelte-9iw34a{font-weight:700;text-decoration:underline}.total.svelte-9iw34a{margin:.2rem 0 0 .5rem;font-weight:700;font-size:.9rem}.chunkSize.svelte-1jvef4m{margin-left:10px}.container.svelte-1jvef4m{display:flex;align-items:center;padding:.25rem .5rem}.icon.svelte-1jvef4m{cursor:pointer;color:var(--col-act2)}.iconRight.svelte-1jvef4m{margin:0 0 -3px -8px}.iconLeft.svelte-1jvef4m{margin:-5px 0 0;transform:rotate(180deg)}.links.svelte-1jvef4m{display:flex;margin:-3px 10px 0 0}.pageNo.svelte-1jvef4m{margin:2px;padding:2px;color:var(--col-acnt)}.total.svelte-1jvef4m{margin:.2rem 0 0 .5rem;font-weight:700;font-size:.9rem}#users.svelte-1gwjtx9 div:where(.svelte-1gwjtx9):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}.content.svelte-1mqfi4i{padding-left:1rem;padding-top:2.5rem;display:flex;flex-direction:column;height:100vh;flex:1;overflow-y:auto;transition:all .25s ease-in-out}.mr.svelte-1mqfi4i{margin-right:var(--width-events)}.mrCollapsed.svelte-1mqfi4i{margin-right:var(--width-events-collapsed)}.mrWide.svelte-1mqfi4i{margin-right:var(--width-events-wide)}#roles.svelte-161tj4u div:where(.svelte-161tj4u):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}.container.svelte-17in7jd{padding:0 10px 10px}.err.svelte-17in7jd{color:var(--col-err)}.err.svelte-17in7jd,.success.svelte-17in7jd{margin:0 7px}.success.svelte-17in7jd{margin:0 5px}.label.svelte-17in7jd{margin:5px 5px 0;font-size:.9rem}.success.svelte-17in7jd{color:var(--col-ok)}.unit.svelte-17in7jd{margin:7px 0}.value.svelte-17in7jd{margin-left:5px;display:flex}#groups.svelte-106k2r5 div:where(.svelte-106k2r5):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}.container.svelte-r30xs6{padding:10px}.err.svelte-r30xs6{color:var(--col-err)}.err.svelte-r30xs6,.success.svelte-r30xs6{margin:0 7px}.header.svelte-r30xs6{display:flex;font-size:.9rem;margin-left:10px}.success.svelte-r30xs6{color:var(--col-ok)}.container.svelte-guvobw{padding:0 10px 10px}.desc.svelte-guvobw{margin:0 5px}.err.svelte-guvobw{color:var(--col-err)}.err.svelte-guvobw,.success.svelte-guvobw{margin:0 7px}.success.svelte-guvobw{margin:0 5px}.label.svelte-guvobw{margin:5px 5px 0;font-size:.9rem}.success.svelte-guvobw{color:var(--col-ok)}.unit.svelte-guvobw{margin:7px 0}.value.svelte-guvobw{margin-left:5px;display:flex}#scopes.svelte-1tlglcs div:where(.svelte-1tlglcs):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}.entry.svelte-f2hz2l{display:flex;justify-content:flex-end;align-items:center}.label.svelte-f2hz2l{flex:1;margin:5px 10px 2px 0}.list.svelte-f2hz2l{display:flex;flex-direction:column;margin-left:1px}.container.svelte-nzivgu{margin:5px 0}.err.svelte-nzivgu{margin-top:-10px;margin-left:5px;padding:0 10px;font-size:.85rem;color:var(--col-err)}code.svelte-1pba61y{font-size:.95rem}.challenges.svelte-1pba61y{width:140px}.confidential.svelte-1pba61y{justify-content:flex-end;margin-right:10px}.container.svelte-1pba61y{padding:0 15px 10px}.desc.svelte-1pba61y{margin:10px 5px}.err.svelte-1pba61y{color:var(--col-err)}.mainErr.svelte-1pba61y,.success.svelte-1pba61y{display:flex;align-items:center;margin:0 10px}.flows.svelte-1pba61y{width:250px}.label.svelte-1pba61y{margin-top:5px;font-size:.9rem}.separator.svelte-1pba61y{height:10px;width:30px}.row.svelte-1pba61y{display:flex;justify-content:flex-start;align-items:center}.success.svelte-1pba61y{color:var(--col-ok)}.unit.svelte-1pba61y{margin:7px 5px}.value.svelte-1pba61y{display:flex;align-items:center}.container.svelte-3m83zw{margin:0 10px 20px}.err.svelte-3m83zw{display:flex;align-items:center;margin:0 10px;color:var(--col-err)}.btn.svelte-icxpvn{height:30px;font-weight:700;border-radius:3px;overflow:hidden}.load.svelte-icxpvn{display:flex;justify-content:center}.txt.svelte-icxpvn{margin-top:1px}.wrap.svelte-icxpvn{height:32px;margin:5px}.btn.svelte-115vejc{position:absolute;top:-32px;right:10px;margin-left:100px;opacity:.85;cursor:pointer}.container.svelte-115vejc{display:flex;flex-direction:column;margin-bottom:3px}input.svelte-115vejc{margin:12px 5px 5px;padding:5px 10px;border-radius:7px;font-size:1.05rem;outline:none}.label.svelte-115vejc{position:relative}.err.svelte-115vejc{margin-top:-6px;margin-left:5px;padding:0 10px;font-size:.85rem}.labelInner.svelte-115vejc{position:absolute;top:0;left:11px;border-radius:5px;padding:0 5px;font-size:.8rem}.rel.svelte-115vejc{position:relative}.show.svelte-115vejc{opacity:.85}.btn.svelte-rscdc0{margin:5px 0}.container.svelte-rscdc0{width:300px;height:455px;display:flex;flex-direction:column;justify-content:center;padding:20px;border-radius:5px;box-shadow:5px 5px 5px #8080801a}.head.svelte-rscdc0{display:flex;justify-content:space-between;padding-right:35px}.logo.svelte-rscdc0{width:84px;height:84px}.name.svelte-rscdc0{margin:-10px 5px 0}.preview.svelte-rscdc0{margin:0 5px;font-size:.85rem}.btn.svelte-jso5mh,.text.svelte-jso5mh{color:var(--col-act2)}.btn.svelte-jso5mh{margin-right:5px;cursor:pointer}.container.svelte-jso5mh{display:flex;flex-direction:row;align-items:center}.imageInput.svelte-jso5mh{display:none}.text.svelte-jso5mh{font-size:.9rem;cursor:pointer}.btns.svelte-11vvvzr{margin-top:1rem}.col1.svelte-11vvvzr,.col2.svelte-11vvvzr{display:flex;flex-direction:column}.colorBlock.svelte-11vvvzr,.colInput.svelte-11vvvzr{position:absolute;top:-.825rem;right:.45rem;width:1.9rem;aspect-ratio:1;border-radius:0 5px 5px 0}.colorBlock.svelte-11vvvzr{z-index:1;pointer-events:none}.colInput.svelte-11vvvzr{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;cursor:pointer}.colInputWrap.svelte-11vvvzr{position:relative;margin:auto}.colors.svelte-11vvvzr{display:flex;margin:.5rem .33rem .5rem .15rem}.container.svelte-11vvvzr{margin:0 10px 20px;display:flex;flex-direction:column}.err.svelte-11vvvzr,.success.svelte-11vvvzr{margin:0 5px}.err.svelte-11vvvzr{display:flex;align-items:center;color:var(--col-err)}.inner.svelte-11vvvzr{display:flex;flex-wrap:wrap}.label.svelte-11vvvzr{margin:5px 7px}.logo.svelte-11vvvzr{margin-top:1.45rem;width:84px;height:84px}.preview.svelte-11vvvzr{margin:.33rem}.row.svelte-11vvvzr{display:flex}.success.svelte-11vvvzr{color:var(--col-ok)}.container.svelte-gbj18i{padding:10px}.err.svelte-gbj18i{color:var(--col-err)}.err.svelte-gbj18i,.success.svelte-gbj18i{margin:0 7px}.header.svelte-gbj18i{display:flex;font-size:.9rem;margin-left:10px}.label.svelte-gbj18i{margin:5px 5px 0;font-size:.9rem}.success.svelte-gbj18i{color:var(--col-ok)}.unit.svelte-gbj18i{margin:7px 0}.value.svelte-gbj18i{margin-left:5px;display:flex}#clients.svelte-z13sh div:where(.svelte-z13sh):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}.container.svelte-yz275t{max-width:48.5rem}.header.svelte-yz275t{display:flex;flex-wrap:wrap}.uid.svelte-yz275t{min-width:14rem}.ip.svelte-yz275t{width:8rem;text-align:right}.date.svelte-yz275t{width:10rem;text-align:right}.details.svelte-yz275t{padding:1rem}.expired.svelte-yz275t{background:var(--col-gmid)}.flex.svelte-yz275t{display:flex;align-items:center}.label.svelte-yz275t{width:6rem;margin-right:.25rem;font-weight:700;font-size:.9rem}#sessions.svelte-80zd7k div:where(.svelte-80zd7k):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}.button.svelte-80zd7k{margin:10px 0 0 25px}.row.svelte-80zd7k{display:flex;flex-wrap:wrap;align-items:center}.container.svelte-1mi5990{padding:10px}.desc.svelte-1mi5990{margin:0 5px 15px}.header.svelte-1mi5990{display:flex;font-size:.9rem;margin-left:10px}.err.svelte-1mi5990{color:var(--col-err)}.err.svelte-1mi5990,.success.svelte-1mi5990{margin:0 7px}.success.svelte-1mi5990{color:var(--col-ok)}.container.svelte-2o3w7i{padding:0 10px 10px}.err.svelte-2o3w7i{color:var(--col-err)}.err.svelte-2o3w7i,.success.svelte-2o3w7i{margin:0 7px}.success.svelte-2o3w7i{color:var(--col-ok)}#attrs.svelte-1yl9ae5 div:where(.svelte-1yl9ae5):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}.container.svelte-151ox8b{margin:0 20px}.column.svelte-151ox8b,.columnWide.svelte-151ox8b{padding:5px 2px;border-bottom:1px solid var(--col-gmid)}.column.svelte-151ox8b{width:90px}.columnWide.svelte-151ox8b{width:130px}.row.svelte-151ox8b{display:flex}.row.svelte-151ox8b:hover{background:var(--col-gmid)}.container.svelte-1digv30{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.result.svelte-1digv30{margin-top:5px;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.wrapper.svelte-1digv30{display:flex}.container.svelte-6927oe{margin:0 10px}.label.svelte-6927oe{width:90px}code.svelte-6927oe{padding:0 3px;background:var(--col-inact)}.valRow.svelte-6927oe{display:flex}.btn.svelte-3rk97c{margin:10px 0}.desc.svelte-3rk97c{margin:0 5px}.err.svelte-3rk97c{color:var(--col-err)}.err.svelte-3rk97c,.success.svelte-3rk97c{margin:0 5px}.label.svelte-3rk97c{width:90px}.keysBlock.svelte-3rk97c,.migrateBlock.svelte-3rk97c{margin-top:20px}.success.svelte-3rk97c{color:var(--col-ok)}.valRow.svelte-3rk97c{display:flex}.wrapper.svelte-3rk97c{margin:0 5px}.desc.svelte-10h0sak{margin:20px 5px 10px}.err.svelte-10h0sak{color:var(--col-err)}.err.svelte-10h0sak,.success.svelte-10h0sak{margin:0 5px}.row.svelte-10h0sak{display:flex}.success.svelte-10h0sak{color:var(--col-ok)}.wrapper.svelte-10h0sak{margin:0 5px}.cert.svelte-2yt27i{display:flex;justify-content:space-between;max-width:420px;margin:5px;padding:5px;border:1px solid var(--col-acnt);border-radius:5px;box-shadow:0 0 5px #80808033}.cert.svelte-2yt27i:hover{background-color:var(--col-gmid)}.data.svelte-2yt27i{flex:1}.details.svelte-2yt27i{position:relative}.detailsInner.svelte-2yt27i{display:block;position:absolute;top:-157px;left:5px;z-index:1}.right.svelte-2yt27i{text-align:right}.text.svelte-2yt27i{border-radius:5px}.desc.svelte-a4xw46{margin:20px 5px 10px;max-width:600px}.err.svelte-a4xw46{color:var(--col-err)}.err.svelte-a4xw46,.success.svelte-a4xw46{margin:0 5px}.success.svelte-a4xw46{color:var(--col-ok)}.wrapper.svelte-a4xw46{margin:0 5px}.container.svelte-5h65jg{display:flex;flex-direction:column;width:100%;max-width:1280px;max-height:90vh;overflow-y:auto}a.svelte-x4sug2{text-decoration:none;color:var(--col-act2);font-weight:700}a.svelte-x4sug2:hover{color:var(--col-act2a)}p.svelte-x4sug2{margin:.5rem 0}.container.svelte-x4sug2{display:flex;flex-direction:column;width:100%;max-width:1280px;max-height:90vh;overflow-y:auto}.event.svelte-a54rx3,.eventNew.svelte-a54rx3{width:100%;min-width:5px;padding:0 1rem;margin-bottom:.33rem;word-break:break-word}.event.svelte-a54rx3{background:var(--col-bg);color:var(--col-text);transition:all 1s ease-in-out}.eventNew.svelte-a54rx3{background:var(--col-text);color:var(--col-bg);transition:all .25s ease-in-out}.col-ts.svelte-a54rx3{width:10rem}.col-typ.svelte-a54rx3{width:9.5rem}.col-ip.svelte-a54rx3{width:7.5rem}.row.svelte-a54rx3{display:inline-flex;flex-wrap:wrap}.showCollapsed.svelte-a54rx3{padding:0 .25rem}.legend.svelte-1imwz5t,.legendWide.svelte-1imwz5t{width:100%}.legendWide.svelte-1imwz5t{display:flex;justify-content:space-between}.legendEntry.svelte-1imwz5t{padding:0 1rem}.legendEntryWide.svelte-1imwz5t{padding:0 .2rem}#events.svelte-1ymfjrj{position:absolute;right:0;top:0;height:100dvh;display:flex;flex-direction:column;justify-content:space-between;background:var(--col-bg);box-shadow:-2px 0 5px var(--col-gmid);transition:all .25s ease-in-out}.data.svelte-1ymfjrj,.dataCollapsed.svelte-1ymfjrj,.dataWide.svelte-1ymfjrj{overflow-y:auto}.data.svelte-1ymfjrj{max-height:calc(100dvh - 12.5rem)}.dataCollapsed.svelte-1ymfjrj{max-height:100dvh}.dataWide.svelte-1ymfjrj{max-height:calc(100dvh - 5.1rem)}.header.svelte-1ymfjrj,.opts.svelte-1ymfjrj{display:flex;justify-content:space-between;align-items:center;padding:0 .5rem 0 1.25rem}.headerWideInner.svelte-1ymfjrj{display:flex;align-items:center;gap:2rem}.opts.svelte-1ymfjrj{padding:0 1.25rem;width:100%}.widthDefault.svelte-1ymfjrj{width:var(--width-events)}.widthCollapsed.svelte-1ymfjrj{width:var(--width-events-collapsed)}.widthWide.svelte-1ymfjrj{width:var(--width-events-wide)}#blacklist.svelte-1a7hztb div:where(.svelte-1a7hztb):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}.addNew.svelte-1a7hztb{margin-bottom:.6rem}.addNewInputs.svelte-1a7hztb{margin:0 0 1rem -.25rem;display:flex;flex-direction:row;align-items:center}.blacklisted.svelte-1a7hztb{display:flex;flex-direction:row;margin:.25rem .5rem}.delete.svelte-1a7hztb{cursor:pointer}.err.svelte-1a7hztb{color:var(--col-err)}.exp.svelte-1a7hztb{width:10rem}.ip.svelte-1a7hztb{width:9rem}.saveBtn.svelte-1a7hztb{margin-top:.25rem}.top.svelte-1a7hztb{display:inline-flex;align-items:center;gap:1rem}.cell.svelte-lgl56a{width:3.5rem;text-align:center}.label.svelte-lgl56a{width:6.5rem}.matrix.svelte-lgl56a{width:20.5rem;margin:.5rem}.mr.svelte-lgl56a{display:flex;align-items:center}.mr.svelte-lgl56a:hover{background:var(--col-gmid)}.pointer.svelte-lgl56a{cursor:pointer}.container.svelte-ubtepy{margin-bottom:1rem}.err.svelte-ubtepy{color:var(--col-err)}.saveBtn.svelte-ubtepy{margin-top:.25rem}.switch.svelte-ubtepy{display:flex;align-items:center;gap:.5rem;margin:.5rem}.container.svelte-1a3jnb3{padding:0 10px 10px}.err.svelte-1a3jnb3{color:var(--col-err)}.err.svelte-1a3jnb3,.success.svelte-1a3jnb3{margin:0 7px}.success.svelte-1a3jnb3{margin:0 5px}.label.svelte-1a3jnb3{margin:5px 5px 0;font-size:.9rem}.success.svelte-1a3jnb3{color:var(--col-ok)}.switch.svelte-1a3jnb3{display:flex;align-items:center;gap:.5rem;margin:.5rem}.unit.svelte-1a3jnb3{margin:7px 0}.value.svelte-1a3jnb3{margin-left:5px;display:flex}.container.svelte-1jljqe9{margin:0 10px 20px}.err.svelte-1jljqe9{display:flex;align-items:center;margin:0 10px;color:var(--col-err)}.label.svelte-1jljqe9{margin:5px 7px}.iconsOuter.svelte-s24qr4{position:relative}.iconsInner.svelte-s24qr4{position:absolute;top:2px;right:1px;cursor:pointer;opacity:.85}textarea.svelte-s24qr4{resize:none;border:1px solid var(--col-inact);border-radius:3px;outline:none}textarea.svelte-s24qr4:focus{resize:none;border:1px solid var(--col-acnt)}.show.svelte-s24qr4{position:absolute;top:-1px;right:20px;cursor:pointer}.container.svelte-1vixcxf{margin:0 10px 20px}.container.svelte-1vixcxf>p:where(.svelte-1vixcxf){margin:1rem .5rem;max-width:27rem}.err.svelte-1vixcxf{display:flex;align-items:center;margin:0 10px;color:var(--col-err)}.headerCode.svelte-1vixcxf{font-size:1.1rem}.headerCodeSmall.svelte-1vixcxf{font-size:1rem}.secret.svelte-1vixcxf{margin-top:1rem;max-width:40rem}#keys.svelte-1hg1l4q div:where(.svelte-1hg1l4q):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}.addNew.svelte-1hg1l4q{margin-bottom:.6rem}.top.svelte-1hg1l4q{display:inline-flex;align-items:center;gap:1rem}.filter.svelte-hjwmgw,.filterOpts.svelte-hjwmgw{margin:-.5rem 0 1rem -.5rem}.filterOpts.svelte-hjwmgw{gap:1rem}.row.svelte-hjwmgw{display:flex;flex-wrap:wrap;align-items:center}h4.svelte-i817w5{margin-bottom:.5rem}.desc.svelte-i817w5{display:flex;flex-direction:column;margin:.5rem}.desc.svelte-i817w5>p:where(.svelte-i817w5){margin:.2rem 0}.desc.svelte-i817w5>p:where(.svelte-i817w5)>code:where(.svelte-i817w5){background:var(--col-gmid)}textarea.svelte-w61ts0{padding:10px;border:1px solid var(--col-gmid);border-radius:3px;outline:none}textarea.svelte-w61ts0:focus{resize:none;border:1px solid var(--col-acnt)}.label.svelte-w61ts0{position:relative}.err.svelte-w61ts0{margin-top:-1px;padding:0 10px;font-size:.85em;color:var(--col-err)}.labelInner.svelte-w61ts0{position:absolute;top:-13px;left:5px;border-radius:5px;padding:0 5px;font-size:.85em;background:var(--col-bg)}.container.svelte-w61ts0{display:flex;flex-direction:column;margin:1.33rem .5rem .66rem}.container.svelte-1m46su9{padding:10px}.desc.svelte-1m46su9{display:flex;flex-direction:column;margin:.5rem}.desc.svelte-1m46su9>p:where(.svelte-1m46su9){margin:.2rem 0}.err.svelte-1m46su9{color:var(--col-err)}.err.svelte-1m46su9,.success.svelte-1m46su9{margin:0 7px}.header.svelte-1m46su9{display:flex;font-size:.9rem;margin-left:10px}.ml.svelte-1m46su9{margin-left:.5rem}.mb.svelte-1m46su9{margin-bottom:.5rem}.success.svelte-1m46su9{color:var(--col-ok)}.switchRow.svelte-1m46su9{margin-bottom:.25rem;padding-left:.5rem;display:grid;grid-template-columns:9rem 1fr}.container.svelte-19hes5{padding:0 10px 10px}.desc.svelte-19hes5{display:flex;margin:.5rem}.desc.svelte-19hes5>p:where(.svelte-19hes5){margin:.2rem 0}.err.svelte-19hes5{color:var(--col-err)}.err.svelte-19hes5,.success.svelte-19hes5{margin:0 7px}.header.svelte-19hes5{display:flex;font-size:.9rem;margin-left:10px}.label.svelte-19hes5{margin:5px 5px 0;font-size:.9rem}.logo.svelte-19hes5{margin:1rem .25rem}.ml.svelte-19hes5{margin-left:.5rem}.mb.svelte-19hes5{margin-bottom:.5rem}.success.svelte-19hes5{color:var(--col-ok)}.switchRow.svelte-19hes5{margin-bottom:.25rem;padding-left:.5rem;display:grid;grid-template-columns:9rem 1fr}.unit.svelte-19hes5{margin:7px 0}.value.svelte-19hes5{margin-left:5px;display:flex}.container.svelte-1tncxap{margin:0 10px 20px}.err.svelte-1tncxap{display:flex;align-items:center;margin:0 10px;color:var(--col-err)}.forceDelete.svelte-1tncxap{color:var(--col-err);font-weight:700}.label.svelte-1tncxap{margin:5px 7px}.data.svelte-115hohv{display:flex;align-items:center;margin:3px 10px}.header.svelte-115hohv{display:flex;align-items:center}#federation.svelte-a0i4pk div:where(.svelte-a0i4pk):nth-of-type(odd){background:linear-gradient(90deg,var(--col-ghigh) 35rem,var(--col-bg) 50rem)}main.svelte-1a52j8o{width:100vw;display:flex;align-items:center;flex-direction:row;overflow-y:auto;overflow-x:hidden}.inner.svelte-1a52j8o{display:flex;width:100vw;justify-content:space-between}.noAdmin.svelte-mia078{display:flex;flex-direction:column;justify-content:center;align-items:center}.text.svelte-mia078{margin:10px}
diff --git a/static/v1/_app/immutable/assets/AdminMainPre.ZcanbrCY.css.br b/static/v1/_app/immutable/assets/AdminMainPre.ZcanbrCY.css.br
new file mode 100644
index 000000000..2557d2cae
Binary files /dev/null and b/static/v1/_app/immutable/assets/AdminMainPre.ZcanbrCY.css.br differ
diff --git a/static/v1/_app/immutable/assets/AdminMainPre.ZcanbrCY.css.gz b/static/v1/_app/immutable/assets/AdminMainPre.ZcanbrCY.css.gz
new file mode 100644
index 000000000..0f67be6ef
Binary files /dev/null and b/static/v1/_app/immutable/assets/AdminMainPre.ZcanbrCY.css.gz differ
diff --git a/static/v1/_app/immutable/assets/AppVersion.DHsV5F-O.css b/static/v1/_app/immutable/assets/AppVersion.DHsV5F-O.css
new file mode 100644
index 000000000..d5bf45bae
--- /dev/null
+++ b/static/v1/_app/immutable/assets/AppVersion.DHsV5F-O.css
@@ -0,0 +1,1 @@
+.upd.svelte-zcqypp{cursor:pointer}.ver.svelte-zcqypp{margin:0 .25rem;display:flex;align-items:center;font-size:.85rem}.ver.svelte-zcqypp>a:where(.svelte-zcqypp){text-decoration:none;color:var(--col-text)}
diff --git a/static/v1/_app/immutable/assets/AppVersion.DHsV5F-O.css.br b/static/v1/_app/immutable/assets/AppVersion.DHsV5F-O.css.br
new file mode 100644
index 000000000..6300a5a9e
Binary files /dev/null and b/static/v1/_app/immutable/assets/AppVersion.DHsV5F-O.css.br differ
diff --git a/static/v1/_app/immutable/assets/AppVersion.DHsV5F-O.css.gz b/static/v1/_app/immutable/assets/AppVersion.DHsV5F-O.css.gz
new file mode 100644
index 000000000..d1048c0fe
Binary files /dev/null and b/static/v1/_app/immutable/assets/AppVersion.DHsV5F-O.css.gz differ
diff --git a/static/v1/_app/immutable/assets/Button.BjnyTAiT.css b/static/v1/_app/immutable/assets/Button.BjnyTAiT.css
new file mode 100644
index 000000000..34a3b3f48
--- /dev/null
+++ b/static/v1/_app/immutable/assets/Button.BjnyTAiT.css
@@ -0,0 +1,1 @@
+.l1.svelte-103k7bs,.l2.svelte-103k7bs,.l3.svelte-103k7bs,.l4.svelte-103k7bs{height:30px;margin:5px;padding:0 10px;font-weight:700;border:1px solid var(--col-gmid);border-radius:3px;box-shadow:1px 1px 2px var(--col-gmid)}.l1.svelte-103k7bs{color:#fff;background:var(--col-act1)}.l1.svelte-103k7bs:hover{background:var(--col-act1a)}.l2.svelte-103k7bs{color:var(--col-ghigh);background:var(--col-act2)}.l2.svelte-103k7bs:hover{background:var(--col-act2a)}.l3.svelte-103k7bs{color:var(--col-act2a);border:1px solid var(--col-act2a);background:var(--col-ghigh)}.l3.svelte-103k7bs:hover{background:#fff}.l4.svelte-103k7bs{color:var(--col-act2a);border:none;background:none;box-shadow:none}.l4.svelte-103k7bs:hover{box-shadow:1px 1px 2px var(--col-gmid)}.load.svelte-103k7bs{display:flex;justify-content:center}.txt.svelte-103k7bs{margin-top:2px}
diff --git a/static/v1/_app/immutable/assets/Button.BjnyTAiT.css.br b/static/v1/_app/immutable/assets/Button.BjnyTAiT.css.br
new file mode 100644
index 000000000..4107f6a81
Binary files /dev/null and b/static/v1/_app/immutable/assets/Button.BjnyTAiT.css.br differ
diff --git a/static/v1/_app/immutable/assets/Button.BjnyTAiT.css.gz b/static/v1/_app/immutable/assets/Button.BjnyTAiT.css.gz
new file mode 100644
index 000000000..7263e7d49
Binary files /dev/null and b/static/v1/_app/immutable/assets/Button.BjnyTAiT.css.gz differ
diff --git a/static/v1/_app/immutable/assets/ContentCenter.BpmtvV5f.css b/static/v1/_app/immutable/assets/ContentCenter.BpmtvV5f.css
new file mode 100644
index 000000000..2d38d3861
--- /dev/null
+++ b/static/v1/_app/immutable/assets/ContentCenter.BpmtvV5f.css
@@ -0,0 +1,1 @@
+main.svelte-1w3gfbz{width:100%;display:flex;overflow-y:auto}div.svelte-vtwvgl{width:100%;height:100%;display:flex;justify-content:center;align-items:center}
diff --git a/static/v1/_app/immutable/assets/ContentCenter.BpmtvV5f.css.br b/static/v1/_app/immutable/assets/ContentCenter.BpmtvV5f.css.br
new file mode 100644
index 000000000..3238cc4f4
Binary files /dev/null and b/static/v1/_app/immutable/assets/ContentCenter.BpmtvV5f.css.br differ
diff --git a/static/v1/_app/immutable/assets/ContentCenter.BpmtvV5f.css.gz b/static/v1/_app/immutable/assets/ContentCenter.BpmtvV5f.css.gz
new file mode 100644
index 000000000..0544a65d3
Binary files /dev/null and b/static/v1/_app/immutable/assets/ContentCenter.BpmtvV5f.css.gz differ
diff --git a/static/v1/_app/immutable/assets/Devices.BgusA-6p.css b/static/v1/_app/immutable/assets/Devices.BgusA-6p.css
new file mode 100644
index 000000000..dccc68e6a
--- /dev/null
+++ b/static/v1/_app/immutable/assets/Devices.BgusA-6p.css
@@ -0,0 +1,1 @@
+.bar.svelte-n2aryx{margin:5px 10px 10px;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.btn.svelte-n2aryx{padding:.25rem .5rem;background:transparent;border:none;border-bottom:1px solid var(--col-gmid);color:var(--col-act2a);font-size:.95rem;cursor:pointer}.btn.svelte-n2aryx:hover{color:var(--col-act2);border-bottom:1px solid var(--col-act2)}.btn[data-selected=true].svelte-n2aryx{font-weight:700;color:var(--col-act2);border-bottom:1px solid var(--col-act2)}.tooltip.svelte-op12yu{position:absolute;padding:5px 7px;font-weight:700;background:var(--col-acnt);color:#fff;z-index:1;border-radius:3px}.outer.svelte-1mo9pov{display:flex;justify-content:flex-start;align-items:center;padding:3px;height:20px;width:33px;border:1px solid var(--col-act2a);background:var(--col-ghigh);border-radius:10px;cursor:pointer;box-shadow:inset 0 0 2px 1px var(--col-act2)}.selectedOuter.svelte-1mo9pov{background:var(--col-ghigh)}.inner.svelte-1mo9pov{height:14px;width:14px;border-radius:50%;background:var(--col-glow)}.selected.svelte-1mo9pov{background:var(--col-act2a)}.container.svelte-1xshgki{display:flex;flex-direction:column;width:100%;max-width:1200px}.containerHeader.svelte-1xshgki{display:flex;align-items:center;padding:5px 7px}.expand.svelte-1xshgki{display:flex;align-items:center;padding-top:2px;cursor:pointer}.header.svelte-1xshgki{margin:3px;display:flex}.body.svelte-1xshgki{overflow:hidden;overflow-y:auto}.head.svelte-oumbix{margin:.5rem 0}.device.svelte-oumbix{margin:0 .5rem}.device-header.svelte-oumbix{display:flex;align-items:center}.device-head.svelte-oumbix{display:flex;align-items:center;margin:3px 10px}.devices.svelte-oumbix{width:100%}.label.svelte-oumbix{margin-top:5px;font-size:.9rem}.icon-btn-input.svelte-oumbix{margin-top:8px}.icon-btn-value.svelte-oumbix{margin-left:3px}.icon-btn-input.svelte-oumbix,.icon-btn-value.svelte-oumbix{cursor:pointer}.row.svelte-oumbix{display:flex;align-items:center}.unit.svelte-oumbix{margin:7px 5px}.value.svelte-oumbix{display:flex;align-items:center}
diff --git a/static/v1/_app/immutable/assets/Devices.BgusA-6p.css.br b/static/v1/_app/immutable/assets/Devices.BgusA-6p.css.br
new file mode 100644
index 000000000..d536128a2
Binary files /dev/null and b/static/v1/_app/immutable/assets/Devices.BgusA-6p.css.br differ
diff --git a/static/v1/_app/immutable/assets/Devices.BgusA-6p.css.gz b/static/v1/_app/immutable/assets/Devices.BgusA-6p.css.gz
new file mode 100644
index 000000000..34e667d7c
Binary files /dev/null and b/static/v1/_app/immutable/assets/Devices.BgusA-6p.css.gz differ
diff --git a/static/v1/_app/immutable/assets/Error.BHaKgkRX.css b/static/v1/_app/immutable/assets/Error.BHaKgkRX.css
new file mode 100644
index 000000000..6afa98ec2
--- /dev/null
+++ b/static/v1/_app/immutable/assets/Error.BHaKgkRX.css
@@ -0,0 +1,1 @@
+.chevron.svelte-16w2vk1{transition:all .25s}.showDetails.svelte-16w2vk1{display:inline-flex;align-items:center;gap:.1rem;cursor:pointer;color:var(--col-act2)}.showDetails.svelte-16w2vk1:hover{color:var(--col-act2a)}
diff --git a/static/v1/_app/immutable/assets/Error.BHaKgkRX.css.br b/static/v1/_app/immutable/assets/Error.BHaKgkRX.css.br
new file mode 100644
index 000000000..84bd6bd90
Binary files /dev/null and b/static/v1/_app/immutable/assets/Error.BHaKgkRX.css.br differ
diff --git a/static/v1/_app/immutable/assets/Error.BHaKgkRX.css.gz b/static/v1/_app/immutable/assets/Error.BHaKgkRX.css.gz
new file mode 100644
index 000000000..b7ca4888e
Binary files /dev/null and b/static/v1/_app/immutable/assets/Error.BHaKgkRX.css.gz differ
diff --git a/static/v1/_app/immutable/assets/Input.DM5r-cSQ.css b/static/v1/_app/immutable/assets/Input.DM5r-cSQ.css
new file mode 100644
index 000000000..280cf968c
--- /dev/null
+++ b/static/v1/_app/immutable/assets/Input.DM5r-cSQ.css
@@ -0,0 +1,1 @@
+input.svelte-x8kgzj{margin:12px 5px 5px;padding:5px 10px;background:var(--col-bg);border:1px solid var(--col-glow);border-radius:3px;color:var(--col-text);font-size:1.05rem;outline:none;box-shadow:1px 1px 2px var(--col-gmid)}input.svelte-x8kgzj:disabled{background:var(--col-gmid)}input.svelte-x8kgzj:disabled:hover{background:var(--col-gmid)}input.svelte-x8kgzj:focus{border:1px solid var(--col-acnt)}.label.svelte-x8kgzj{position:relative}.err.svelte-x8kgzj{margin-top:-.3rem;margin-left:5px;padding:0 10px;font-size:.85rem;color:var(--col-err)}.labelInner.svelte-x8kgzj{position:absolute;top:0;left:11px;border-radius:5px;padding:0 5px;font-size:.8rem}.container.svelte-x8kgzj{display:flex;flex-direction:column;margin-bottom:3px}
diff --git a/static/v1/_app/immutable/assets/Input.DM5r-cSQ.css.br b/static/v1/_app/immutable/assets/Input.DM5r-cSQ.css.br
new file mode 100644
index 000000000..444ecaab0
Binary files /dev/null and b/static/v1/_app/immutable/assets/Input.DM5r-cSQ.css.br differ
diff --git a/static/v1/_app/immutable/assets/Input.DM5r-cSQ.css.gz b/static/v1/_app/immutable/assets/Input.DM5r-cSQ.css.gz
new file mode 100644
index 000000000..7e3b7e6de
Binary files /dev/null and b/static/v1/_app/immutable/assets/Input.DM5r-cSQ.css.gz differ
diff --git a/static/v1/_app/immutable/assets/LangSelector.O5X7vySz.css b/static/v1/_app/immutable/assets/LangSelector.O5X7vySz.css
new file mode 100644
index 000000000..182d04f84
--- /dev/null
+++ b/static/v1/_app/immutable/assets/LangSelector.O5X7vySz.css
@@ -0,0 +1,1 @@
+.absolute.svelte-s2vujs{position:absolute;top:calc(100dvh - 1.75rem)}.absoluteLeft.svelte-s2vujs{left:.25rem}.absoluteRight.svelte-s2vujs{right:.25rem}
diff --git a/static/v1/_app/immutable/assets/LangSelector.O5X7vySz.css.br b/static/v1/_app/immutable/assets/LangSelector.O5X7vySz.css.br
new file mode 100644
index 000000000..fe625d3c3
Binary files /dev/null and b/static/v1/_app/immutable/assets/LangSelector.O5X7vySz.css.br differ
diff --git a/static/v1/_app/immutable/assets/LangSelector.O5X7vySz.css.gz b/static/v1/_app/immutable/assets/LangSelector.O5X7vySz.css.gz
new file mode 100644
index 000000000..cd385838c
Binary files /dev/null and b/static/v1/_app/immutable/assets/LangSelector.O5X7vySz.css.gz differ
diff --git a/static/v1/_app/immutable/assets/Loading.BVnr1IrI.css b/static/v1/_app/immutable/assets/Loading.BVnr1IrI.css
new file mode 100644
index 000000000..315c43513
--- /dev/null
+++ b/static/v1/_app/immutable/assets/Loading.BVnr1IrI.css
@@ -0,0 +1,1 @@
+.container.svelte-10pff2x{display:flex;flex:1;justify-content:center;align-items:center;z-index:1}.global.svelte-10pff2x{position:absolute;top:0;left:0;width:100vw;height:100vh}.background.svelte-10pff2x{background:#000000b3}.inner.svelte-10pff2x{display:flex;flex:1;align-items:center;justify-content:center}.circle.svelte-10pff2x{margin:3px;width:15px;aspect-ratio:1;border-radius:50%;background:#c8c8c8e6}
diff --git a/static/v1/_app/immutable/assets/Loading.BVnr1IrI.css.br b/static/v1/_app/immutable/assets/Loading.BVnr1IrI.css.br
new file mode 100644
index 000000000..0fa8f6994
Binary files /dev/null and b/static/v1/_app/immutable/assets/Loading.BVnr1IrI.css.br differ
diff --git a/static/v1/_app/immutable/assets/Loading.BVnr1IrI.css.gz b/static/v1/_app/immutable/assets/Loading.BVnr1IrI.css.gz
new file mode 100644
index 000000000..4e67064ff
Binary files /dev/null and b/static/v1/_app/immutable/assets/Loading.BVnr1IrI.css.gz differ
diff --git a/static/v1/_app/immutable/assets/Loading.C3rZw9wZ.css b/static/v1/_app/immutable/assets/Loading.C3rZw9wZ.css
new file mode 100644
index 000000000..c3720011c
--- /dev/null
+++ b/static/v1/_app/immutable/assets/Loading.C3rZw9wZ.css
@@ -0,0 +1,1 @@
+.container.svelte-2cwfk8{display:flex;flex:1;justify-content:center;align-items:center;z-index:1}@keyframes svelte-2cwfk8-fade-in{0%{opacity:0}to{opacity:1}}@keyframes svelte-2cwfk8-fade-out{0%{opacity:1}to{opacity:0}}.loading.svelte-2cwfk8{width:3.3rem;height:1.1rem;aspect-ratio:3;display:flex;justify-content:space-evenly;align-items:center}.loading-1.svelte-2cwfk8,.loading-2.svelte-2cwfk8,.loading-3.svelte-2cwfk8{height:66%;aspect-ratio:1;border-radius:50%;animation:1s infinite alternate svelte-2cwfk8-fade-in;opacity:0}.loading-2.svelte-2cwfk8{animation-delay:333ms}.loading-3.svelte-2cwfk8{animation-delay:666ms}.global.svelte-2cwfk8{position:absolute;top:0;left:0;width:100vw;height:100vh}.local.svelte-2cwfk8{min-width:70px;max-width:70px}.background.svelte-2cwfk8{background:#7f7f7f80}
diff --git a/static/v1/_app/immutable/assets/Loading.C3rZw9wZ.css.br b/static/v1/_app/immutable/assets/Loading.C3rZw9wZ.css.br
new file mode 100644
index 000000000..b5ddc1cbb
Binary files /dev/null and b/static/v1/_app/immutable/assets/Loading.C3rZw9wZ.css.br differ
diff --git a/static/v1/_app/immutable/assets/Loading.C3rZw9wZ.css.gz b/static/v1/_app/immutable/assets/Loading.C3rZw9wZ.css.gz
new file mode 100644
index 000000000..4fac08f3e
Binary files /dev/null and b/static/v1/_app/immutable/assets/Loading.C3rZw9wZ.css.gz differ
diff --git a/static/v1/_app/immutable/assets/OptionSelect.v1wsJTwS.css b/static/v1/_app/immutable/assets/OptionSelect.v1wsJTwS.css
new file mode 100644
index 000000000..bbba968c5
--- /dev/null
+++ b/static/v1/_app/immutable/assets/OptionSelect.v1wsJTwS.css
@@ -0,0 +1,1 @@
+select.svelte-ysgm66{padding:3px;color:var(--col-text);font-size:1rem;cursor:pointer;border-radius:3px;border:none;outline:none;background:transparent}select.svelte-ysgm66:hover{color:var(--col-acnta)}.opt.svelte-ysgm66{color:var(--col-text);cursor:pointer}
diff --git a/static/v1/_app/immutable/assets/OptionSelect.v1wsJTwS.css.br b/static/v1/_app/immutable/assets/OptionSelect.v1wsJTwS.css.br
new file mode 100644
index 000000000..2d4c606c1
Binary files /dev/null and b/static/v1/_app/immutable/assets/OptionSelect.v1wsJTwS.css.br differ
diff --git a/static/v1/_app/immutable/assets/OptionSelect.v1wsJTwS.css.gz b/static/v1/_app/immutable/assets/OptionSelect.v1wsJTwS.css.gz
new file mode 100644
index 000000000..b72078a72
Binary files /dev/null and b/static/v1/_app/immutable/assets/OptionSelect.v1wsJTwS.css.gz differ
diff --git a/static/v1/_app/immutable/assets/PasswordInput.DaeGq-fv.css b/static/v1/_app/immutable/assets/PasswordInput.DaeGq-fv.css
new file mode 100644
index 000000000..1518c9f68
--- /dev/null
+++ b/static/v1/_app/immutable/assets/PasswordInput.DaeGq-fv.css
@@ -0,0 +1,1 @@
+input.svelte-6ql6gz{margin:12px 5px 5px;padding:5px 10px;background:var(--col-bg);border:1px solid var(--col-glow);border-radius:3px;color:var(--col-text);font-size:1.05rem;outline:none;box-shadow:1px 1px 2px var(--col-gmid)}input.svelte-6ql6gz:disabled{background:var(--col-gmid)}input.svelte-6ql6gz:disabled:hover{background:var(--col-gmid)}input.svelte-6ql6gz:hover{background:#fff}input.svelte-6ql6gz:focus{background:#fff;border:1px solid var(--col-acnt)}.label.svelte-6ql6gz{position:relative}.err.svelte-6ql6gz{margin-top:-6px;margin-left:5px;padding:0 10px;font-size:.85rem;color:var(--col-err)}.labelInner.svelte-6ql6gz{position:absolute;top:0;left:10px;border-radius:5px;padding:0 5px;font-size:.8rem}.container.svelte-6ql6gz{display:flex;flex-direction:column;margin-bottom:3px}.rel.svelte-6ql6gz{position:relative}.btn.svelte-6ql6gz{position:absolute;top:-32px;right:10px;margin-left:100px;opacity:.85;cursor:pointer}.clip.svelte-6ql6gz{right:32px;opacity:.85}.show.svelte-6ql6gz{opacity:.85}
diff --git a/static/v1/_app/immutable/assets/PasswordInput.DaeGq-fv.css.br b/static/v1/_app/immutable/assets/PasswordInput.DaeGq-fv.css.br
new file mode 100644
index 000000000..d02be1200
Binary files /dev/null and b/static/v1/_app/immutable/assets/PasswordInput.DaeGq-fv.css.br differ
diff --git a/static/v1/_app/immutable/assets/PasswordInput.DaeGq-fv.css.gz b/static/v1/_app/immutable/assets/PasswordInput.DaeGq-fv.css.gz
new file mode 100644
index 000000000..865e827a5
Binary files /dev/null and b/static/v1/_app/immutable/assets/PasswordInput.DaeGq-fv.css.gz differ
diff --git a/static/v1/_app/immutable/assets/PasswordPolicy.CpXtnh7y.css b/static/v1/_app/immutable/assets/PasswordPolicy.CpXtnh7y.css
new file mode 100644
index 000000000..2dabc7a25
--- /dev/null
+++ b/static/v1/_app/immutable/assets/PasswordPolicy.CpXtnh7y.css
@@ -0,0 +1,1 @@
+ul.svelte-1f8mmbi{margin-left:1rem}.li.svelte-1f8mmbi{margin-left:1.5rem;width:100%}.policyContainer.svelte-1f8mmbi{margin-left:-.5rem;margin-bottom:1rem}.policyErr.svelte-1f8mmbi{color:var(--col-err)}
diff --git a/static/v1/_app/immutable/assets/PasswordPolicy.CpXtnh7y.css.br b/static/v1/_app/immutable/assets/PasswordPolicy.CpXtnh7y.css.br
new file mode 100644
index 000000000..23f0fee79
Binary files /dev/null and b/static/v1/_app/immutable/assets/PasswordPolicy.CpXtnh7y.css.br differ
diff --git a/static/v1/_app/immutable/assets/PasswordPolicy.CpXtnh7y.css.gz b/static/v1/_app/immutable/assets/PasswordPolicy.CpXtnh7y.css.gz
new file mode 100644
index 000000000..6027cecb6
Binary files /dev/null and b/static/v1/_app/immutable/assets/PasswordPolicy.CpXtnh7y.css.gz differ
diff --git a/static/v1/_app/immutable/assets/WebauthnRequest._nhbHN0l.css b/static/v1/_app/immutable/assets/WebauthnRequest._nhbHN0l.css
new file mode 100644
index 000000000..35e6cbd46
--- /dev/null
+++ b/static/v1/_app/immutable/assets/WebauthnRequest._nhbHN0l.css
@@ -0,0 +1,1 @@
+.content.svelte-jsdqii{width:350px;height:220px;border:1px solid var(--col-ghigh);border-radius:5px;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#fff;text-align:center;z-index:20;background:#181818f2}.contentRow.svelte-jsdqii{display:flex;flex-direction:column;justify-content:center;align-items:center;margin:.25em}.contentHeader.svelte-jsdqii{margin-bottom:.2em;font-weight:700}.err.svelte-jsdqii,.good.svelte-jsdqii{font-weight:700}.err.svelte-jsdqii{color:var(--col-err)}.good.svelte-jsdqii{color:var(--col-ok)}progress.svelte-jsdqii{accent-color:var(--col-acnt)}.wrapperOuter.svelte-jsdqii{position:absolute;top:0;left:0}.wrapperInner.svelte-jsdqii{width:100vw;height:100vh;position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#000000d9;z-index:20}
diff --git a/static/v1/_app/immutable/assets/WebauthnRequest._nhbHN0l.css.br b/static/v1/_app/immutable/assets/WebauthnRequest._nhbHN0l.css.br
new file mode 100644
index 000000000..8ee3633b1
Binary files /dev/null and b/static/v1/_app/immutable/assets/WebauthnRequest._nhbHN0l.css.br differ
diff --git a/static/v1/_app/immutable/assets/WebauthnRequest._nhbHN0l.css.gz b/static/v1/_app/immutable/assets/WebauthnRequest._nhbHN0l.css.gz
new file mode 100644
index 000000000..f2c127ecc
Binary files /dev/null and b/static/v1/_app/immutable/assets/WebauthnRequest._nhbHN0l.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_layout.CvBSBYwf.css b/static/v1/_app/immutable/assets/_layout.CvBSBYwf.css
new file mode 100644
index 000000000..31a283d85
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_layout.CvBSBYwf.css
@@ -0,0 +1,1 @@
+*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}::selection{color:hsl(var(--bg));background:hsl(var(--action))}input,button,textarea,select{font:inherit}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-thumb{background-color:hsl(var(--bg-high));border-radius:30px}::-webkit-scrollbar-corner{display:none}body{width:100%;height:100dvh;font-family:system-ui,-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;scroll-behavior:smooth;scrollbar-gutter:stable;overflow:auto;display:flex;--animate-zoom: zoomIn .25s cubic-bezier(.34, 1.56, .64, 1);--din-a4-width: 595pt;--din-a4-height: 842pt}a,a:link,a:visited{color:hsl(var(--text));transition:all .15s ease-in-out}a:hover,a:active{color:hsl(var(--action));text-decoration:underline}blockquote{padding-left:.33rem;border-left:3px solid hsl(var(--accent));border-radius:var(--border-radius);background-color:hsl(var(--bg-high))}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}h1{font-size:1.5rem;margin:1rem 0;letter-spacing:-.04em}h2{font-size:1.35rem;margin:.75rem 0;letter-spacing:-.03em}h3{font-size:1.25rem;margin:.6rem 0;letter-spacing:-.025em}h4{font-size:1.2rem;margin:.65rem 0;letter-spacing:-.015em}h5{font-size:1.05rem;margin:.55rem 0;letter-spacing:-.01em}p{margin:.5rem 0;max-width:467pt}hr{border:none;border-top:1px solid hsla(var(--bg-high),.66);margin:.5rem 0}.font-default{font-family:system-ui,-apple-system,BlinkMacSystemFont,Roboto,Segoe UI,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.font-label{font-family:ui-rounded,Hiragino Maru Gothic ProN,Quicksand,Comfortaa,Manjari,Arial Rounded MT,Arial Rounded MT Bold,Calibri,source-sans-pro,sans-serif}.font-mono{font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,DejaVu Sans Mono,monospace}.absolute{position:absolute}.accent{color:hsl(var(--accent))}.action{color:hsl(var(--action))}.clip{overflow:clip}.err{color:hsl(var(--error))}.relative{position:relative}.flex{display:flex;align-items:center}.flex-1{flex:1}.flex-2{flex:2}.flex-col{display:flex;flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-3{flex:3}.gap-05{gap:.5rem}.gap-10{gap:1rem}.gap-15{gap:1.5rem}.gap-20{gap:2rem}.hidden{height:0;width:0;display:none}.m-05{margin:.5rem}.m-10{margin:1rem}.ms-05{margin:0 .5rem}.ms-10{margin:0 1rem}.mh-05{margin:.5rem 0}.mh-10{margin:1rem 0}.noselect{user-select:none}.pointer{cursor:pointer}.space-between{justify-content:space-between}.text{color:hsl(var(--text))}.zoom{animation:var(--animate-zoom)}label[data-required=true]:after{content:" *";color:hsla(var(--error),.9)}.fade-in{animation:fadeIn .2s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes zoomIn{0%{transform:scale(.95)}to{transform:scale(1)}}
diff --git a/static/v1/_app/immutable/assets/_layout.CvBSBYwf.css.br b/static/v1/_app/immutable/assets/_layout.CvBSBYwf.css.br
new file mode 100644
index 000000000..e0391cf3d
Binary files /dev/null and b/static/v1/_app/immutable/assets/_layout.CvBSBYwf.css.br differ
diff --git a/static/v1/_app/immutable/assets/_layout.CvBSBYwf.css.gz b/static/v1/_app/immutable/assets/_layout.CvBSBYwf.css.gz
new file mode 100644
index 000000000..13639a549
Binary files /dev/null and b/static/v1/_app/immutable/assets/_layout.CvBSBYwf.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.BGsNSr6e.css b/static/v1/_app/immutable/assets/_page.BGsNSr6e.css
new file mode 100644
index 000000000..da6507e8f
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.BGsNSr6e.css
@@ -0,0 +1,1 @@
+.check.svelte-wuqbvo{margin-bottom:-.3rem}.row.svelte-wuqbvo{display:inline-flex;align-items:center;gap:.25rem}.token.svelte-wuqbvo{word-wrap:break-word;width:20rem}
diff --git a/static/v1/_app/immutable/assets/_page.BGsNSr6e.css.br b/static/v1/_app/immutable/assets/_page.BGsNSr6e.css.br
new file mode 100644
index 000000000..2f462c662
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.BGsNSr6e.css.br differ
diff --git a/static/v1/_app/immutable/assets/_page.BGsNSr6e.css.gz b/static/v1/_app/immutable/assets/_page.BGsNSr6e.css.gz
new file mode 100644
index 000000000..7f6e51d84
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.BGsNSr6e.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.CF_aMXlW.css b/static/v1/_app/immutable/assets/_page.CF_aMXlW.css
new file mode 100644
index 000000000..d00abc385
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.CF_aMXlW.css
@@ -0,0 +1,1 @@
+dialog.svelte-l3vtl3{border-radius:3px;border:none;padding:0}dialog.svelte-l3vtl3::backdrop{background:#0000004d}dialog.svelte-l3vtl3>div:where(.svelte-l3vtl3){padding:1rem}dialog.svelte-l3vtl3>div:where(.svelte-l3vtl3)>div:where(.svelte-l3vtl3){position:relative}dialog[open].svelte-l3vtl3{animation:svelte-l3vtl3-zoom .3s cubic-bezier(.34,1.56,.64,1)}@keyframes svelte-l3vtl3-zoom{0%{transform:scale(.95)}to{transform:scale(1)}}dialog[open].svelte-l3vtl3::backdrop{animation:svelte-l3vtl3-fade .2s ease-out}@keyframes svelte-l3vtl3-fade{0%{opacity:0}to{opacity:1}}.close.svelte-l3vtl3{margin:-1rem -1rem 0 0;cursor:pointer;text-align:right}.inner.svelte-l3vtl3{margin-top:-.5rem}.container.svelte-bckoh9{margin:0 .25rem;padding:10px}.label.svelte-bckoh9{width:10rem}.labelPhone.svelte-bckoh9{width:12rem}.fed-btn.svelte-bckoh9{margin-left:-5px}.flex-inline.svelte-bckoh9{display:inline-flex;align-items:center;gap:.5rem}.link-err.svelte-bckoh9{margin-left:5px;color:var(--col-err)}.provider-link.svelte-bckoh9{color:var(--col-act2);cursor:pointer}.provider-name.svelte-bckoh9{margin-bottom:-4px}.providers.svelte-bckoh9{margin-top:.66rem;display:flex}.row.svelte-bckoh9{display:flex}.value.svelte-bckoh9{max-width:18rem;word-break:break-word}.container.svelte-1xh7x72{padding:0 5px;display:flex;flex-direction:column}.err.svelte-1xh7x72{width:230px;margin:-5px 10px 0 35px;padding-right:5px;color:var(--col-err)}.err.svelte-1xh7x72{margin:5px;color:var(--col-err)}.bottom.svelte-1xh7x72{height:1em}.success.svelte-1xh7x72{margin:5px;color:var(--col-ok)}.wrapper.svelte-1xh7x72{margin-top:10px;display:flex;flex-direction:row}p.svelte-q7vfo0{margin:.5rem 0}.container.svelte-q7vfo0{padding-left:10px;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.button.svelte-q7vfo0{margin-left:-.33rem}.deleteBtn.svelte-q7vfo0{margin-right:-.8rem}.keysContainer.svelte-q7vfo0{max-height:20rem;padding-right:2rem;overflow-y:auto}.keyContainer.svelte-q7vfo0{margin:.33rem 0}.keysHeader.svelte-q7vfo0{margin-top:.5rem;font-weight:700}.msg.svelte-q7vfo0,.err.svelte-q7vfo0{margin:5px;text-align:center}.err.svelte-q7vfo0{color:var(--col-err)}.msg.svelte-q7vfo0{color:var(--col-ok)}.nameUv.svelte-q7vfo0{display:inline-flex;align-items:center;gap:.25rem}.regBtns.svelte-q7vfo0{display:flex;align-items:center}.regNewBtn.svelte-q7vfo0{margin:0 0 .5rem -.33rem}.row.svelte-q7vfo0{display:flex;gap:.5rem;justify-content:space-between;align-items:center}.container.svelte-dpnwj7{margin-top:5px;margin-bottom:10px}.err.svelte-dpnwj7{margin:-5px 10px 5px;text-align:left;color:var(--col-err)}p.svelte-od1aaa{margin:.5rem 0}.m-05.svelte-od1aaa{margin:.5rem}.wrapper.svelte-od1aaa{display:flex;flex-direction:row}.container.svelte-od1aaa{padding:0 5px;display:flex;flex-direction:column}.convertPasskey.svelte-od1aaa{margin:1rem 0}.err.svelte-od1aaa{width:230px;margin:-5px 10px 0 35px;padding-right:5px;color:var(--col-err)}.err.svelte-od1aaa{margin:5px;color:var(--col-err)}.bottom.svelte-od1aaa{height:1em}.success.svelte-od1aaa{margin:5px;color:var(--col-ok)}p.svelte-naxx27{margin:0 .5rem .5rem}textarea.svelte-naxx27{margin:.5rem;resize:none}.bottom.svelte-naxx27{height:1em}.container.svelte-naxx27{padding:0 5px;display:flex;flex-direction:column}.err.svelte-naxx27{width:230px;margin:-5px 10px 0 35px;padding-right:5px;color:var(--col-err)}.err.svelte-naxx27{margin:5px;color:var(--col-err)}.label.svelte-naxx27{width:12rem}.row.svelte-naxx27{margin:.5rem;display:flex;gap:.5rem}.success.svelte-naxx27{margin:5px;color:var(--col-ok)}.wrapper.svelte-naxx27{margin-top:10px;display:flex;flex-direction:row}.container.svelte-1nrg3bb{padding-left:10px;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.container.svelte-47czfz{display:flex;flex-direction:column}.header.svelte-47czfz{width:100%;margin-left:10px;margin-bottom:-10px}.headerPhone.svelte-47czfz{margin-left:10px;margin-bottom:-10px}.inner.svelte-47czfz{width:30rem}.innerPhone.svelte-47czfz{width:100vw}.wrapper.svelte-47czfz{height:calc(100dvh - 20px)}
diff --git a/static/v1/_app/immutable/assets/_page.CF_aMXlW.css.br b/static/v1/_app/immutable/assets/_page.CF_aMXlW.css.br
new file mode 100644
index 000000000..73af60980
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.CF_aMXlW.css.br differ
diff --git a/static/v1/_app/immutable/assets/_page.CF_aMXlW.css.gz b/static/v1/_app/immutable/assets/_page.CF_aMXlW.css.gz
new file mode 100644
index 000000000..74a5643a7
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.CF_aMXlW.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.CZlF3VMn.css b/static/v1/_app/immutable/assets/_page.CZlF3VMn.css
new file mode 100644
index 000000000..07be037d1
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.CZlF3VMn.css
@@ -0,0 +1,1 @@
+.btn.svelte-1um1rdi{display:flex;flex-direction:column}.version.svelte-1um1rdi{position:absolute;right:0;top:calc(100dvh - 1.2rem)}
diff --git a/static/v1/_app/immutable/assets/_page.CZlF3VMn.css.br b/static/v1/_app/immutable/assets/_page.CZlF3VMn.css.br
new file mode 100644
index 000000000..a4630f516
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.CZlF3VMn.css.br differ
diff --git a/static/v1/_app/immutable/assets/_page.CZlF3VMn.css.gz b/static/v1/_app/immutable/assets/_page.CZlF3VMn.css.gz
new file mode 100644
index 000000000..cd8ffc7b5
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.CZlF3VMn.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.CnT30TCt.css b/static/v1/_app/immutable/assets/_page.CnT30TCt.css
new file mode 100644
index 000000000..8381d9fa0
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.CnT30TCt.css
@@ -0,0 +1,1 @@
+.btn.svelte-1dkpwyo{margin:5px 0;display:flex}.error.svelte-1dkpwyo{color:var(--col-err)}.flex-col.svelte-1dkpwyo{display:flex;flex-direction:column}
diff --git a/static/v1/_app/immutable/assets/_page.CnT30TCt.css.br b/static/v1/_app/immutable/assets/_page.CnT30TCt.css.br
new file mode 100644
index 000000000..3ed51475a
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.CnT30TCt.css.br differ
diff --git a/static/v1/_app/immutable/assets/_page.CnT30TCt.css.gz b/static/v1/_app/immutable/assets/_page.CnT30TCt.css.gz
new file mode 100644
index 000000000..ed4839215
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.CnT30TCt.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.CxOoN8ns.css b/static/v1/_app/immutable/assets/_page.CxOoN8ns.css
new file mode 100644
index 000000000..2ddc5583f
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.CxOoN8ns.css
@@ -0,0 +1,1 @@
+.container.svelte-1ks9oi1{display:flex;flex-direction:column;justify-content:center}.domainTxt.svelte-1ks9oi1{margin:0 5px 15px}.err.svelte-1ks9oi1{margin:0 5px;color:var(--col-err)}.success.svelte-1ks9oi1{margin:0 5px}
diff --git a/static/v1/_app/immutable/assets/_page.CxOoN8ns.css.br b/static/v1/_app/immutable/assets/_page.CxOoN8ns.css.br
new file mode 100644
index 000000000..5bbf882af
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.CxOoN8ns.css.br differ
diff --git a/static/v1/_app/immutable/assets/_page.CxOoN8ns.css.gz b/static/v1/_app/immutable/assets/_page.CxOoN8ns.css.gz
new file mode 100644
index 000000000..e40073fc8
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.CxOoN8ns.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.D1v94sLe.css b/static/v1/_app/immutable/assets/_page.D1v94sLe.css
new file mode 100644
index 000000000..66126e7f0
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.D1v94sLe.css
@@ -0,0 +1,1 @@
+p.svelte-1g19pwu{margin:.5rem 0}.btn.svelte-1g19pwu{margin-left:-5px;width:7.5rem}.container.svelte-1g19pwu{display:flex;flex-direction:column;justify-content:center}
diff --git a/static/v1/_app/immutable/assets/_page.D1v94sLe.css.br b/static/v1/_app/immutable/assets/_page.D1v94sLe.css.br
new file mode 100644
index 000000000..62066f30b
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.D1v94sLe.css.br differ
diff --git a/static/v1/_app/immutable/assets/_page.D1v94sLe.css.gz b/static/v1/_app/immutable/assets/_page.D1v94sLe.css.gz
new file mode 100644
index 000000000..45758ce9a
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.D1v94sLe.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.DvqR7Iqw.css b/static/v1/_app/immutable/assets/_page.DvqR7Iqw.css
new file mode 100644
index 000000000..f7ecc725c
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.DvqR7Iqw.css
@@ -0,0 +1,1 @@
+a.svelte-189rvns,a.svelte-189rvns:visited{color:var(--col-act2)}.container.svelte-189rvns{display:flex;flex-direction:column;justify-content:center;max-width:20.5rem}.err.svelte-189rvns{margin:0 5px;color:var(--col-err)}.success.svelte-189rvns{margin:5px;color:var(--col-acnt)}
diff --git a/static/v1/_app/immutable/assets/_page.DvqR7Iqw.css.br b/static/v1/_app/immutable/assets/_page.DvqR7Iqw.css.br
new file mode 100644
index 000000000..686c34000
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.DvqR7Iqw.css.br differ
diff --git a/static/v1/_app/immutable/assets/_page.DvqR7Iqw.css.gz b/static/v1/_app/immutable/assets/_page.DvqR7Iqw.css.gz
new file mode 100644
index 000000000..430d211c4
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.DvqR7Iqw.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.GB6k287-.css b/static/v1/_app/immutable/assets/_page.GB6k287-.css
new file mode 100644
index 000000000..83b03dfc1
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.GB6k287-.css
@@ -0,0 +1,1 @@
+.btn.svelte-1ljcjf3{margin:5px 0;display:flex}.container.svelte-1ljcjf3{display:flex;flex-direction:column;justify-content:center;max-width:19rem;padding:20px;border:1px solid var(--col-gmid);border-radius:5px;box-shadow:5px 5px 5px #8080801a}.errMsg.svelte-1ljcjf3{max-width:15rem;margin:-10px 10px 5px 5px;color:var(--col-err)}.flex-col.svelte-1ljcjf3{display:flex;flex-direction:column}.flex-inline.svelte-1ljcjf3{display:inline-flex;align-items:center;gap:.5rem}.forgotten.svelte-1ljcjf3{margin:0 5px;cursor:pointer}.forgotten.svelte-1ljcjf3:hover{color:var(--col-ok)}.head.svelte-1ljcjf3{display:flex;justify-content:space-between}.home.svelte-1ljcjf3{margin-right:5px;cursor:pointer}.name.svelte-1ljcjf3{margin:-10px 5px 0}.logo.svelte-1ljcjf3{margin:0 .25rem;width:84px;height:84px;display:flex;justify-content:center;align-items:center}.providers.svelte-1ljcjf3{margin-top:.66rem}.providerName.svelte-1ljcjf3{margin-top:4px}.reg.svelte-1ljcjf3{margin-left:5px}.success.svelte-1ljcjf3{margin:0 5px;color:var(--col-ok)}
diff --git a/static/v1/_app/immutable/assets/_page.GB6k287-.css.br b/static/v1/_app/immutable/assets/_page.GB6k287-.css.br
new file mode 100644
index 000000000..e9204e641
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.GB6k287-.css.br
@@ -0,0 +1,2 @@
+ ��w�PnD�з8��'������������,��M�<�,���_ɟ��l��'��ךE�0˜���-Fn;����j$K1�[��B|��Q,r�K�-Gw��"�DJf���!�tä����6|��������$S2�ȝ�c�I�Cp��G�L �U2�C�\\nM�h��@S&#���f֔���H�6d BCP�"�2MHi�[�_����G��_OG��ni�M1��θu�O�|H�jo2�3�K5�s#@*0�W�3�|8҆���@5�A9~[bU]��5N��֚9���n����1
+�6t-�fX��a��Q
\ No newline at end of file
diff --git a/static/v1/_app/immutable/assets/_page.GB6k287-.css.gz b/static/v1/_app/immutable/assets/_page.GB6k287-.css.gz
new file mode 100644
index 000000000..aa830d46a
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.GB6k287-.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.GNJxucTb.css b/static/v1/_app/immutable/assets/_page.GNJxucTb.css
new file mode 100644
index 000000000..a62e389fc
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.GNJxucTb.css
@@ -0,0 +1,1 @@
+.container.svelte-19xxeot{display:flex;flex-direction:column;justify-content:center;max-width:19rem;padding:20px;border:1px solid var(--col-gmid);border-radius:5px;box-shadow:5px 5px 5px #8080801a}.declined.svelte-19xxeot{color:var(--col-err)}.err.svelte-19xxeot,.desc.svelte-19xxeot{margin:0 .33rem 1rem}.err.svelte-19xxeot{color:var(--col-err)}.inline.svelte-19xxeot{display:flex;justify-content:space-between}.name.svelte-19xxeot{margin:-10px 5px 0}
diff --git a/static/v1/_app/immutable/assets/_page.GNJxucTb.css.br b/static/v1/_app/immutable/assets/_page.GNJxucTb.css.br
new file mode 100644
index 000000000..c2a93d405
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.GNJxucTb.css.br
@@ -0,0 +1,1 @@
+� n�<���jK(]����Ok�%n�^�LH��u[���^�ã����1FC��5�oL���%��i��Lp�w�Ηz��/ڳ��R���֐�{�;�;��YR�+Q>�}�[�Q��ͻ��=3Ƽ�)��?a%1B�بN>��U��K�<�8��1^1L�/Ě7��ތ#��{b�o#�Ɛ�0L��9�����
\ No newline at end of file
diff --git a/static/v1/_app/immutable/assets/_page.GNJxucTb.css.gz b/static/v1/_app/immutable/assets/_page.GNJxucTb.css.gz
new file mode 100644
index 000000000..fbfcece36
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.GNJxucTb.css.gz differ
diff --git a/static/v1/_app/immutable/assets/_page.HJ4svAjD.css b/static/v1/_app/immutable/assets/_page.HJ4svAjD.css
new file mode 100644
index 000000000..7626c63ab
--- /dev/null
+++ b/static/v1/_app/immutable/assets/_page.HJ4svAjD.css
@@ -0,0 +1,1 @@
+.btn.svelte-1r6sjfz{margin:10px}.container.svelte-1r6sjfz{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1rem}.err.svelte-1r6sjfz{margin:10px;color:var(--col-err)}
diff --git a/static/v1/_app/immutable/assets/_page.HJ4svAjD.css.br b/static/v1/_app/immutable/assets/_page.HJ4svAjD.css.br
new file mode 100644
index 000000000..7efc0478e
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.HJ4svAjD.css.br differ
diff --git a/static/v1/_app/immutable/assets/_page.HJ4svAjD.css.gz b/static/v1/_app/immutable/assets/_page.HJ4svAjD.css.gz
new file mode 100644
index 000000000..61e8bac76
Binary files /dev/null and b/static/v1/_app/immutable/assets/_page.HJ4svAjD.css.gz differ
diff --git a/static/v1/_app/immutable/assets/spow-wasm_bg.PRnxRq7g.wasm b/static/v1/_app/immutable/assets/spow-wasm_bg.PRnxRq7g.wasm
new file mode 100644
index 000000000..6995f1c21
Binary files /dev/null and b/static/v1/_app/immutable/assets/spow-wasm_bg.PRnxRq7g.wasm differ
diff --git a/static/v1/_app/immutable/assets/spow-wasm_bg.PRnxRq7g.wasm.br b/static/v1/_app/immutable/assets/spow-wasm_bg.PRnxRq7g.wasm.br
new file mode 100644
index 000000000..d81947070
Binary files /dev/null and b/static/v1/_app/immutable/assets/spow-wasm_bg.PRnxRq7g.wasm.br differ
diff --git a/static/v1/_app/immutable/assets/spow-wasm_bg.PRnxRq7g.wasm.gz b/static/v1/_app/immutable/assets/spow-wasm_bg.PRnxRq7g.wasm.gz
new file mode 100644
index 000000000..c8dad0309
Binary files /dev/null and b/static/v1/_app/immutable/assets/spow-wasm_bg.PRnxRq7g.wasm.gz differ
diff --git a/static/v1/_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js b/static/v1/_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js
new file mode 100644
index 000000000..c8f5f4513
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js
@@ -0,0 +1,50 @@
+import{a as r,n as Xe,b as A,c as me,t as B}from"./disclose-version.DZhRUPAc.js";import{a2 as K,p as le,o as Ne,a3 as c,a1 as l,n as Ct,a5 as v,a as ne,a0 as ee,j as a,g as e,_ as C,a6 as Bt,d as ys,a4 as q,h as Ke,a7 as na,a_ as Ca,b as ws,$ as Aa}from"./index-client.CGppiJvc.js";import{d as ut,e as Me,s as Y,r as oa,h as Ta}from"./render.D4MwAWTL.js";import{i as P}from"./if.DUA6Hpfn.js";import{p as n}from"./proxy.DB4Km9hY.js";import{p as G,s as bs,a as $s,c as La,r as Jt}from"./props.Df_pGDSd.js";import{y as oe,t as Et,ak as va,al as _s,J as ht,v as da,w as ks,a4 as xs,a5 as Es,a6 as Is,a7 as Na,L as Ra,am as Ot,m as Ye,an as Da,ad as ja,A as Ss,a9 as Cs,ac as As,ai as Ts,ao as qt,ap as Pa,aq as Ls,ar as Ns,$ as Xt,l as tt,as as Rs,at as Ds,au as za,av as ft,aw as js,r as Oa,ax as Ma,ay as Ua,x as Nt,az as Gt,aA as ca,aB as Ps,aC as zs,aD as Os,aE as qa,aF as Ga,aG as ua,ah as Ms,k as Us,aH as qs}from"./dataFetching.Dto1xJW6.js";import{s as ue,t as ce,f as pt,e as nt,b as _e,L as ha,g as pa,d as Gs,c as Rt}from"./Loading.FF_EHyHU.js";import{B as Se}from"./Button.BH2_dPry.js";import{b as dt,a as Ze,S as Be,D as Ws,E as ot,T as Dt,I as Zt,d as Ks,h as Wa,e as Fs,c as Vs}from"./Devices.BuQD3GeY.js";import{r as Te}from"./legacy-client.CgqodnwN.js";import{s as At}from"./snippet.xhmr1ywJ.js";import{w as Tt}from"./index.BU3V9-NS.js";import{a as Qt,C as ea}from"./CheckIcon.Cjxxxfsf.js";import{t as Bs,c as Js}from"./tweened.CQQvc4Vq.js";import{A as Ys}from"./AppVersion.DL5DXmu_.js";import{e as We,i as yt,b as Ka,O as kt}from"./OptionSelect.BCgZksOM.js";import{s as Hs,g as Mt}from"./helpers.DVmWh-6p.js";import{c as He,a as he,b as wt,I as ie}from"./Input.Bj_i2TLU.js";import{P as Wt,I as Fa,a as Va,b as Xs}from"./PasswordInput.6uXzPAl-.js";import{P as Zs}from"./PasswordPolicy.D9rZurKD.js";import{b as Qs}from"./this.B23tdsYu.js";import"./legacy.BuHyzquP.js";const er=Tt(),tr=Tt(),Yt=Tt(""),ta=Tt(!0);var ar=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg>');function sr(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=ar();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var rr=A('<div role="button" tabindex="0" class="close svelte-1qa3cal"><!></div> <div class="logo svelte-1qa3cal"><!></div>',1),ir=A('<div role="button" tabindex="0" class="burger svelte-1qa3cal"><!></div> <div></div> <div class="logo svelte-1qa3cal"><!></div>',1),lr=A('<div class="version svelte-1qa3cal"><!></div>'),nr=A('<nav class="nav svelte-1qa3cal"><div><!> <div class="menu svelte-1qa3cal"><div class="links svelte-1qa3cal"><!></div></div></div> <!></nav>');function or(_,s){le(s,!0);const t=bs(),d=()=>$s(I,"$width",t);let i=G(s,"selected",15,""),g=G(s,"widthExpanded",3,185),f=G(s,"widthCollapsed",3,60),u=G(s,"isExpanded",15,!0);const I=Bs(u()?g():f(),{duration:200,easing:Js});ta.subscribe(p=>u(p)),Yt.subscribe(p=>{p&&i(p)}),Te(()=>{u()?(ta.set(!0),I.set(g())):(ta.set(!1),setTimeout(()=>{I.set(f())},200))}),Te(()=>{i()&&Yt.set(i())}),Ne(()=>{er.set(g()),tr.set(f()),Yt.set(i())});function E(){u(!u())}var o=nr(),$=c(o),m=c($);{var T=p=>{var S=rr(),L=ee(S);L.__click=E;var D=c(L);Qt(D,{}),v(L);var j=l(L,2),N=c(j);At(N,()=>s.logo??Ct),v(j),K(()=>oe(L,"left",`calc(${d()??""}px - 22px)`)),Me("keypress",L,E),ce(1,L,()=>pt,()=>({delay:500,duration:200})),ce(2,L,()=>pt,()=>({duration:100})),ce(1,j,()=>pt,()=>({delay:250,duration:100})),ce(2,j,()=>pt,()=>({duration:20})),r(p,S)},k=p=>{var S=ir(),L=ee(S);L.__click=E,oe(L,"left","3px");var D=c(L);sr(D,{width:24}),v(L);var j=l(L,2);oe(j,"height","10px");var N=l(j,2),V=c(N);At(V,()=>s.logo??Ct),v(N),Me("keypress",L,E),ce(1,L,()=>pt,()=>({delay:500,duration:200})),ce(2,L,()=>pt,()=>({duration:100})),ce(1,N,()=>pt,()=>({delay:250,duration:100})),ce(2,N,()=>pt,()=>({duration:20})),r(p,S)};P(m,p=>{u()?p(T):p(k,!1)})}var h=l(m,2),y=c(h),w=c(y);At(w,()=>s.entries??Ct),v(y),v(h),v($);var b=l($,2);{var x=p=>{var S=lr(),L=c(S);Ys(L,{}),v(S),ce(1,S,()=>pt,()=>({delay:500,duration:200})),ce(2,S,()=>pt,()=>({duration:100})),r(p,S)};P(b,p=>{u()&&p(x)})}v(o),K(()=>{oe(o,"min-width",`${d()??""}px`),oe(o,"width",`${d()??""}px`),oe(o,"padding",u()?"20px 10px":"10px 3px")}),r(_,o),ne()}ut(["click"]);var vr=A('<div role="menuitem" tabindex="0" class="entry noselect font-label svelte-ueauq5"><!> <span class="label svelte-ueauq5"> </span></div>'),dr=A('<div role="menuitem" tabindex="0" class="entryCollapsed noselect font-label svelte-ueauq5"><!> <span class="labelCollapsed svelte-ueauq5"> </span></div>');function mt(_,s){le(s,!0);let t=G(s,"label",3,""),d=G(s,"slotCollapsed",3,!0),i=C(!0),g=C("var(--col-text)"),f=C("");Yt.subscribe(k=>a(f,n(k))),ta.subscribe(k=>a(i,n(k)));let u=C(!1);function I(){e(u)?a(g,"var(--col-err)"):e(f)===t()?a(g,"var(--col-ok)"):a(g,"var(--col-text)")}function E(){Yt.set(t())}Te(()=>{e(f)&&I()}),Te(()=>{e(u)?a(g,"var(--col-err)"):I()});var o=me(),$=ee(o);{var m=k=>{var h=vr();h.__click=E;var y=c(h);At(y,()=>s.children??Ct);var w=l(y,2),b=c(w,!0);v(w),v(h),K(()=>{Et(h,"selected",e(f)===t()),Y(b,t())}),Me("keypress",h,E),Me("mouseenter",h,()=>a(u,!0)),Me("mouseleave",h,()=>a(u,!1)),ce(7,h,()=>pt,()=>({duration:100})),r(k,h)},T=k=>{var h=dr();h.__click=E;var y=c(h);{var w=p=>{var S=me(),L=ee(S);At(L,()=>s.children??Ct),r(p,S)};P(y,p=>{d()&&p(w)})}var b=l(y,2),x=c(b,!0);v(b),v(h),K(()=>{Et(h,"selectedCollapsed",e(f)===t()),Y(x,t())}),Me("keypress",h,E),Me("mouseenter",h,()=>a(u,!0)),Me("mouseleave",h,()=>a(u,!1)),ce(5,h,()=>pt,()=>({delay:200,duration:100})),r(k,h)};P($,k=>{e(i)?k(m):k(T,!1)})}r(_,o),ne()}ut(["click"]);const it={"Content-Type":"application/json",Accept:"application/json"};function De(){return{"csrf-token":va(),"Content-Type":"application/json",Accept:"application/json"}}async function ke(_){return _.status===403&&(await _.json()).error==="MfaRequired"&&(console.error("MFA is required for a rauthy admin account"),await Hs(3e3),window.location.reload()),(_.status===401||_.status===403)&&window.location.reload(),_}async function cr(){return await fetch("/auth/v1/oidc/certs",{method:"GET",headers:it})}async function ur(){const _=await fetch("/auth/v1/clients",{method:"GET",headers:it});return await ke(_)}async function hr(_){const s=await fetch("/auth/v1/clients",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function pr(_){const s=await fetch(`/auth/v1/clients/${_.id}`,{method:"PUT",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function mr(_){const s=await fetch(`/auth/v1/clients/${_}`,{method:"DELETE",headers:De()});return await ke(s)}async function gr(_){const s=await fetch(`/auth/v1/clients/${_}/colors`,{method:"GET",headers:it});return await ke(s)}async function fr(_,s){const t=await fetch(`/auth/v1/clients/${_}/colors`,{method:"PUT",headers:De(),body:JSON.stringify(s)});return await ke(t)}async function yr(_){const s=await fetch(`/auth/v1/clients/${_}/colors`,{method:"DELETE",headers:De()});return await ke(s)}async function wr(_,s){const t=new FormData;t.append("logo",s);const d=await fetch(`/auth/v1/clients/${_}/logo`,{method:"PUT",headers:{"csrf-token":va()},body:t});return await ke(d)}async function br(_){const s=await fetch(`/auth/v1/clients/${_}/logo`,{method:"DELETE",headers:De()});return await ke(s)}async function $r(_){const s=await fetch(`/auth/v1/clients/${_}/secret`,{method:"POST",headers:De()});return await ke(s)}async function _r(_){const s=await fetch(`/auth/v1/clients/${_}/secret`,{method:"PUT",headers:De()});return await ke(s)}async function kr(){const _=await fetch("/auth/v1/encryption/keys",{method:"GET",headers:it});return await ke(_)}async function xr(_){const s=await fetch("/auth/v1/encryption/migrate",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function Er(_){const s=await fetch("/auth/v1/events",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function Ba(){const _=await fetch("/auth/v1/groups",{method:"GET",headers:it});return await ke(_)}async function Ir(_){const s=await fetch("/auth/v1/groups",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function Sr(_,s){const t=await fetch(`/auth/v1/groups/${_}`,{method:"PUT",headers:De(),body:JSON.stringify(s)});return await ke(t)}async function Cr(_){const s=await fetch(`/auth/v1/groups/${_}`,{method:"DELETE",headers:De()});return await ke(s)}async function Ar(){const _=await fetch("/auth/v1/login_time",{method:"GET",headers:it});return await ke(_)}async function Tr(_){const s=await fetch("/auth/v1/password_hash_times",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function Lr(_){const s=await fetch("/auth/v1/password_policy",{method:"PUT",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function Nr(_){const s=await fetch("/auth/v1/users/request_reset",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function Rr(){return await fetch("/auth/v1/providers",{method:"POST",headers:De()})}async function Dr(_){return await fetch("/auth/v1/providers/create",{method:"POST",headers:De(),body:JSON.stringify(_)})}async function jr(_,s){return await fetch(`/auth/v1/providers/${_}`,{method:"PUT",headers:De(),body:JSON.stringify(s)})}async function Pr(_){return await fetch(`/auth/v1/providers/${_}`,{method:"DELETE",headers:De()})}async function zr(_){return await fetch(`/auth/v1/providers/${_}/delete_safe`,{method:"GET",headers:De()})}async function Or(_,s){const t=new FormData;t.append("logo",s);const d=await fetch(`/auth/v1/providers/${_}/img`,{method:"PUT",headers:{"csrf-token":va()},body:t});return await ke(d)}async function Mr(_){return await fetch("/auth/v1/providers/lookup",{method:"POST",headers:De(),body:JSON.stringify(_)})}async function Ur(){const _=await fetch("/auth/v1/oidc/rotate_jwk",{method:"POST",headers:De()});return await ke(_)}async function qr(){const _=await fetch("/auth/v1/sessions",{method:"GET",headers:it});return await ke(_)}async function Ja(_,s,t,d){let i=`/auth/v1/sessions?page_size=${_}`;s&&(i=`${i}&offset=${s}`),d&&(i=`${i}&backwards=${d}`),t&&(i=`${i}&continuation_token=${t}`);const g=await fetch(i,{method:"GET",headers:it});return await ke(g)}async function Gr(){const _=await fetch("/auth/v1/sessions",{method:"DELETE",headers:De()});return await ke(_)}async function Wr(_){const s=await fetch(`/auth/v1/sessions/${_}`,{method:"DELETE",headers:De()});return await ke(s)}async function Kr(){const _=await fetch("/auth/v1/users",{method:"GET",headers:it});return await ke(_)}async function Ya(_,s,t,d){let i=`/auth/v1/users?page_size=${_}`;s&&(i=`${i}&offset=${s}`),d&&(i=`${i}&backwards=${d}`),t&&(i=`${i}&continuation_token=${t}`);const g=await fetch(i,{method:"GET",headers:it});return await ke(g)}async function Fr(_){const s=await fetch("/auth/v1/users",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function Ha(_,s){const t=await fetch(`/auth/v1/users/${_}`,{method:"PUT",headers:De(),body:JSON.stringify(s)});return await ke(t)}async function Vr(_){const s=await fetch(`/auth/v1/users/${_}`,{method:"DELETE",headers:De()});return await ke(s)}async function ma(){const _=await fetch("/auth/v1/users/attr",{method:"GET",headers:it});return await ke(_)}async function Br(_){const s=await fetch("/auth/v1/users/attr",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function Jr(_,s){const t=await fetch(`/auth/v1/users/attr/${_}`,{method:"PUT",headers:De(),body:JSON.stringify(s)});return await ke(t)}async function Yr(_){const s=await fetch(`/auth/v1/users/attr/${_}`,{method:"DELETE",headers:De()});return await ke(s)}async function Hr(_){const s=await fetch(`/auth/v1/users/${_}/attr`,{method:"GET",headers:it});return await ke(s)}async function Xr(_,s){const t=await fetch(`/auth/v1/users/${_}/attr`,{method:"PUT",headers:De(),body:JSON.stringify(s)});return await ke(t)}async function Zr(){const _=await fetch("/auth/v1/api_keys",{method:"GET",headers:it});return await ke(_)}async function Qr(_){const s=await fetch("/auth/v1/api_keys",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function ei(_){const s=await fetch(`/auth/v1/api_keys/${_.name}`,{method:"PUT",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function ti(_){const s=await fetch(`/auth/v1/api_keys/${_}`,{method:"DELETE",headers:De()});return await ke(s)}async function ai(_){const s=await fetch(`/auth/v1/api_keys/${_}/secret`,{method:"PUT",headers:De()});return await ke(s)}async function si(){const _=await fetch("/auth/v1/blacklist",{method:"GET",headers:it});return await ke(_)}async function ri(_){const s=await fetch("/auth/v1/blacklist",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function ii(_){const s=await fetch(`/auth/v1/blacklist/${_}`,{method:"DELETE",headers:De()});return await ke(s)}async function Xa(){const _=await fetch("/auth/v1/roles",{method:"GET",headers:it});return await ke(_)}async function li(_){const s=await fetch("/auth/v1/roles",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function ni(_,s){const t=await fetch(`/auth/v1/roles/${_}`,{method:"PUT",headers:De(),body:JSON.stringify(s)});return await ke(t)}async function oi(_){const s=await fetch(`/auth/v1/roles/${_}`,{method:"DELETE",headers:De()});return await ke(s)}async function Za(){const _=await fetch("/auth/v1/scopes",{method:"GET",headers:it});return await ke(_)}async function vi(_){const s=await fetch("/auth/v1/scopes",{method:"POST",headers:De(),body:JSON.stringify(_)});return await ke(s)}async function di(_,s){const t=await fetch(`/auth/v1/scopes/${_}`,{method:"PUT",headers:De(),body:JSON.stringify(s)});return await ke(t)}async function ci(_){const s=await fetch(`/auth/v1/scopes/${_}`,{method:"DELETE",headers:De()});return await ke(s)}async function ui(_,s,t){const d=await fetch(`/auth/v1/search?ty=${_}&idx=${s}&q=${t}`,{method:"GET",headers:it});return await ke(d)}const hi=Tt([]),ga=Tt([]),pi=Tt([]),fa=Tt([]),mi=Tt([]),Qa=Tt([]);var gi=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15"></path></svg>');function fi(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=gi();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var yi=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"></path></svg>');function wi(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=yi();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var bi=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9.75L14.25 12m0 0l2.25 2.25M14.25 12l2.25-2.25M14.25 12L12 14.25m-2.58 4.92l-6.375-6.375a1.125 1.125 0 010-1.59L9.42 4.83c.211-.211.498-.33.796-.33H19.5a2.25 2.25 0 012.25 2.25v10.5a2.25 2.25 0 01-2.25 2.25h-9.284c-.298 0-.585-.119-.796-.33z"></path></svg>');function $i(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=bi();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var _i=A("<option> </option>"),ki=A('<select class="opts font-label svelte-1yhbvsw"></select>'),xi=A('<div class="container svelte-1yhbvsw"><!> <div class="inputBar svelte-1yhbvsw"><input class="input svelte-1yhbvsw" type="text" placeholder="Search" autocomplete="off"> <div class="magnify svelte-1yhbvsw"><!></div></div> <div class="backWrap svelte-1yhbvsw"><div role="button" tabindex="0" class="back svelte-1yhbvsw"><!></div></div></div>');function es(_,s){le(s,!0);let t=G(s,"items",27,()=>n([])),d=G(s,"resItems",15),i=G(s,"options",19,()=>[]),g=G(s,"useServerSideIdx",11,""),f=G(s,"isSearchFiltered",15,!1),u=G(s,"search",15,""),I=C(""),E;Ne(()=>{i().length>0&&(a(I,n(i()[0].label)),o())});function o(){for(let j of i())if(j.label===e(I)){E=j.callback;break}E||console.error("Could not find a valid callback function in search options for label "+e(I))}function $(){u("")}function m(){if(u().length<2){d(t()),f(!1);return}d([...t().filter(j=>i().length>0?E(j,u()):j.toLowerCase().includes(u())||j===u())]),f(!0)}async function T(){if(u().length<_s){d(t()),f(!1);return}f(!0);const j=e(I).replaceAll("-","").replaceAll(" ","").toLowerCase();let N=await ui(g(),j,u());N.ok?d(await N.json()):console.error(N)}Te(()=>{e(I)&&o()}),Te(()=>{u()?g()?T():m():(d(t()),f(!1))});var k=xi(),h=c(k);{var y=j=>{Ze(j,{text:"Search by",yOffset:-30,children:(N,V)=>{var R=ki();We(R,21,i,yt,(F,z)=>{var O=_i(),U={},Q=c(O,!0);v(O),K(()=>{U!==(U=e(z).label)&&(O.value=(O.__value=e(z).label)==null?"":e(z).label),Y(Q,e(z).label)}),r(F,O)}),v(R),Ka(R,()=>e(I),F=>a(I,F)),r(N,R)},$$slots:{default:!0}})};P(h,j=>{i().length>1&&j(y)})}var w=l(h,2),b=c(w);nt(b),K(()=>ue(b,"name",Mt()));var x=l(b,2),p=c(x);wi(p,{width:20}),v(x),v(w);var S=l(w,2),L=c(S);L.__click=$;var D=c(L);$i(D,{}),v(L),v(S),v(k),dt(b,u),Me("keypress",L,$),r(_,k),ne()}ut(["click"]);var Ei=(_,s)=>a(s,!e(s)),Ii=A('<div class="search svelte-spg3op"><!></div>'),Si=(_,s,t)=>s(e(t)),Ci=A('<div role="button" tabindex="0" class="item svelte-spg3op"> </div>'),Ai=A('<div class="itemsContainer svelte-spg3op"><!> <div class="items noselect font-label svelte-spg3op"></div></div>'),Ti=A('<div class="wrapper svelte-spg3op"><div role="button" tabindex="0" class="icon svelte-spg3op"><!></div> <!></div>');function Li(_,s){le(s,!0);let t=G(s,"items",31,()=>n([])),d=G(s,"onSelect",3,h=>{}),i=G(s,"mindWidth",3,130),g=G(s,"maxHeight",19,()=>t().length>4?175:120),f=G(s,"searchThreshold",11,5),u=C(n([])),I=C(!1);Te(()=>{t().length<=f()&&a(u,n(t()))});function E(h){a(I,!1),a(u,n(t())),d()(h)}var o=Ti(),$=c(o);$.__click=[Ei,I];var m=c($);fi(m,{}),v($);var T=l($,2);{var k=h=>{var y=Ai(),w=c(y);{var b=p=>{var S=Ii(),L=c(S);es(L,{get items(){return t()},set items(D){t(D)},get resItems(){return e(u)},set resItems(D){a(u,n(D))}}),v(S),K(()=>oe(S,"max-width",`${i()}px`)),r(p,S)};P(w,p=>{t().length>f()&&p(b)})}var x=l(w,2);We(x,21,()=>e(u),yt,(p,S)=>{var L=Ci();L.__click=[Si,E,S];var D=c(L,!0);v(L),K(()=>Y(D,e(S))),Me("keypress",L,()=>E(e(S))),r(p,L)}),v(x),v(y),K(()=>{ue(y,"style",`min-width: ${i()??""}px; max-height: ${g()??""}px`),ue(x,"style",`width: ${i()??""}; max-height: ${(t().length>f()?g()-29:g())??""}px`)}),ce(7,y,()=>_e,()=>({duration:200})),r(h,y)};P(T,h=>{e(I)&&h(k)})}v(o),Me("keypress",$,()=>a(I,!e(I))),r(_,o),ne()}ut(["click"]);var Ni=(_,s,t)=>s()(t.label),Ri=A('<div class="label font-label svelte-jphwq"> <div role="button" tabindex="0" class="icon svelte-jphwq"><!></div></div>');function Di(_,s){le(s,!0);let t=G(s,"onDelete",3,()=>{});var d=Ri(),i=c(d),g=l(i);g.__click=[Ni,t,s];var f=c(g);Qt(f,{color:"--var(--col-bg)",width:14}),v(g),v(d),K(()=>Y(i,`${s.label??""} `)),Me("keypress",g,()=>t()(s.label)),r(_,d),ne()}ut(["click"]);var ji=A('<div class="container svelte-1iraqg1"><!> <!></div>');function zt(_,s){le(s,!0);let t=G(s,"items",15),d=G(s,"options",19,()=>[]),i=G(s,"searchThreshold",15,4),g=C(n([]));Ne(()=>{I()});async function f(k){t()||t([]),t().push(k),t([...t()]),await I()}async function u(k){t([...t().filter(h=>h!==k)]),await I()}async function I(){await Bt(),t()||t([]),a(g,n([...d().filter(k=>!t().includes(k))]))}var E=ji(),o=c(E);{var $=k=>{var h=me(),y=ee(h);We(y,17,t,yt,(w,b,x)=>{Di(w,{onDelete:u,get label(){return t()[x]},set label(p){t(t()[x]=p,!0)}})}),r(k,h)};P(o,k=>{var h;((h=t())==null?void 0:h.length)>0&&k($)})}var m=l(o,2);{var T=k=>{Li(k,{onSelect:f,get items(){return e(g)},set items(h){a(g,n(h))},get searchThreshold(){return i()},set searchThreshold(h){i(h)}})};P(m,k=>{e(g)&&e(g).length>0&&k(T)})}v(E),r(_,E),ne()}var Pi=A('<div class="success svelte-tl4x7h">Success</div>'),zi=A('<div class="err svelte-tl4x7h"> </div>'),Oi=A('<div class="container svelte-tl4x7h"><div class="unit svelte-tl4x7h"><div class="label font-label svelte-tl4x7h">USER ID</div> <div class="value font-mono svelte-tl4x7h"> </div></div> <div class="row svelte-tl4x7h"><div class="unit svelte-tl4x7h"><div class="label font-label svelte-tl4x7h">ENABLED</div> <div class="value svelte-tl4x7h"><!></div></div> <div class="unit svelte-tl4x7h"><div class="label font-label svelte-tl4x7h">E-MAIL VERIFIED</div> <div class="value svelte-tl4x7h"><!></div></div></div> <!> <!> <!> <div class="unit language svelte-tl4x7h"><div class="label svelte-tl4x7h">LANGUAGE</div> <div style="margin-top: .085rem"><!></div></div> <!> <!> <!> <!> <!> <!> <div class="unit svelte-tl4x7h"><div class="label svelte-tl4x7h">ROLES</div> <!></div> <div class="unit svelte-tl4x7h"><div class="label svelte-tl4x7h">GROUPS</div> <!></div> <div class="unit svelte-tl4x7h"><div class="label font-label svelte-tl4x7h">LIMIT LIFETIME</div> <div class="value svelte-tl4x7h"><!></div></div> <!> <div class="unit svelte-tl4x7h"><div class="label font-label svelte-tl4x7h">CREATED</div> <div class="value svelte-tl4x7h"> </div></div> <div class="unit svelte-tl4x7h"><div class="label font-label svelte-tl4x7h">LAST LOGIN</div> <div class="value svelte-tl4x7h"><!></div></div> <div class="unit svelte-tl4x7h"><div class="label font-label svelte-tl4x7h">PASSWORD EXPIRES</div> <div class="value svelte-tl4x7h"><!></div></div> <div class="unit svelte-tl4x7h"><div class="label font-label svelte-tl4x7h">MFA ACTIVE</div> <div class="value svelte-tl4x7h"><!></div></div> <div class="unit svelte-tl4x7h"><!> <!> <!></div></div>');function Mi(_,s){le(s,!0);let t=G(s,"user",31,()=>n({}));t().roles===void 0&&t(t().roles=[],!0),t().groups===void 0&&t(t().groups=[],!0);let d=C(""),i=C(!1),g=C(void 0),f=C(n(t().language.toUpperCase())),u=C(!!t().user_expires),I=C(n(ys(()=>e(u))?ht(t().user_expires,!0):void 0)),E=C(n([]));ga.subscribe(X=>{a(E,n(X))});let o=C(n([]));fa.subscribe(X=>{a(o,n(X))}),Te(()=>{e(i)&&a(g,n(setTimeout(()=>{a(i,!1),s.onSave()},3e3)))});let $=C(n({}));const m=He().shape({email:he().required("E-Mail is required").email("Bad E-Mail format"),given_name:he().trim().required("Given Name is required").matches(da,"Invalid characters"),family_name:he().nullable().trim().matches(ks,"Invalid characters")});let T=C(n({}));const k=He().shape({birthdate:he().nullable().trim().matches(xs,"Invalid characters"),phone:he().nullable().trim().matches(Es,"Format: +..."),street:he().nullable().trim().matches(Is,"Invalid characters"),zip:wt().nullable().min(1e3).max(999999),city:he().nullable().trim().matches(Na,"Invalid characters"),country:he().nullable().trim().matches(Na,"Invalid characters")});Ne(()=>()=>clearTimeout(e(g)));function h(X){X.code==="Enter"&&y()}async function y(){if(!await w())return;a(d,""),console.log(t().user_values);const X={email:t().email,given_name:t().given_name,family_name:t().family_name||null,language:e(f).toLowerCase(),roles:t().roles,groups:t().groups,enabled:t().enabled,email_verified:t().email_verified,user_expires:null,user_values:t().user_values};if(X.user_values.phone&&(X.user_values.phone=X.user_values.phone.replaceAll(" ","")),X.user_values.zip&&(X.user_values.zip=Number.parseInt(X.user_values.zip)),e(u)){let Le=Ot(e(I));if(!Le){a(d,"Invalid Date Input: User Expires");return}X.user_expires=Le}let Ee=await Ha(t().id,X);if(Ee.ok)a(i,!0);else{let Le=await Ee.json();a(d,n(Le.message))}}async function w(){let X=!0;try{await m.validate(t(),{abortEarly:!1}),a($,n({}))}catch(Ee){a($,n(Ye(Ee))),X=!1}try{await k.validate(t().user_values,{abortEarly:!1}),a(T,n({}))}catch(Ee){a(T,n(Ye(Ee))),X=!1}return X}var b=Oi(),x=c(b),p=l(c(x),2),S=c(p,!0);v(p),v(x);var L=l(x,2);oe(L,"margin-top","-5px");var D=c(L);oe(D,"width","107px");var j=l(c(D),2),N=c(j);Be(N,{get selected(){return t().enabled},set selected(X){t(t().enabled=X,!0)}}),v(j),v(D);var V=l(D,2);oe(V,"width","135px");var R=l(c(V),2),F=c(R);Be(F,{get selected(){return t().email_verified},set selected(X){t(t().email_verified=X,!0)}}),v(R),v(V),v(L);var z=l(L,2);ie(z,{type:"email",autocomplete:"off",placeholder:"E-Mail",get value(){return t().email},set value(X){t(t().email=X,!0)},get error(){return e($).email},set error(X){e($).email=X},$$events:{keypress:h,input:w},children:(X,Ee)=>{q();var Le=B("E-MAIL");r(X,Le)},$$slots:{default:!0}});var O=l(z,2);ie(O,{autocomplete:"off",placeholder:"Given Name",get value(){return t().given_name},set value(X){t(t().given_name=X,!0)},get error(){return e($).given_name},set error(X){e($).given_name=X},$$events:{keypress:h,input:w},children:(X,Ee)=>{q();var Le=B("GIVEN NAME");r(X,Le)},$$slots:{default:!0}});var U=l(O,2);ie(U,{autocomplete:"off",placeholder:"Family Name",get value(){return t().family_name},set value(X){t(t().family_name=X,!0)},get error(){return e($).family_name},set error(X){e($).family_name=X},$$events:{keypress:h,input:w},children:(X,Ee)=>{q();var Le=B("FAMILY NAME");r(X,Le)},$$slots:{default:!0}});var Q=l(U,2),M=l(c(Q),2),W=c(M);kt(W,{options:Ra,get value(){return e(f)},set value(X){a(f,n(X))}}),v(M),v(Q);var J=l(Q,2);ie(J,{autocomplete:"off",placeholder:"Street",get value(){return t().user_values.street},set value(X){t(t().user_values.street=X,!0)},get error(){return e(T).street},set error(X){e(T).street=X},$$events:{keypress:h,input:w},children:(X,Ee)=>{q();var Le=B("STREET");r(X,Le)},$$slots:{default:!0}});var Z=l(J,2);ie(Z,{type:"number",autocomplete:"off",placeholder:"ZIP",min:1e3,max:999999,get value(){return t().user_values.zip},set value(X){t(t().user_values.zip=X,!0)},get error(){return e(T).zip},set error(X){e(T).zip=X},$$events:{keypress:h,input:w},children:(X,Ee)=>{q();var Le=B("ZIP");r(X,Le)},$$slots:{default:!0}});var re=l(Z,2);ie(re,{autocomplete:"off",placeholder:"City",get value(){return t().user_values.city},set value(X){t(t().user_values.city=X,!0)},get error(){return e(T).city},set error(X){e(T).city=X},$$events:{keypress:h,input:w},children:(X,Ee)=>{q();var Le=B("CITY");r(X,Le)},$$slots:{default:!0}});var ve=l(re,2);ie(ve,{autocomplete:"off",placeholder:"Country",get value(){return t().user_values.country},set value(X){t(t().user_values.country=X,!0)},get error(){return e(T).country},set error(X){e(T).country=X},$$events:{keypress:h,input:w},children:(X,Ee)=>{q();var Le=B("COUNTRY");r(X,Le)},$$slots:{default:!0}});var be=l(ve,2);ie(be,{autocomplete:"off",placeholder:"Phone",get value(){return t().user_values.phone},set value(X){t(t().user_values.phone=X,!0)},get error(){return e(T).phone},set error(X){e(T).phone=X},$$events:{keypress:h,input:w},children:(X,Ee)=>{q();var Le=B("PHONE");r(X,Le)},$$slots:{default:!0}});var $e=l(be,2);ie($e,{type:"date",autocomplete:"off",placeholder:"Birthdate",get value(){return t().user_values.birthdate},set value(X){t(t().user_values.birthdate=X,!0)},get error(){return e(T).birthdate},set error(X){e(T).birthdate=X},$$events:{keypress:h,input:w},children:(X,Ee)=>{q();var Le=B("BIRTHDATE");r(X,Le)},$$slots:{default:!0}});var pe=l($e,2);oe(pe,"margin-top","-3px");var je=l(c(pe),2);zt(je,{get options(){return e(E)},searchThreshold:4,get items(){return t().roles},set items(X){t(t().roles=X,!0)}}),v(pe);var fe=l(pe,2),de=l(c(fe),2);zt(de,{get options(){return e(o)},searchThreshold:4,get items(){return t().groups},set items(X){t(t().groups=X,!0)}}),v(fe);var ye=l(fe,2);oe(ye,"margin-top","12px");var we=l(c(ye),2),Pe=c(we);Be(Pe,{get selected(){return e(u)},set selected(X){a(u,n(X))}}),v(we),v(ye);var Ce=l(ye,2);{var xe=X=>{var Ee=Ke(()=>Da(new Date));ie(X,{type:"datetime-local",step:"60",width:"16rem",get min(){return e(Ee)},max:"2099-01-01T00:00",get value(){return e(I)},set value(Le){a(I,n(Le))},$$events:{input:w},children:(Le,St)=>{q();var ae=B("USER EXPIRES");r(Le,ae)},$$slots:{default:!0}})};P(Ce,X=>{e(u)&&X(xe)})}var Re=l(Ce,2);oe(Re,"margin-top","12px");var H=l(c(Re),2),Ie=c(H,!0);K(()=>Y(Ie,ht(t().created_at))),v(H),v(Re);var ge=l(Re,2),Ue=l(c(ge),2),Je=c(Ue);{var rt=X=>{var Ee=B();K(()=>Y(Ee,ht(t().last_login))),r(X,Ee)},vt=X=>{var Ee=B("Never");r(X,Ee)};P(Je,X=>{t().last_login?X(rt):X(vt,!1)})}v(Ue),v(ge);var qe=l(ge,2),Fe=l(c(qe),2),lt=c(Fe);{var xt=X=>{var Ee=B();K(()=>Y(Ee,ht(t().password_expires))),r(X,Ee)},$t=X=>{var Ee=B("Never");r(X,Ee)};P(lt,X=>{t().password_expires?X(xt):X($t,!1)})}v(Fe),v(qe);var Qe=l(qe,2),et=l(c(Qe),2),gt=c(et),ct=Ke(()=>!!t().webauthn_user_id);ea(gt,{get check(){return e(ct)}}),v(et),v(Qe);var It=l(Qe,2),at=c(It);Se(at,{level:1,width:"4rem",$$events:{click:y},children:(X,Ee)=>{q();var Le=B("SAVE");r(X,Le)},$$slots:{default:!0}});var st=l(at,2);{var se=X=>{var Ee=Pi();r(X,Ee)};P(st,X=>{e(i)&&X(se)})}var Ae=l(st,2);{var ze=X=>{var Ee=zi(),Le=c(Ee,!0);v(Ee),K(()=>Y(Le,e(d))),r(X,Ee)};P(Ae,X=>{e(d)&&X(ze)})}v(It),v(b),K(()=>Y(S,t().id)),r(_,b),ne()}var Ui=A('<div class="desc svelte-8ppjyk"><p><b>The user has not initialized this account yet.</b></p> <p>You may send out a new Reset E-Mail, if the user has not received one.</p></div> <!>',1),qi=A(`<div class="desc svelte-8ppjyk"><p><b>This is a passkey only account type.</b></p> <p>This means, that this user is using the passwordless login flow only and does not have any password.</p> <p>If the user has lost all his keys and you have verified everything, you may reset his account type and
+                send out a new reset E-Mail, so the user can get access again.</p> <p>To reset the account, navigate to 'MFA' and delete all registered keys for this user.</p></div>`),Gi=A(`<!> <!> <!> <!> <div class="desc svelte-8ppjyk">You can either set and reset a user's password<br> or send out a new reset E-Mail for self-service.</div> <!> <!>`,1),Wi=A('<div class="success svelte-8ppjyk">Success</div>'),Ki=A('<div class="err svelte-8ppjyk"> </div>'),Fi=A('<div class="err svelte-8ppjyk"> </div>'),Vi=A('<div class="container svelte-8ppjyk"><!> <!> <!> <!></div>');function Bi(_,s){le(s,!0);let t=G(s,"user",27,()=>n({}));const d="inherit";let i=C(!1),g=C(""),f=C(""),u=C(!1),I=C(!1),E=C(void 0),o="330px",$=C(void 0),m=C(!1),T=n({new:"",verify:""});Te(()=>{e(I)&&a(E,n(setTimeout(()=>{a(I,!1),s.onSave()},3e3)))}),Ne(async()=>{if(!e($)){let z=await ja(),O=await z.json();z.ok?a($,n(O)):a(f,n(O.message))}});async function k(){return a(f,""),await h()?e(m)?!0:(a(f,"You must follow the password policy"),!1):!1}async function h(){return a(f,""),T.new.length>256?(a(f,"max 256 characters"),!1):T.new!==T.verify?(a(f,"New passwords do not match"),!1):!0}async function y(){let z={email:t().email};a(g,""),a(i,!0);let O=await Nr(z);if(O.ok)a(u,!0);else{let U=await O.json();a(g,n(U.message))}a(i,!1)}async function w(){let z={email:t().email,given_name:t().given_name,family_name:t().family_name,roles:t().roles,groups:t().groups,enabled:t().enabled,email_verified:t().email_verified};if(T.new.length>0){if(!(await h()&&await k()))return;z.password=T.new}a(f,""),a(i,!0);let O=await Ha(t().id,z);if(O.ok)a(I,!0);else{let U=await O.json();a(f,n(U.message))}a(i,!1)}function b(){const z=e($).length_min>24?e($).length_min:24;let O=Ss(z,e($).include_lower_case,e($).include_upper_case,e($).include_digits,e($).include_special);T.new=O,T.verify=O}var x=Vi(),p=c(x);{var S=z=>{var O=Ui(),U=l(ee(O),2);Se(U,{width:d,level:2,get isLoading(){return e(i)},set isLoading(Q){a(i,n(Q))},$$events:{click:y},children:(Q,M)=>{q();var W=B("SEND RESET E-MAIL");r(Q,W)},$$slots:{default:!0}}),r(z,O)},L=z=>{var O=me(),U=ee(O);{var Q=W=>{var J=qi();r(W,J)},M=W=>{var J=Gi(),Z=ee(J);{var re=de=>{Zs(de,{get password(){return T.new},get policy(){return e($)},get accepted(){return e(m)},set accepted(ye){a(m,n(ye))}})};P(Z,de=>{e($)&&de(re)})}var ve=l(Z,2),be=Ke(()=>T.new.length>0&&T.new===T.verify);Wt(ve,{type:"password",get width(){return o},autocomplete:"off",get showCopy(){return e(be)},get value(){return T.new},set value(de){T.new=de},$$events:{blur:h},children:(de,ye)=>{q();var we=B("New Password");r(de,we)},$$slots:{default:!0}});var $e=l(ve,2);Wt($e,{type:"password",get width(){return o},autocomplete:"off",get value(){return T.verify},set value(de){T.verify=de},$$events:{blur:h},children:(de,ye)=>{q();var we=B("New Password");r(de,we)},$$slots:{default:!0}});var pe=l($e,2);Se(pe,{width:d,level:3,$$events:{click:b},children:(de,ye)=>{q();var we=B("GENERATE RANDOM");r(de,we)},$$slots:{default:!0}});var je=l(pe,4);Se(je,{width:d,level:1,get isLoading(){return e(i)},set isLoading(de){a(i,n(de))},$$events:{click:y},children:(de,ye)=>{q();var we=B("SEND RESET E-MAIL");r(de,we)},$$slots:{default:!0}});var fe=l(je,2);Se(fe,{width:d,get isLoading(){return e(i)},set isLoading(de){a(i,n(de))},$$events:{click:w},children:(de,ye)=>{q();var we=B("SAVE PASSWORD");r(de,we)},$$slots:{default:!0}}),r(W,J)};P(U,W=>{t().account_type==="passkey"?W(Q):W(M,!1)},!0)}r(z,O)};P(p,z=>{t().account_type==="new"?z(S):z(L,!1)})}var D=l(p,2);{var j=z=>{var O=Wi();r(z,O)};P(D,z=>{(e(I)||e(u))&&z(j)})}var N=l(D,2);{var V=z=>{var O=Ki(),U=c(O,!0);v(O),K(()=>Y(U,e(f))),r(z,O)};P(N,z=>{e(f)&&z(V)})}var R=l(N,2);{var F=z=>{var O=Fi(),U=c(O,!0);v(O),K(()=>Y(U,e(g))),r(z,O)};P(R,z=>{e(g)&&z(F)})}v(x),r(_,x),ne()}var Ji=A('<div class="err svelte-1jljqe9"> </div>'),Yi=A('<div class="container svelte-1jljqe9"><div class="label svelte-1jljqe9">Are you sure, you want to delete this user?</div> <!> <!></div>');function Hi(_,s){le(s,!0);let t=G(s,"user",27,()=>n({})),d=C(!1),i=C("");async function g(){a(i,""),a(d,!0);let o=await Vr(t().id);if(o.ok)s.onSave();else{let $=await o.json();a(i,n($.message))}a(d,!1)}var f=Yi(),u=l(c(f),2);Se(u,{level:1,width:"5rem",get isLoading(){return e(d)},set isLoading(o){a(d,n(o))},$$events:{click:g},children:(o,$)=>{q();var m=B("DELETE");r(o,m)},$$slots:{default:!0}});var I=l(u,2);{var E=o=>{var $=Ji(),m=c($,!0);v($),K(()=>Y(m,e(i))),r(o,$)};P(I,o=>{e(i)&&o(E)})}v(f),r(_,f),ne()}var Xi=A('<div class="err svelte-1ofwsjt"> </div>'),Zi=A('<div class="success svelte-1ofwsjt">Success</div>'),Qi=A('<div class="container svelte-1ofwsjt"><div class="label svelte-1ofwsjt">Invalidate all existing sessions and refresh tokens for this user?</div> <!> <!></div>');function el(_,s){le(s,!0);let t=G(s,"user",27,()=>n({})),d=C(!1),i=C(""),g=C(!1);async function f(){a(i,""),a(d,!0);let m=await Wr(t().id);if(m.ok)a(g,!0);else{let T=await m.json();a(i,n(T.message))}a(d,!1)}var u=Qi(),I=l(c(u),2);Se(I,{level:1,get isLoading(){return e(d)},set isLoading(m){a(d,n(m))},$$events:{click:f},children:(m,T)=>{q();var k=B("LOGOUT");r(m,k)},$$slots:{default:!0}});var E=l(I,2);{var o=m=>{var T=Xi(),k=c(T,!0);v(T),K(()=>Y(k,e(i))),r(m,T)},$=m=>{var T=me(),k=ee(T);{var h=y=>{var w=Zi();r(y,w)};P(k,y=>{e(g)&&y(h)},!0)}r(m,T)};P(E,m=>{e(i)?m(o):m($,!1)})}v(u),r(_,u),ne()}var tl=A('<div class="success svelte-iv4fzr">Success</div>'),al=A('<div class="err svelte-iv4fzr"> </div>'),sl=A('<div class="container svelte-iv4fzr"><div class="desc svelte-iv4fzr">Set custom user attributes.<br> All Key / Value pairs will be handled as String / String.</div> <!> <!> <!> <!></div>');function rl(_,s){le(s,!0);let t=C(""),d=C(n([])),i=C(!1),g=C(!1);Ne(()=>{I()});async function f(){let w=await ma();if(!w.ok)a(t,"Error fetching attr: "+w.body.message);else return await w.json()}async function u(){let w=await Hr(s.user.id);if(!w.ok)a(t,"Error fetching user attr: "+w.body.message);else return await w.json()}async function I(){let w=await f(),b=w.values;if(w){let x=await u();if(x){let p=new Map;for(let S of x.values)p.set(S.key,S.value||"");for(let S of b){let L=p.get(S.name);L?S.value=L:S.value=""}a(d,n([...b]))}}}async function E(){a(t,""),a(g,!0);let w=[];for(let S of e(d)){let L={key:S.name,value:S.value};w.push(L)}let b={values:w},x=await Xr(s.user.id,b),p=await x.json();x.ok?a(i,!0):a(t,n(p.message)),s.onSave(),a(g,!1)}var o=sl(),$=l(c(o),2);We($,17,()=>e(d),yt,(w,b,x)=>{var p=Ke(()=>e(b).desc||"JSON Value");ie(w,{style:"width: 350px",autocomplete:"off",get placeholder(){return e(p)},get value(){return e(b).value},set value(S){e(b).value=S},children:(S,L)=>{q();var D=B();K(()=>Y(D,e(b).name)),r(S,D)},$$slots:{default:!0}})});var m=l($,2);Se(m,{get isLoading(){return e(g)},level:1,width:"4rem",$$events:{click:E},children:(w,b)=>{q();var x=B("SAVE");r(w,x)},$$slots:{default:!0}});var T=l(m,2);{var k=w=>{var b=tl();r(w,b)};P(T,w=>{e(i)&&w(k)})}var h=l(T,2);{var y=w=>{var b=al(),x=c(b,!0);v(b),K(()=>Y(x,e(t))),r(w,b)};P(h,w=>{e(t)&&w(y)})}v(o),r(_,o),ne()}var il=A('<div class="desc svelte-1a9qw6n">This user does not have any active MFA keys.</div>'),ll=A('<div class="keyContainer svelte-1a9qw6n"><div class="row svelte-1a9qw6n"><div class="label svelte-1a9qw6n">Passkey Name:</div> <b> </b></div> <div class="row svelte-1a9qw6n"><div class="label svelte-1a9qw6n">Key Registered:</div> <span class="font-mono"> </span></div> <div class="row svelte-1a9qw6n"><div class="label svelte-1a9qw6n">Last Usage:</div> <span class="font-mono"> </span></div> <div class="row svelte-1a9qw6n"><div class="label svelte-1a9qw6n"></div> <div class="deleteBtn svelte-1a9qw6n"><!></div></div></div>'),nl=A('<div class="desc svelte-1a9qw6n">You can delete the users MFA / Security Keys.<br> Be careful though, since this <b>cannot be reverted</b> without user interaction.<br> This is useful, if a user lost his keys and he is not able to log in any more.</div> <div class="keysContainer svelte-1a9qw6n"></div>',1),ol=A('<div class="err svelte-1a9qw6n"> </div>'),vl=A('<div class="container svelte-1a9qw6n"><!> <!></div>');function dl(_,s){le(s,!0);let t=G(s,"user",27,()=>n({})),d=C(""),i=C(n([]));Ne(async()=>{await g()});async function g(){let T=await Cs(t().id),k=await T.json();T.ok?a(i,n(k)):console.error("error fetching passkeys: "+k.message)}async function f(T){let k=e(i).length===1,h=await As(t().id,T);if(h.status===200)return await g(),k&&s.onSave(),!0;{let y=await h.json();return a(d,n(y.message)),!1}}var u=vl(),I=c(u);{var E=T=>{var k=il();r(T,k)},o=T=>{var k=nl(),h=l(ee(k),2);We(h,21,()=>e(i),y=>y.name,(y,w)=>{var b=ll(),x=c(b),p=l(c(x),2),S=c(p,!0);v(p),v(x);var L=l(x,2),D=l(c(L),2),j=c(D,!0);K(()=>Y(j,ht(e(w).registered))),v(D),v(L);var N=l(L,2),V=l(c(N),2),R=c(V,!0);K(()=>Y(R,ht(e(w).last_used))),v(V),v(N);var F=l(N,2),z=l(c(F),2),O=c(z);Se(O,{level:4,$$events:{click:()=>f(e(w).name)},children:(U,Q)=>{q();var M=B("DELETE");r(U,M)},$$slots:{default:!0}}),v(z),v(F),v(b),K(()=>Y(S,e(w).name)),r(y,b)}),v(h),r(T,k)};P(I,T=>{e(i).length<1?T(E):T(o,!1)})}var $=l(I,2);{var m=T=>{var k=ol(),h=c(k,!0);v(k),K(()=>Y(h,e(d))),r(T,k)};P($,T=>{e(d)&&T(m)})}v(u),r(_,u),ne()}var cl=A('<div class="container svelte-nw2ucx"><!></div>');function ul(_,s){le(s,!0);var t=cl(),d=c(t);Ws(d,{get userId(){return s.user.id}}),v(t),r(_,t),ne()}var hl=A('<div class="data font-mono svelte-115hohv"> </div>'),pl=A('<div class="data svelte-115hohv"> </div>'),ml=A('<div class="header svelte-115hohv"><!> <!></div>'),gl=A("<div><!></div>"),fl=A("<div><!></div>"),yl=A("<div><!></div>"),wl=A("<div><!></div>"),bl=A("<div><!></div>"),$l=A("<div><!></div>"),_l=A("<div><!></div>"),kl=A("<!> <!>",1),xl=A("<div><!></div>");function ts(_,s){le(s,!0);let t=G(s,"userEmail",3,""),d=G(s,"userId",3,""),i=G(s,"onSave",15),g=C(void 0),f=C(!0),u=C(void 0);const I=["Info","Attributes","Password","MFA","Devices","Logout","Delete"];let E=C(n(I[0]));const o=200,$=o/2;async function m(){const k=await Ts(d());if(k.ok)a(g,n(await k.json()));else{let h=await k.json();console.error(h)}a(f,!1)}function T(){a(u,!1),i()()}Te(()=>{e(u)&&m()}),ot(_,{get show(){return e(u)},set show(k){a(u,n(k))},header:k=>{var h=ml(),y=c(h);Ze(y,{text:"User ID",children:(b,x)=>{var p=hl(),S=c(p,!0);v(p),K(()=>Y(S,d())),r(b,p)},$$slots:{default:!0}});var w=l(y,2);Ze(w,{text:"E-Mail",children:(b,x)=>{var p=pl(),S=c(p,!0);v(p),K(()=>Y(S,t())),r(b,p)},$$slots:{default:!0}}),v(h),r(k,h)},body:k=>{var h=xl(),y=c(h);{var w=x=>{ha(x,{})},b=x=>{var p=kl(),S=ee(p);Dt(S,{labels:I,get selected(){return e(E)},set selected(N){a(E,n(N))}});var L=l(S,2);{var D=N=>{var V=gl(),R=c(V);Mi(R,{get user(){return e(g)},set user(F){a(g,n(F))},get onSave(){return i()},set onSave(F){i(F)}}),v(V),ce(5,V,()=>_e,()=>({delay:$,duration:o})),ce(6,V,()=>_e,()=>({duration:o})),r(N,V)},j=N=>{var V=me(),R=ee(V);{var F=O=>{var U=fl(),Q=c(U);rl(Q,{get user(){return e(g)},set user(M){a(g,n(M))},get onSave(){return i()},set onSave(M){i(M)}}),v(U),ce(5,U,()=>_e,()=>({delay:$,duration:o})),ce(6,U,()=>_e,()=>({duration:o})),r(O,U)},z=O=>{var U=me(),Q=ee(U);{var M=J=>{var Z=yl(),re=c(Z);Bi(re,{get user(){return e(g)},set user(ve){a(g,n(ve))},get onSave(){return i()},set onSave(ve){i(ve)}}),v(Z),ce(5,Z,()=>_e,()=>({delay:$,duration:o})),ce(6,Z,()=>_e,()=>({duration:o})),r(J,Z)},W=J=>{var Z=me(),re=ee(Z);{var ve=$e=>{var pe=wl(),je=c(pe);dl(je,{get user(){return e(g)},set user(fe){a(g,n(fe))},get onSave(){return i()},set onSave(fe){i(fe)}}),v(pe),ce(5,pe,()=>_e,()=>({delay:$,duration:o})),ce(6,pe,()=>_e,()=>({duration:o})),r($e,pe)},be=$e=>{var pe=me(),je=ee(pe);{var fe=ye=>{var we=bl(),Pe=c(we);ul(Pe,{get user(){return e(g)},set user(Ce){a(g,n(Ce))}}),v(we),ce(5,we,()=>_e,()=>({delay:$,duration:o})),ce(6,we,()=>_e,()=>({duration:o})),r(ye,we)},de=ye=>{var we=me(),Pe=ee(we);{var Ce=Re=>{var H=$l(),Ie=c(H);el(Ie,{get user(){return e(g)},set user(ge){a(g,n(ge))}}),v(H),ce(5,H,()=>_e,()=>({delay:$,duration:o})),ce(6,H,()=>_e,()=>({duration:o})),r(Re,H)},xe=Re=>{var H=me(),Ie=ee(H);{var ge=Ue=>{var Je=_l(),rt=c(Je);Hi(rt,{onSave:T,get user(){return e(g)},set user(vt){a(g,n(vt))}}),v(Je),ce(5,Je,()=>_e,()=>({delay:$,duration:o})),ce(6,Je,()=>_e,()=>({duration:o})),r(Ue,Je)};P(Ie,Ue=>{e(E)==="Delete"&&Ue(ge)},!0)}r(Re,H)};P(Pe,Re=>{e(E)==="Logout"?Re(Ce):Re(xe,!1)},!0)}r(ye,we)};P(je,ye=>{e(E)==="Devices"?ye(fe):ye(de,!1)},!0)}r($e,pe)};P(re,$e=>{e(E)==="MFA"?$e(ve):$e(be,!1)},!0)}r(J,Z)};P(Q,J=>{e(E)==="Password"?J(M):J(W,!1)},!0)}r(O,U)};P(R,O=>{e(E)==="Attributes"?O(F):O(z,!1)},!0)}r(N,V)};P(L,N=>{e(E)==="Info"?N(D):N(j,!1)})}r(x,p)};P(y,x=>{e(f)?x(w):x(b,!1)})}v(h),r(k,h)},$$slots:{header:!0,body:!0}}),ne()}var El=A('<div class="header font-label svelte-1y7ceqm">ADD NEW USER</div>'),Il=A('<div class="err svelte-1y7ceqm"> </div>'),Sl=A('<div class="container svelte-1y7ceqm"><!> <!> <!> <div class="language svelte-1y7ceqm"><div class="label svelte-1y7ceqm">LANGUAGE</div> <div style="margin-top: .4rem"><!></div></div> <div class="tiles svelte-1y7ceqm"><div class="label font-label svelte-1y7ceqm">ROLES</div> <!></div> <div class="tiles svelte-1y7ceqm"><div class="label font-label svelte-1y7ceqm">GROUPS</div> <!></div> <div class="unit svelte-1y7ceqm"><div class="label font-label svelte-1y7ceqm">LIMIT LIFETIME</div> <div class="value"><!></div></div> <!> <div class="btn svelte-1y7ceqm"><!> <!></div></div>');function Cl(_,s){le(s,!0);let t=G(s,"idx",31,()=>-1),d=C(""),i=C(void 0),g=C("EN"),f=C(!1),u=C(void 0),I=C(n({email:"",family_name:"",given_name:"",roles:[],groups:[]})),E=C(n({}));const o=He().shape({email:he().required("E-Mail is required").email("Bad E-Mail format"),given_name:he().trim().required("Given Name is required").matches(da,"Invalid characters"),family_name:he().trim().required("Family Name is required").matches(da,"Invalid characters")});let $=C(void 0);ga.subscribe(h=>{a($,n(h))});let m=C(void 0);fa.subscribe(h=>{a(m,n(h))});async function T(){if(!await k())return;a(d,"");let h=e(I);if(h.language=e(g).toLowerCase(),e(f)){let w=Ot(e(u));if(!w){a(d,"Invalid Date Input: User Expires");return}h.user_expires=w}let y=await Fr(e(I));if(y.ok)a(I,n({})),a(i,!1),a(I,n({email:"",family_name:"",given_name:"",roles:[],groups:[]})),s.onSave();else{let w=await y.json();a(d,n(w.message))}}async function k(){try{return await o.validate(e(I),{abortEarly:!1}),a(E,n({})),!0}catch(h){return a(E,n(Ye(h))),!1}}ot(_,{get idx(){return t()},set idx(h){t(h)},get show(){return e(i)},set show(h){a(i,n(h))},header:h=>{var y=El();r(h,y)},body:h=>{var y=Sl(),w=c(y);ie(w,{type:"email",autocomplete:"off",placeholder:"E-Mail",get value(){return e(I).email},set value(Z){e(I).email=Z},get error(){return e(E).email},set error(Z){e(E).email=Z},$$events:{input:k},children:(Z,re)=>{q();var ve=B("E-MAIL");r(Z,ve)},$$slots:{default:!0}});var b=l(w,2);ie(b,{autocomplete:"off",placeholder:"Given Name",get value(){return e(I).given_name},set value(Z){e(I).given_name=Z},get error(){return e(E).given_name},set error(Z){e(E).given_name=Z},$$events:{input:k},children:(Z,re)=>{q();var ve=B("GIVEN NAME");r(Z,ve)},$$slots:{default:!0}});var x=l(b,2);ie(x,{autocomplete:"off",placeholder:"Family Name",get value(){return e(I).family_name},set value(Z){e(I).family_name=Z},get error(){return e(E).family_name},set error(Z){e(E).family_name=Z},$$events:{input:k},children:(Z,re)=>{q();var ve=B("FAMILY NAME");r(Z,ve)},$$slots:{default:!0}});var p=l(x,2),S=l(c(p),2),L=c(S);kt(L,{options:Ra,get value(){return e(g)},set value(Z){a(g,n(Z))}}),v(S),v(p);var D=l(p,2),j=l(c(D),2);zt(j,{get options(){return e($)},searchThreshold:4,get items(){return e(I).roles},set items(Z){e(I).roles=Z}}),v(D);var N=l(D,2),V=l(c(N),2);zt(V,{get options(){return e(m)},searchThreshold:4,get items(){return e(I).groups},set items(Z){e(I).groups=Z}}),v(N);var R=l(N,2);oe(R,"margin-top","12px");var F=l(c(R),2),z=c(F);Be(z,{get selected(){return e(f)},set selected(Z){a(f,n(Z))}}),v(F),v(R);var O=l(R,2);{var U=Z=>{ie(Z,{type:"datetime-local",step:"60",width:"18rem",get min(){return new Date().toISOString().split(".")[0]},max:"2099-01-01T00:00",get value(){return e(u)},set value(re){a(u,n(re))},$$events:{input:k},children:(re,ve)=>{q();var be=B("USER EXPIRES");r(re,be)},$$slots:{default:!0}})};P(O,Z=>{e(f)&&Z(U)})}var Q=l(O,2),M=c(Q);Se(M,{level:1,$$events:{click:T},children:(Z,re)=>{q();var ve=B("SAVE");r(Z,ve)},$$slots:{default:!0}});var W=l(M,2);{var J=Z=>{var re=Il(),ve=c(re,!0);v(re),K(()=>Y(ve,e(d))),r(Z,re)};P(W,Z=>{e(d)&&Z(J)})}v(Q),v(y),r(h,y)},$$slots:{header:!0,body:!0}}),ne()}var Al=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0l-3.75-3.75M17.25 21L21 17.25"></path></svg>');function Tl(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=Al();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var Ll=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M3 4.5h14.25M3 9h9.75M3 13.5h5.25m5.25-.75L17.25 9m0 0L21 12.75M17.25 9v12"></path></svg>');function Nl(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=Ll();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var Rl=A("<option> </option>"),Dl=A('<select class="opts font-label svelte-1ojt600"></select>'),jl=A('<div role="button" tabindex="0" class="icon svelte-1ojt600"><!></div>'),Pl=A('<div class="container svelte-1ojt600"><!> <!></div>');function zl(_,s){le(s,!0);let t=G(s,"items",19,()=>[]),d=G(s,"resItems",15),i=G(s,"options",19,()=>[]),g=G(s,"firstDirReverse",3,!1),f=C(""),u=C(1),I;Ne(()=>{i().length>0&&(a(f,n(i()[0].label)),E()),g()&&$(),o()});function E(){for(let w of i())if(w.label===e(f)){I=w.callback;break}I||console.error("Could not find a valid callback function in order options for label "+e(f))}function o(){if(I){let w=[...t()];w.sort((b,x)=>I(b,x)*e(u)),d([...w])}}function $(){a(u,e(u)*-1),o()}Te(()=>{t()&&o()}),Te(()=>{e(f)&&(E(),o())});var m=Pl(),T=c(m);{var k=w=>{Ze(w,{text:"Order by",yOffset:-30,children:(b,x)=>{var p=Dl();We(p,21,i,yt,(S,L)=>{var D=Rl(),j={},N=c(D,!0);v(D),K(()=>{j!==(j=e(L).label)&&(D.value=(D.__value=e(L).label)==null?"":e(L).label),Y(N,e(L).label)}),r(S,D)}),v(p),Ka(p,()=>e(f),S=>a(f,S)),r(b,p)},$$slots:{default:!0}})};P(T,w=>{i().length>1&&w(k)})}var h=l(T,2);{var y=w=>{var b=jl();b.__click=$;var x=c(b);{var p=L=>{Nl(L,{})},S=L=>{Tl(L,{})};P(x,L=>{e(u)===1?L(p):L(S,!1)})}v(b),Me("keypress",b,$),r(w,b)};P(h,w=>{i().length>0&&w(y)})}v(m),r(_,m),ne()}ut(["click"]);var Ol=A('<div class="divider svelte-16rtgja"></div>'),Ml=A('<div class="container svelte-16rtgja"><div><!></div> <!> <div><!></div></div>');function Lt(_,s){le(s,!0);let t=G(s,"items",31,()=>n([])),d=G(s,"resItems",15),i=G(s,"searchOptions",27,()=>n([])),g=G(s,"orderOptions",27,()=>n([])),f=G(s,"firstDirReverse",3,!1),u=G(s,"useServerSideIdx",15,""),I=G(s,"isSearchFiltered",15,!1),E=G(s,"search",15,""),o=C(n([]));var $=Ml(),m=c($),T=c(m);zl(T,{get items(){return e(o)},get options(){return g()},get firstDirReverse(){return f()},get resItems(){return d()},set resItems(b){d(b)}}),v(m);var k=l(m,2);{var h=b=>{var x=Ol();r(b,x)};P(k,b=>{g().length>0&&b(h)})}var y=l(k,2),w=c(y);es(w,{get options(){return i()},get items(){return t()},set items(b){t(b)},get resItems(){return e(o)},set resItems(b){a(o,n(b))},get useServerSideIdx(){return u()},set useServerSideIdx(b){u(b)},get isSearchFiltered(){return I()},set isSearchFiltered(b){I(b)},get search(){return E()},set search(b){E(b)}}),v(y),v($),r(_,$),ne()}var Ul=(_,s)=>a(s,e(s)-1),ql=A('<div role="button" tabindex="0" class="icon iconLeft svelte-9iw34a"><!></div>'),Gl=(_,s,t)=>a(s,n(e(t))),Wl=A('<div role="button" tabindex="0" class="link noselect svelte-9iw34a"> </div>'),Kl=(_,s)=>a(s,e(s)+1),Fl=A('<div role="button" tabindex="0" class="icon iconRight svelte-9iw34a"><!></div>'),Vl=A('<div class="container svelte-9iw34a"><!> <div class="links svelte-9iw34a"></div> <!> <div class="chunkSize noselect svelte-9iw34a">Entries <!></div> <div class="font-label total svelte-9iw34a"> </div></div>');function jt(_,s){le(s,!0);let t=G(s,"items",27,()=>n([])),d=G(s,"resItems",31,()=>n([]));const i=[5,7,10,15,20,30,50,100],g=16;let f=C(n([])),u=C(1),I=5,E=C(15),o=C(!1),$=C(!1),m=C(n([]));Te(()=>{e(E)&&a(u,1)}),Te(()=>{if(e(E)&&t().length>0){let D=[];for(let j=0;j<t().length;j+=e(E)){const N=t().slice(j,j+e(E));D.push(N)}a(f,n(D)),d(e(f)[e(u)-1])}}),Te(()=>{if(e(u)){let D=[],j=Math.floor(I/2);if(e(f).length<=I){for(let N=1;N<=e(f).length;N++)D.push(N);a(o,!1),a($,!1)}else if(e(u)<=j){for(let N=1;N<=I;N++)D.push(N);a(o,!1),a($,!0)}else if(e(u)>e(f).length-j-1){for(let N=e(f).length-I;N<=e(f).length-1;N++)D.push(N+1);a(o,!0),a($,!1)}else{for(let N=e(u)-j;N<e(u)-j+I;N++)D.push(N);a(o,!0),a($,!0)}a(m,n(D))}});var T=Vl(),k=c(T);{var h=D=>{var j=ql();j.__click=[Ul,u];var N=c(j);Zt(N,{width:g}),v(j),Me("keypress",j,()=>a(u,e(u)-1)),r(D,j)};P(k,D=>{e(o)&&D(h)})}var y=l(k,2);We(y,21,()=>e(m),yt,(D,j)=>{var N=Wl();N.__click=[Gl,u,j];var V=c(N,!0);v(N),K(()=>{Et(N,"selected",e(u)===e(j)),Y(V,e(j))}),Me("keypress",N,()=>a(u,n(e(j)))),r(D,N)}),v(y);var w=l(y,2);{var b=D=>{var j=Fl();j.__click=[Kl,u];var N=c(j);Zt(N,{width:g}),v(j),Me("keypress",j,()=>a(u,e(u)+1)),r(D,j)};P(w,D=>{e($)&&D(b)})}var x=l(w,2),p=l(c(x));kt(p,{options:i,width:"50px",get value(){return e(E)},set value(D){a(E,n(D))}}),v(x);var S=l(x,2),L=c(S);v(S),v(T),K(()=>Y(L,`Total: ${t().length??""}`)),r(_,T),ne()}ut(["click"]);var Bl=(_,s)=>s()(0,!0),Jl=A('<div role="button" tabindex="0" class="icon iconLeft svelte-1jvef4m"><!></div>'),Yl=(_,s)=>s()(0,!1),Hl=A('<div role="button" tabindex="0" class="icon iconRight svelte-1jvef4m"><!></div>'),Xl=A('<div class="font-label total svelte-1jvef4m"> </div>'),Zl=A('<div class="container svelte-1jvef4m"><!> <div class="links svelte-1jvef4m"><div class="pageNo noselect svelte-1jvef4m"> </div></div> <!> <div class="chunkSize noselect svelte-1jvef4m">Entries <!></div> <!></div>');function as(_,s){le(s,!0);let t=G(s,"itemsTotal",3,0),d=G(s,"sspPage",11,1),i=G(s,"sspPageSize",11,15),g=G(s,"sspContinuationToken",11,""),f=G(s,"fetchPageCallback",3,(D,j)=>{}),u=G(s,"sspPageSizeChange",3,D=>{});const I=[2,3,5,7,10,15,20,30,50,100],E=16;let o=C(n(i()));Te(()=>{e(o)&&(console.log("page size change in pagination server"),u()(e(o)))});var $=Zl(),m=c($);{var T=D=>{var j=Jl();j.__click=[Bl,f];var N=c(j);Zt(N,{width:E}),v(j),Me("keypress",j,()=>f()(0,!0)),r(D,j)};P(m,D=>{d()!==1&&D(T)})}var k=l(m,2),h=c(k),y=c(h,!0);v(h),v(k);var w=l(k,2);{var b=D=>{var j=Hl();j.__click=[Yl,f];var N=c(j);Zt(N,{width:E}),v(j),Me("keypress",j,()=>f()(0,!1)),r(D,j)};P(w,D=>{g()&&D(b)})}var x=l(w,2),p=l(c(x));kt(p,{options:I,width:"50px",get value(){return e(o)},set value(D){a(o,n(D))}}),v(x);var S=l(x,2);{var L=D=>{var j=Xl(),N=c(j);v(j),K(()=>Y(N,`Total: ${t()??""}`)),r(D,j)};P(S,D=>{t()&&t()>0&&D(L)})}v($),K(()=>Y(y,d())),r(_,$),ne()}ut(["click"]);var Ql=A('<div class="svelte-1gwjtx9"><!></div>'),en=A('<div class="svelte-1gwjtx9"><!></div>'),tn=A(' <div class="content"><!> <!> <div id="users" class="svelte-1gwjtx9"><!></div> <!></div>',1);function an(_,s){le(s,!0);let t=C(""),d=C(n([])),i=C(n([])),g=C(n([])),f=C(""),u=C(!1),I=C(""),E=C(0),o=C(15),$=C(""),m=C(1),T=C(n([{label:"E-Mail",callback:(M,W)=>M.email.toLowerCase().includes(W.toLowerCase())},{label:"ID",callback:(M,W)=>M.id.toLowerCase().includes(W.toLowerCase())}])),k=C(n([{label:"E-Mail",callback:(M,W)=>M.email.localeCompare(W.email)},{label:"ID",callback:(M,W)=>M.id.localeCompare(W.id)},{label:"Created",callback:(M,W)=>M.created_at<W.created_at},{label:"Last Login",callback:(M,W)=>{let J=M.last_login||9999999999,Z=W.last_login||9999999999;return J<Z}}]));Ne(async()=>{h(),b(),x()});async function h(M,W,J,Z){let re;if(M===!0?J&&e(m)===2?re=await Ya(Z||e(o),W,void 0,!1):re=await Ya(Z||e(o),W,e($),J):re=await Kr(),!re.ok)a(t,"Error fetching users: "+re.body.message);else{re.status===206?(a(o,n(Number.parseInt(re.headers.get("x-page-size"),10))),a(f,"user"),re.headers.get("x-continuation-token"),a($,n(re.headers.get("x-continuation-token")))):a(f,""),a(E,n(re.headers.get("x-user-count")));let ve=await re.json();a(d,n([...ve])),a(i,n([...ve]))}}async function y(M,W){await h(!0,M,W),W?a(m,e(m)-1):a(m,e(m)+1)}async function w(M){a($,""),await h(!0,0,!1,M),a(m,1)}async function b(){let M=await Xa();if(!M.ok)a(t,"Error fetching roles: "+M.body.message);else{let W=await M.json();hi.set(W),ga.set(W.map(J=>J.name))}}async function x(){let M=await Ba();if(!M.ok)a(t,"Error fetching groups: "+M.body.message);else{let W=await M.json();pi.set(W),fa.set(W.map(J=>J.name))}}function p(){h(),b(),x(),a(I,"")}q();var S=tn(),L=ee(S),D=l(L),j=c(D);Lt(j,{get items(){return e(d)},get resItems(){return e(i)},set resItems(M){a(i,n(M))},get searchOptions(){return e(T)},set searchOptions(M){a(T,n(M))},get orderOptions(){return e(k)},set orderOptions(M){a(k,n(M))},get useServerSideIdx(){return e(f)},set useServerSideIdx(M){a(f,n(M))},get isSearchFiltered(){return e(u)},set isSearchFiltered(M){a(u,n(M))},get search(){return e(I)},set search(M){a(I,n(M))}});var N=l(j,2);Cl(N,{onSave:p});var V=l(N,2),R=c(V);{var F=M=>{var W=me(),J=ee(W);We(J,17,()=>e(i),Z=>Z.id,(Z,re)=>{var ve=Ql(),be=c(ve);ts(be,{get userId(){return e(re).id},get userEmail(){return e(re).email},onSave:p}),v(ve),r(Z,ve)}),r(M,W)},z=M=>{var W=me(),J=ee(W);We(J,17,()=>e(g),Z=>Z.id,(Z,re)=>{var ve=en(),be=c(ve);ts(be,{get userId(){return e(re).id},get userEmail(){return e(re).email},onSave:p}),v(ve),r(Z,ve)}),r(M,W)};P(R,M=>{e(f)&&!e(u)?M(F):M(z,!1)})}v(V);var O=l(V,2);{var U=M=>{as(M,{get itemsTotal(){return e(E)},fetchPageCallback:y,sspPageSizeChange:w,get sspPage(){return e(m)},set sspPage(W){a(m,n(W))},get sspPageSize(){return e(o)},set sspPageSize(W){a(o,n(W))},get sspContinuationToken(){return e($)},set sspContinuationToken(W){a($,n(W))}})},Q=M=>{jt(M,{get items(){return e(i)},set items(W){a(i,n(W))},get resItems(){return e(g)},set resItems(W){a(g,n(W))}})};P(O,M=>{e(f)&&!e(u)?M(U):M(Q,!1)})}v(D),K(()=>Y(L,`${e(t)??""} `)),r(_,S),ne()}var sn=A('<div class="content svelte-1mqfi4i"><!></div>');function bt(_,s){le(s,!0);let t=G(s,"eventsCollapsed",11,!0),d=G(s,"eventsWide",11,!1);var i=sn(),g=c(i);At(g,()=>s.children??Ct),v(i),K(()=>{Et(i,"mr",!t()&&!d()),Et(i,"mrCollapsed",t()&&!d()),Et(i,"mrWide",!t()&&d())}),r(_,i),ne()}var rn=A('<div class="success svelte-17in7jd">Success</div>'),ln=A('<div class="mainErr err svelte-17in7jd"> </div>'),nn=A('<div class="container svelte-17in7jd"><div class="unit svelte-17in7jd"><div class="label font-label svelte-17in7jd">ID</div> <div class="value font-mono svelte-17in7jd"> </div></div> <!> <!> <!> <!></div>');function on(_,s){le(s,!0);let t=G(s,"role",31,()=>n({})),d=C(""),i=C(!1),g=C(void 0);Te(()=>{e(i)&&a(g,n(setTimeout(()=>{a(i,!1),s.onSave()},2e3)))}),Ne(()=>()=>clearTimeout(e(g)));let f=C(n({}));const u=He().shape({name:he().trim().matches(qt,"Can only contain: 'a-z0-9-_/:*', length: 2-64")});async function I(){if(a(d,""),!await E()){a(d,"Invalid input");return}let S={role:t().name.trim()},L=await ni(t().id,S);if(L.ok)a(i,!0);else{let D=await L.json();a(d,n(D.message))}}async function E(){try{return await u.validate(t(),{abortEarly:!1}),a(f,n({})),!0}catch(S){return a(f,n(Ye(S))),!1}}var o=nn(),$=c(o),m=l(c($),2),T=c(m,!0);v(m),v($);var k=l($,2),h=Ke(()=>t().name==="rauthy_admin");ie(k,{autocomplete:"off",placeholder:"Role Name",get disabled(){return e(h)},get value(){return t().name},set value(S){t(t().name=S,!0)},get error(){return e(f).name},set error(S){e(f).name=S},$$events:{input:E},children:(S,L)=>{q();var D=B("ROLE NAME");r(S,D)},$$slots:{default:!0}});var y=l(k,2);Se(y,{level:1,width:"4rem",$$events:{click:I},children:(S,L)=>{q();var D=B("SAVE");r(S,D)},$$slots:{default:!0}});var w=l(y,2);{var b=S=>{var L=rn();r(S,L)};P(w,S=>{e(i)&&S(b)})}var x=l(w,2);{var p=S=>{var L=ln(),D=c(L,!0);v(L),K(()=>Y(D,e(d))),r(S,L)};P(x,S=>{e(d)&&S(p)})}v(o),K(()=>Y(T,t().id)),r(_,o),ne()}var vn=A('<div class="label svelte-1jljqe9">Anti-Lockout Rule: The rauthy_admin role cannot be deleted.</div>'),dn=A('<div class="err svelte-1jljqe9"> </div>'),cn=A('<div class="label svelte-1jljqe9">Are you sure, you want to delete this role?</div> <!> <!>',1),un=A('<div class="container svelte-1jljqe9"><!></div>');function hn(_,s){le(s,!0);let t=G(s,"role",19,()=>({})),d=C(!1),i=C("");async function g(){a(i,""),a(d,!0);let o=await oi(t().id);if(o.ok)s.onSave();else{let $=await o.json();a(i,n($.message))}a(d,!1)}var f=un(),u=c(f);{var I=o=>{var $=vn();r(o,$)},E=o=>{var $=cn(),m=l(ee($),2);Se(m,{level:1,get isLoading(){return e(d)},set isLoading(h){a(d,n(h))},$$events:{click:g},children:(h,y)=>{q();var w=B("DELETE");r(h,w)},$$slots:{default:!0}});var T=l(m,2);{var k=h=>{var y=dn(),w=c(y,!0);v(y),K(()=>Y(w,e(i))),r(h,y)};P(T,h=>{e(i)&&h(k)})}r(o,$)};P(u,o=>{t().name==="rauthy_admin"?o(I):o(E,!1)})}v(f),r(_,f),ne()}var pn=A('<div class="data font-mono svelte-115hohv"> </div>'),mn=A('<div class="data svelte-115hohv"> </div>'),gn=A('<div class="header svelte-115hohv"><!> <!></div>'),fn=A("<div><!></div>"),yn=A("<div><!></div>"),wn=A("<div><!> <!></div>");function bn(_,s){le(s,!0);let t=G(s,"role",31,()=>n({})),d=G(s,"onSave",15),i=C(void 0);const g=["Config","Delete"];let f=C(n(g[0]));const u=200,I=u/2;function E(){a(i,!1),d()()}ot(_,{get show(){return e(i)},set show(o){a(i,n(o))},header:o=>{var $=gn(),m=c($);Ze(m,{text:"Role ID",children:(k,h)=>{var y=pn(),w=c(y,!0);v(y),K(()=>Y(w,t().id)),r(k,y)},$$slots:{default:!0}});var T=l(m,2);Ze(T,{text:"Role Name",children:(k,h)=>{var y=mn(),w=c(y,!0);v(y),K(()=>Y(w,t().name)),r(k,y)},$$slots:{default:!0}}),v($),r(o,$)},body:o=>{var $=wn(),m=c($);Dt(m,{labels:g,get selected(){return e(f)},set selected(y){a(f,n(y))}});var T=l(m,2);{var k=y=>{var w=fn(),b=c(w);on(b,{get role(){return t()},set role(x){t(x)},get onSave(){return d()},set onSave(x){d(x)}}),v(w),ce(5,w,()=>_e,()=>({delay:I,duration:u})),ce(6,w,()=>_e,()=>({duration:u})),r(y,w)},h=y=>{var w=me(),b=ee(w);{var x=p=>{var S=yn(),L=c(S);hn(L,{get role(){return t()},onSave:E}),v(S),ce(5,S,()=>_e,()=>({delay:I,duration:u})),ce(6,S,()=>_e,()=>({duration:u})),r(p,S)};P(b,p=>{e(f)==="Delete"&&p(x)},!0)}r(y,w)};P(T,y=>{e(f)==="Config"?y(k):y(h,!1)})}v($),r(o,$)},$$slots:{header:!0,body:!0}}),ne()}var $n=A('<div class="header font-label svelte-r30xs6">ADD NEW ROLE</div>'),_n=A('<div class="success svelte-r30xs6">Success</div>'),kn=A('<div class="err svelte-r30xs6"> </div>'),xn=A('<div class="container svelte-r30xs6"><!> <!> <!> <!></div>');function En(_,s){le(s,!0);let t=G(s,"idx",31,()=>-1),d=C(void 0),i=C(n({role:""})),g=C(""),f=C(!1),u=C(void 0),I=C(n({}));const E=He().shape({role:he().trim().matches(qt,"Can only contain: 'a-z0-9-_/:*', length: 2-64")});Te(()=>{e(f)&&a(u,n(setTimeout(()=>{a(f,!1),a(i,n({role:""})),a(d,!1),s.onSave()},1500)))}),Ne(()=>()=>clearTimeout(e(u)));async function o(){if(a(g,""),!await $()){a(g,"Invalid input");return}e(i).role=e(i).role.trim();let m=await li(e(i));if(m.ok)a(f,!0);else{let T=await m.json();a(g,n(T.message))}}async function $(){try{return await E.validate(e(i),{abortEarly:!1}),a(I,n({})),!0}catch(m){return a(I,n(Ye(m))),!1}}ot(_,{get idx(){return t()},set idx(m){t(m)},get show(){return e(d)},set show(m){a(d,n(m))},header:m=>{var T=$n();r(m,T)},body:m=>{var T=xn(),k=c(T);ie(k,{autocomplete:"off",placeholder:"Role Name",get value(){return e(i).role},set value(p){e(i).role=p},get error(){return e(I).role},set error(p){e(I).role=p},$$events:{input:$},children:(p,S)=>{q();var L=B("ROLE NAME");r(p,L)},$$slots:{default:!0}});var h=l(k,2);Se(h,{level:1,width:"4rem",$$events:{click:o},children:(p,S)=>{q();var L=B("SAVE");r(p,L)},$$slots:{default:!0}});var y=l(h,2);{var w=p=>{var S=_n();r(p,S)};P(y,p=>{e(f)&&p(w)})}var b=l(y,2);{var x=p=>{var S=kn(),L=c(S,!0);v(S),K(()=>Y(L,e(g))),r(p,S)};P(b,p=>{e(g)&&p(x)})}v(T),r(m,T)},$$slots:{header:!0,body:!0}}),ne()}var In=A('<div class="svelte-161tj4u"><!></div>'),Sn=A(' <div class="content"><!> <!> <div id="roles" class="svelte-161tj4u"></div> <!> <div style="height: 20px"></div></div>',1);function Cn(_,s){le(s,!0);let t=C(""),d=C(n([])),i=C(n([])),g=C(n([])),f=C(""),u=[{label:"Name",callback:(b,x)=>b.name.toLowerCase().includes(x.toLowerCase())},{label:"ID",callback:(b,x)=>b.id.toLowerCase().includes(x.toLowerCase())}],I=[{label:"Name",callback:(b,x)=>b.name.localeCompare(x.name)},{label:"ID",callback:(b,x)=>b.id.localeCompare(x.id)}];Ne(async()=>{E()});async function E(){let b=await Xa(),x=await b.json();b.ok?a(d,n([...x])):a(t,n(x.message))}function o(){E(),a(f,"")}q();var $=Sn(),m=ee($),T=l(m),k=c(T);Lt(k,{get items(){return e(d)},searchOptions:u,orderOptions:I,get resItems(){return e(i)},set resItems(b){a(i,n(b))},get search(){return e(f)},set search(b){a(f,n(b))}});var h=l(k,2);En(h,{onSave:o});var y=l(h,2);We(y,23,()=>e(g),b=>b.id,(b,x,p)=>{var S=In(),L=c(S);bn(L,{onSave:o,get role(){return e(d)[e(p)]},set role(D){e(d)[e(p)]=D}}),v(S),r(b,S)}),v(y);var w=l(y,2);jt(w,{get items(){return e(i)},set items(b){a(i,n(b))},get resItems(){return e(g)},set resItems(b){a(g,n(b))}}),q(2),v(T),K(()=>Y(m,`${e(t)??""} `)),r(_,$),ne()}var An=A('<div class="header font-label svelte-r30xs6">ADD NEW GROUP</div>'),Tn=A('<div class="success svelte-r30xs6">Success</div>'),Ln=A('<div class="err svelte-r30xs6"> </div>'),Nn=A('<div class="container svelte-r30xs6"><!> <!> <!> <!></div>');function Rn(_,s){le(s,!0);let t=G(s,"idx",31,()=>-1),d=C(void 0),i=C(n({group:""})),g=C(""),f=C(!1),u=C(void 0),I=C(n({}));const E=He().shape({group:he().trim().matches(qt,"Can only contain: 'a-z0-9-_/:*', length: 2-64")});Te(()=>{e(f)&&a(u,n(setTimeout(()=>{s.onSave(),a(f,!1),a(i,n({group:""})),a(d,!1)},1500)))}),Ne(()=>()=>clearTimeout(e(u)));async function o(){if(a(g,""),!await $()){a(g,"Invalid input");return}e(i).group=e(i).group.trim();let m=await Ir(e(i));if(m.ok)a(f,!0);else{let T=await m.json();a(g,n(T.message))}}async function $(){try{return await E.validate(e(i),{abortEarly:!1}),a(I,n({})),!0}catch(m){return a(I,n(Ye(m))),!1}}ot(_,{get idx(){return t()},set idx(m){t(m)},get show(){return e(d)},set show(m){a(d,n(m))},header:m=>{var T=An();r(m,T)},body:m=>{var T=Nn(),k=c(T);ie(k,{autocomplete:"off",placeholder:"Group Name",get value(){return e(i).group},set value(p){e(i).group=p},get error(){return e(I).group},set error(p){e(I).group=p},$$events:{input:$},children:(p,S)=>{q();var L=B("GROUP NAME");r(p,L)},$$slots:{default:!0}});var h=l(k,2);Se(h,{level:1,width:"4rem",$$events:{click:o},children:(p,S)=>{q();var L=B("SAVE");r(p,L)},$$slots:{default:!0}});var y=l(h,2);{var w=p=>{var S=Tn();r(p,S)};P(y,p=>{e(f)&&p(w)})}var b=l(y,2);{var x=p=>{var S=Ln(),L=c(S,!0);v(S),K(()=>Y(L,e(g))),r(p,S)};P(b,p=>{e(g)&&p(x)})}v(T),r(m,T)},$$slots:{header:!0,body:!0}}),ne()}var Dn=A('<div class="success svelte-17in7jd">Success</div>'),jn=A('<div class="mainErr err svelte-17in7jd"> </div>'),Pn=A('<div class="container svelte-17in7jd"><div class="unit svelte-17in7jd"><div class="label font-label svelte-17in7jd">ID</div> <div class="value font-mono svelte-17in7jd"> </div></div> <!> <!> <!> <!></div>');function zn(_,s){le(s,!0);let t=G(s,"group",31,()=>n({})),d=C(""),i=C(!1),g=C(void 0);Te(()=>{e(i)&&a(g,n(setTimeout(()=>{a(i,!1),s.onSave()},2e3)))}),Ne(()=>()=>clearTimeout(e(g)));let f=C(n({}));const u=He().shape({name:he().trim().matches(qt,"Can only contain: 'a-z0-9-_/:*', length: 2-64")});async function I(){if(a(d,""),!await E()){a(d,"Invalid input");return}let p={group:t().name.trim()},S=await Sr(t().id,p);if(S.ok)a(i,!0);else{let L=await S.json();a(d,n(L.message))}}async function E(){try{return await u.validate(t(),{abortEarly:!1}),a(f,n({})),!0}catch(p){return a(f,n(Ye(p))),!1}}var o=Pn(),$=c(o),m=l(c($),2),T=c(m,!0);v(m),v($);var k=l($,2);ie(k,{autocomplete:"off",placeholder:"Group Name",get value(){return t().name},set value(p){t(t().name=p,!0)},get error(){return e(f).name},set error(p){e(f).name=p},$$events:{input:E},children:(p,S)=>{q();var L=B("GROUP NAME");r(p,L)},$$slots:{default:!0}});var h=l(k,2);Se(h,{level:1,width:"4rem",$$events:{click:I},children:(p,S)=>{q();var L=B("SAVE");r(p,L)},$$slots:{default:!0}});var y=l(h,2);{var w=p=>{var S=Dn();r(p,S)};P(y,p=>{e(i)&&p(w)})}var b=l(y,2);{var x=p=>{var S=jn(),L=c(S,!0);v(S),K(()=>Y(L,e(d))),r(p,S)};P(b,p=>{e(d)&&p(x)})}v(o),K(()=>Y(T,t().id)),r(_,o),ne()}var On=A('<div class="err svelte-1jljqe9"> </div>'),Mn=A('<div class="container svelte-1jljqe9"><div class="label svelte-1jljqe9">Are you sure, you want to delete this group?</div> <!> <!></div>');function Un(_,s){le(s,!0);let t=G(s,"group",19,()=>({})),d=C(!1),i=C("");async function g(){a(i,""),a(d,!0);let o=await Cr(t().id);if(o.ok)s.onSave();else{let $=await o.json();a(i,n($.message))}a(d,!1)}var f=Mn(),u=l(c(f),2);Se(u,{level:1,get isLoading(){return e(d)},set isLoading(o){a(d,n(o))},$$events:{click:g},children:(o,$)=>{q();var m=B("DELETE");r(o,m)},$$slots:{default:!0}});var I=l(u,2);{var E=o=>{var $=On(),m=c($,!0);v($),K(()=>Y(m,e(i))),r(o,$)};P(I,o=>{e(i)&&o(E)})}v(f),r(_,f),ne()}var qn=A('<div class="data font-mono svelte-115hohv"> </div>'),Gn=A('<div class="data svelte-115hohv"> </div>'),Wn=A('<div class="header svelte-115hohv"><!> <!></div>'),Kn=A("<div><!></div>"),Fn=A("<div><!></div>"),Vn=A("<div><!> <!></div>");function Bn(_,s){le(s,!0);let t=G(s,"group",31,()=>n({})),d=C(void 0);const i=["Config","Delete"];let g=C(n(i[0]));const f=200,u=f/2;function I(){a(d,!1),s.onSave()}ot(_,{get show(){return e(d)},set show(E){a(d,n(E))},header:E=>{var o=Wn(),$=c(o);Ze($,{text:"Group ID",children:(T,k)=>{var h=qn(),y=c(h,!0);v(h),K(()=>Y(y,t().id)),r(T,h)},$$slots:{default:!0}});var m=l($,2);Ze(m,{text:"Group Name",children:(T,k)=>{var h=Gn(),y=c(h,!0);v(h),K(()=>Y(y,t().name)),r(T,h)},$$slots:{default:!0}}),v(o),r(E,o)},body:E=>{var o=Vn(),$=c(o);Dt($,{labels:i,get selected(){return e(g)},set selected(h){a(g,n(h))}});var m=l($,2);{var T=h=>{var y=Kn(),w=c(y);zn(w,{get onSave(){return s.onSave},get group(){return t()},set group(b){t(b)}}),v(y),ce(5,y,()=>_e,()=>({delay:u,duration:f})),ce(6,y,()=>_e,()=>({duration:f})),r(h,y)},k=h=>{var y=me(),w=ee(y);{var b=x=>{var p=Fn(),S=c(p);Un(S,{get group(){return t()},onSave:I}),v(p),ce(5,p,()=>_e,()=>({delay:u,duration:f})),ce(6,p,()=>_e,()=>({duration:f})),r(x,p)};P(w,x=>{e(g)==="Delete"&&x(b)},!0)}r(h,y)};P(m,h=>{e(g)==="Config"?h(T):h(k,!1)})}v(o),r(E,o)},$$slots:{header:!0,body:!0}}),ne()}var Jn=A('<div class="svelte-106k2r5"><!></div>'),Yn=A(' <div class="content"><!> <!> <div id="groups" class="svelte-106k2r5"></div> <!> <div style="height: 20px"></div></div>',1);function Hn(_,s){le(s,!0);let t=C(""),d=C(n([])),i=C(n([])),g=C(n([])),f=[{label:"Name",callback:(w,b)=>w.name.toLowerCase().includes(b.toLowerCase())},{label:"ID",callback:(w,b)=>w.id.toLowerCase().includes(b.toLowerCase())}],u=[{label:"Name",callback:(w,b)=>w.name.localeCompare(b.name)},{label:"ID",callback:(w,b)=>w.id.localeCompare(b.id)}];Ne(async()=>{I()});async function I(){let w=await Ba(),b=await w.json();w.ok?a(d,n([...b])):a(t,n(b.message))}function E(){I()}q();var o=Yn(),$=ee(o),m=l($),T=c(m);Lt(T,{get items(){return e(d)},searchOptions:f,orderOptions:u,get resItems(){return e(i)},set resItems(w){a(i,n(w))}});var k=l(T,2);Rn(k,{onSave:E});var h=l(k,2);We(h,23,()=>e(g),w=>w.id,(w,b,x)=>{let p=x;var S=Jn(),L=c(S);Bn(L,{onSave:E,get group(){return e(g)[e(p)]},set group(D){e(g)[e(p)]=D}}),v(S),r(w,S)}),v(h);var y=l(h,2);jt(y,{get items(){return e(i)},set items(w){a(i,n(w))},get resItems(){return e(g)},set resItems(w){a(g,n(w))}}),q(2),v(m),K(()=>Y($,`${e(t)??""} `)),r(_,o),ne()}var Xn=A('<div class="header font-label svelte-r30xs6">ADD NEW SCOPE</div>'),Zn=A('<div class="success svelte-r30xs6">Success</div>'),Qn=A('<div class="err svelte-r30xs6"> </div>'),eo=A('<div class="container svelte-r30xs6"><!> <!> <!> <!></div>');function to(_,s){le(s,!0);let t=G(s,"idx",31,()=>-1),d=C(void 0),i=C(n({scope:""})),g=C(""),f=C(!1),u=C(void 0),I=C(n({}));const E=He().shape({scope:he().trim().matches(qt,"Can only contain: 'a-z0-9-_/:*', length: 2-64")});Te(()=>{e(f)&&a(u,n(setTimeout(()=>{s.onSave(),a(f,!1),a(i,n({scope:""})),a(d,!1)},1500)))}),Ne(()=>()=>clearTimeout(e(u)));async function o(){if(a(g,""),!await $()){a(g,"Invalid input");return}e(i).scope=e(i).scope.trim();let m=await vi(e(i));if(m.ok)a(f,!0);else{let T=await m.json();a(g,n(T.message))}}async function $(){try{return await E.validate(e(i),{abortEarly:!1}),a(I,n({})),!0}catch(m){return a(I,n(Ye(m))),!1}}ot(_,{get idx(){return t()},set idx(m){t(m)},get show(){return e(d)},set show(m){a(d,n(m))},header:m=>{var T=Xn();r(m,T)},body:m=>{var T=eo(),k=c(T);ie(k,{autocomplete:"off",placeholder:"Scope Name",get value(){return e(i).scope},set value(p){e(i).scope=p},get error(){return e(I).scope},set error(p){e(I).scope=p},$$events:{input:$},children:(p,S)=>{q();var L=B("SCOPE NAME");r(p,L)},$$slots:{default:!0}});var h=l(k,2);Se(h,{level:1,width:"4rem",$$events:{click:o},children:(p,S)=>{q();var L=B("SAVE");r(p,L)},$$slots:{default:!0}});var y=l(h,2);{var w=p=>{var S=Zn();r(p,S)};P(y,p=>{e(f)&&p(w)})}var b=l(y,2);{var x=p=>{var S=Qn(),L=c(S,!0);v(S),K(()=>Y(L,e(g))),r(p,S)};P(b,p=>{e(g)&&p(x)})}v(T),r(m,T)},$$slots:{header:!0,body:!0}}),ne()}var ao=A('<div class="desc svelte-guvobw"><p>Custom mappings cannot be done for OpenID default scopes and their names cannot be changed.</p></div>'),so=A('<div class="desc svelte-guvobw"><p>You can map custom scopes to attributes.<br> All additional attributes, that were configured, can have a custom value for each user.<br> When they are mapped to a scope, they can be included in the Access and / or ID Tokens.</p></div> <div class="unit svelte-guvobw"><div class="label svelte-guvobw">ACCESS TOKEN MAPPINGS</div> <!></div> <div class="unit svelte-guvobw"><div class="label svelte-guvobw">ID TOKEN MAPPINGS</div> <!></div>',1),ro=A('<div class="success svelte-guvobw">Success</div>'),io=A('<div class="mainErr err svelte-guvobw"> </div>'),lo=A("<!> <!> <!>",1),no=A('<div class="container svelte-guvobw"><div class="unit svelte-guvobw"><div class="label font-label svelte-guvobw">ID</div> <div class="value font-mono svelte-guvobw"> </div></div> <!> <div class="separator"></div> <!> <!></div>');function oo(_,s){le(s,!0);let t=G(s,"attrs",27,()=>n([])),d=G(s,"scope",31,()=>n({})),i=C(""),g=C(!1),f=C(void 0),u=C(!1),I=C(n([]));Te(()=>{e(g)&&a(f,n(setTimeout(()=>{a(g,!1),s.onSave()},2e3)))}),Te(()=>{t()&&a(I,n(t().map(D=>D.name)))}),Ne(()=>(a(u,n(Pa(d().name))),()=>clearTimeout(e(f))));let E=C(n({}));const o=He().shape({name:he().trim().matches(qt,"Can only contain: 'a-z0-9-_/:*', length: 2-64")});async function $(){if(a(i,""),!await m()){a(i,"Invalid input");return}let D={scope:d().name.trim()};d().attr_include_access.length>0&&(D.attr_include_access=d().attr_include_access),d().attr_include_id.length>0&&(D.attr_include_id=d().attr_include_id);let j=await di(d().id,D);if(j.ok)a(g,!0);else{let N=await j.json();a(i,n(N.message))}}async function m(){try{return await o.validate(d(),{abortEarly:!1}),a(E,n({})),!0}catch(D){return a(E,n(Ye(D))),!1}}var T=no(),k=c(T),h=l(c(k),2),y=c(h,!0);v(h),v(k);var w=l(k,2);ie(w,{autocomplete:"off",placeholder:"Scope Name",get disabled(){return e(u)},get value(){return d().name},set value(D){d(d().name=D,!0)},get error(){return e(E).name},set error(D){e(E).name=D},$$events:{input:m},children:(D,j)=>{q();var N=B("SCOPE NAME");r(D,N)},$$slots:{default:!0}});var b=l(w,4);{var x=D=>{var j=ao();r(D,j)},p=D=>{var j=so(),N=l(ee(j),2);oe(N,"margin-top","-3px");var V=l(c(N),2);zt(V,{get options(){return e(I)},searchThreshold:4,get items(){return d().attr_include_access},set items(z){d(d().attr_include_access=z,!0)}}),v(N);var R=l(N,2);oe(R,"margin-top","-3px");var F=l(c(R),2);zt(F,{get options(){return e(I)},searchThreshold:4,get items(){return d().attr_include_id},set items(z){d(d().attr_include_id=z,!0)}}),v(R),r(D,j)};P(b,D=>{e(u)?D(x):D(p,!1)})}var S=l(b,2);{var L=D=>{var j=lo(),N=ee(j);Se(N,{level:1,width:"4rem",$$events:{click:$},children:(O,U)=>{q();var Q=B("SAVE");r(O,Q)},$$slots:{default:!0}});var V=l(N,2);{var R=O=>{var U=ro();r(O,U)};P(V,O=>{e(g)&&O(R)})}var F=l(V,2);{var z=O=>{var U=io(),Q=c(U,!0);v(U),K(()=>Y(Q,e(i))),r(O,U)};P(F,O=>{e(i)&&O(z)})}r(D,j)};P(S,D=>{e(u)||D(L)})}v(T),K(()=>Y(y,d().id)),r(_,T),ne()}var vo=A('<div class="label svelte-1jljqe9">OpenID default scopes cannot be deleted</div>'),co=A('<div class="err svelte-1jljqe9"> </div>'),uo=A('<div class="label svelte-1jljqe9">Are you sure, you want to delete this scope?</div> <!> <!>',1),ho=A('<div class="container svelte-1jljqe9"><!></div>');function po(_,s){le(s,!0);let t=G(s,"scope",19,()=>({})),d=C(!1),i=C("");async function g(){a(i,""),a(d,!0);let o=await ci(t().id);if(o.ok)s.onSave();else{let $=await o.json();a(i,n($.message))}a(d,!1)}var f=ho(),u=c(f);{var I=o=>{var $=vo();r(o,$)},E=o=>{var $=uo(),m=l(ee($),2);Se(m,{level:1,get isLoading(){return e(d)},set isLoading(h){a(d,n(h))},$$events:{click:g},children:(h,y)=>{q();var w=B("DELETE");r(h,w)},$$slots:{default:!0}});var T=l(m,2);{var k=h=>{var y=co(),w=c(y,!0);v(y),K(()=>Y(w,e(i))),r(h,y)};P(T,h=>{e(i)&&h(k)})}r(o,$)};P(u,o=>{Pa(t().name)?o(I):o(E,!1)})}v(f),r(_,f),ne()}var mo=A('<div class="data font-mono svelte-115hohv"> </div>'),go=A('<div class="data svelte-115hohv"> </div>'),fo=A('<div class="header svelte-115hohv"><!> <!></div>'),yo=A("<div><!></div>"),wo=A("<div><!></div>"),bo=A("<div><!> <!></div>");function $o(_,s){le(s,!0);let t=G(s,"attrs",15),d=G(s,"scope",31,()=>n({})),i=G(s,"onSave",15),g=C(void 0);const f=["Config","Delete"];let u=C(n(f[0]));const I=200,E=I/2;function o(){a(g,!1),i()()}ot(_,{get show(){return e(g)},set show($){a(g,n($))},header:$=>{var m=fo(),T=c(m);Ze(T,{text:"Scope ID",children:(h,y)=>{var w=mo(),b=c(w,!0);v(w),K(()=>Y(b,d().id)),r(h,w)},$$slots:{default:!0}});var k=l(T,2);Ze(k,{text:"Scope Name",children:(h,y)=>{var w=go(),b=c(w,!0);v(w),K(()=>Y(b,d().name)),r(h,w)},$$slots:{default:!0}}),v(m),r($,m)},body:$=>{var m=bo(),T=c(m);Dt(T,{labels:f,get selected(){return e(u)},set selected(w){a(u,n(w))}});var k=l(T,2);{var h=w=>{var b=yo(),x=c(b);oo(x,{get attrs(){return t()},set attrs(p){t(p)},get scope(){return d()},set scope(p){d(p)},get onSave(){return i()},set onSave(p){i(p)}}),v(b),ce(5,b,()=>_e,()=>({delay:E,duration:I})),ce(6,b,()=>_e,()=>({duration:I})),r(w,b)},y=w=>{var b=me(),x=ee(b);{var p=S=>{var L=wo(),D=c(L);po(D,{get scope(){return d()},onSave:o}),v(L),ce(5,L,()=>_e,()=>({delay:E,duration:I})),ce(6,L,()=>_e,()=>({duration:I})),r(S,L)};P(x,S=>{e(u)==="Delete"&&S(p)},!0)}r(w,b)};P(k,w=>{e(u)==="Config"?w(h):w(y,!1)})}v(m),r($,m)},$$slots:{header:!0,body:!0}}),ne()}var _o=A('<div class="svelte-1tlglcs"><!></div>'),ko=A(' <div class="content"><!> <!> <div id="scopes" class="svelte-1tlglcs"></div> <!> <div style="height: 20px"></div></div>',1);function xo(_,s){le(s,!0);let t=C(n([])),d=C(""),i=C(n([])),g=C(n([])),f=C(n([])),u=C(""),I=[{label:"Name",callback:(p,S)=>p.name.toLowerCase().includes(S.toLowerCase())},{label:"ID",callback:(p,S)=>p.id.toLowerCase().includes(S.toLowerCase())}],E=[{label:"Name",callback:(p,S)=>p.name.localeCompare(S.name)},{label:"ID",callback:(p,S)=>p.id.localeCompare(S.id)}];Ne(()=>{$(),o(),a(u,"")});async function o(){let p=await ma();if(!p.ok)a(d,"Error fetching attributes: "+p.body.message);else{let S=await p.json();a(t,n([...S.values]))}}async function $(){let p=await Za(),S=await p.json();p.ok?a(i,n([...S])):a(d,n(S.message))}function m(){$()}q();var T=ko(),k=ee(T),h=l(k),y=c(h);Lt(y,{get items(){return e(i)},searchOptions:I,orderOptions:E,get resItems(){return e(g)},set resItems(p){a(g,n(p))},get search(){return e(u)},set search(p){a(u,n(p))}});var w=l(y,2);to(w,{onSave:m});var b=l(w,2);We(b,23,()=>e(f),p=>p.id,(p,S,L)=>{var D=_o(),j=c(D);$o(j,{onSave:m,get attrs(){return e(t)},set attrs(N){a(t,n(N))},get scope(){return e(f)[e(L)]},set scope(N){e(f)[e(L)]=N}}),v(D),r(p,D)}),v(b);var x=l(b,2);jt(x,{get items(){return e(g)},set items(p){a(g,n(p))},get resItems(){return e(f)},set resItems(p){a(f,n(p))}}),q(2),v(h),K(()=>Y(k,`${e(d)??""} `)),r(_,T),ne()}var Eo=A('<div class="entry svelte-f2hz2l"><div class="label svelte-f2hz2l"> </div> <!></div>'),Io=A('<div class="list svelte-f2hz2l"></div>');function ss(_,s){let t=G(s,"options",19,()=>[{label:"password",value:!1},{label:"refresh_token",value:!1}]);var d=Io();We(d,21,t,yt,(i,g,f)=>{var u=Eo(),I=c(u),E=c(I,!0);v(I);var o=l(I,2);Be(o,{get selected(){return e(g).value},set selected($){e(g).value=$}}),v(u),K(()=>Y(E,e(g).label)),r(i,u)}),v(d),r(_,d)}var So=A("<div><!></div>");function Co(_,s){le(s,!0);let t=G(s,"validation",19,()=>({})),d=G(s,"value",15),i=G(s,"autocomplete",11,"on"),g=G(s,"validate",15),f=Jt(s,["$$slots","$$events","$$legacy","validation","name","value","width","autocomplete","children","validate"]);g($);let u=C("");const I=na();async function E(){await Bt(),I("input",!0),$()}async function o(){I("blur",!0),$()}function $(){var k;return a(u,""),d()&&((k=t())!=null&&k.regex)&&!d().match(t().regex)?(a(u,n(t().errMsg||"Invalid input")),!1):!0}var m=So(),T=c(m);return ie(T,La({get width(){return s.width},get name(){return s.name},get autocomplete(){return i()}},()=>f,{get value(){return d()},set value(k){d(k)},get error(){return e(u)},set error(k){a(u,n(k))},$$events:{input:E,blur:o},children:(k,h)=>{var y=me(),w=ee(y);At(w,()=>s.children??Ct),r(k,y)},$$slots:{default:!0}})),v(m),ce(7,m,()=>pt,()=>({duration:200})),r(_,m),ne({validateValue:$})}var Ao=A('<div class="err svelte-nzivgu"> </div>'),To=A('<div class="container svelte-nzivgu"><!> <!></div>');function Kt(_,s){le(s,!0);let t=G(s,"validation",27,()=>n({required:!1,regex:void 0,errMsg:""})),d=G(s,"values",15),i=G(s,"validate",15),g=G(s,"width",3,"260px"),f=G(s,"optional",3,!1),u=G(s,"autocomplete",15,"on"),I=Jt(s,["$$slots","$$events","$$legacy","validation","values","validate","width","optional","autocomplete","children"]);i(k);let E=C(""),o=C(n([]));const $=na();Ne(()=>{d()||d([]);for(let x of d())e(o).push({name:Mt(),value:x});e(o).push({name:Mt(),value:""})});async function m(){await Bt(),e(o)[e(o).length-1].value?e(o).push({name:Mt(),value:""}):e(o).length>1&&!e(o)[e(o).length-2].value&&a(o,n([...e(o).slice(0,e(o).length-1)])),$("input",!0),k(),d(T())}function T(){k();let x=[];for(let p=0;p<e(o).length-1;p++)x.push(e(o)[p].value);return x}function k(){if(t().required&&e(o).length===1&&!e(o)[0].value)return f()?!0:(a(E,"Required"),!1);let x=!0;for(let p of e(o))p.value&&!p.validate()&&(x=!1);return x}var h=To(),y=c(h);We(y,17,()=>e(o),yt,(x,p,S)=>{Co(x,La({width:"calc({width} - 20px)",get validation(){return t()},get name(){return e(p).name}},()=>I,{get value(){return e(p).value},set value(L){e(p).value=L},get validate(){return e(p).validate},set validate(L){e(p).validate=L},get autocomplete(){return u()},set autocomplete(L){u(L)},$$events:{input:m,blur:m},children:(L,D)=>{var j=me(),N=ee(j);At(N,()=>s.children??Ct),r(L,j)},$$slots:{default:!0}}))});var w=l(y,2);{var b=x=>{var p=Ao(),S=c(p,!0);v(p),K(()=>Y(S,e(E))),r(x,p)};P(w,x=>{e(E)&&x(b)})}return v(h),K(()=>oe(h,"width",g())),r(_,h),ne({getValues:T,validateValues:k})}var Lo=A('<div class="desc svelte-1pba61y"><p><span><b>CAUTION:</b></span> The <code class="svelte-1pba61y">FORCE MFA</code> option for <code class="svelte-1pba61y">rauthy</code> itself is managed statically via the <code class="svelte-1pba61y">ADMIN_FORCE_MFA</code> config variable and will be overridden with each restart.</p></div>'),No=A(`<div class="desc svelte-1pba61y"><p><span><b>CAUTION:</b></span> If you <code class="svelte-1pba61y">FORCE MFA</code> for this client here, this will only apply to the <code class="svelte-1pba61y">authorization_code</code> flow! If you use other flows,
+                MFA cannot be forced for them!</p></div>`),Ro=A('<div class="separator svelte-1pba61y"></div> <b>CAUTION:</b> <p><code class="svelte-1pba61y">rauthy</code> is the default client which is needed for logging into this Admin UI.<br> Be VERY careful when you change values here, since you could end up locking yourself out of the UI.</p>',1),Do=A('<div class="success svelte-1pba61y">Success</div>'),jo=A('<div class="mainErr err svelte-1pba61y"> </div>'),Po=A(`<div class="container svelte-1pba61y"><div class="unit svelte-1pba61y"><div class="label font-label svelte-1pba61y">CLIENT ID</div> <div class="value font-mono svelte-1pba61y"> </div></div> <div class="desc svelte-1pba61y"><p>The Name can be changed without any impact on the configuration.<br> It will just show up on the Login / Logout screens.</p></div> <!> <div class="desc svelte-1pba61y"><p>Information about this client's URI and some contacts.
+            Client URI and Contacts might be shown to users on the login page.</p></div> <!> <!> <div class="desc svelte-1pba61y"><p>Client configuration</p></div> <div class="row svelte-1pba61y"><div class="unit svelte-1pba61y"><div class="label font-label svelte-1pba61y">ENABLED</div> <div class="value svelte-1pba61y"><!></div></div> <div class="unit svelte-1pba61y"><div class="label font-label svelte-1pba61y">CONFIDENTIAL</div> <div class="value confidential svelte-1pba61y"><!></div></div></div> <div class="unit svelte-1pba61y"><div class="label font-label svelte-1pba61y">FLOWS ENABLED</div> <div class="flows svelte-1pba61y"><!></div></div> <div class="unit svelte-1pba61y"><div class="label font-label svelte-1pba61y">FORCE MFA</div> <div class="value svelte-1pba61y"><!></div></div> <!> <div class="separator svelte-1pba61y"></div> <div class="desc svelte-1pba61y"><p>Allowed Scopes will be applied, if the client asks for them during the login.<br> Default Scopes will always be applied.</p></div> <div class="unit svelte-1pba61y"><div class="label svelte-1pba61y">ALLOWED SCOPES</div> <!></div> <div class="unit svelte-1pba61y"><div class="label svelte-1pba61y">DEFAULT SCOPES</div> <!></div> <div class="separator svelte-1pba61y"></div> <!> <div class="desc svelte-1pba61y"><p>Redirect URIs may contain a <code class="svelte-1pba61y">*</code> wildcard only at the end.</p></div> <!> <div class="separator svelte-1pba61y"></div> <!> <div class="separator svelte-1pba61y"></div> <div class="desc svelte-1pba61y"><p>The Token Lifetime applies to the Access and ID tokens and is specified in seconds.</p> <p>If your client does support EdDSA / ed25519 token algorithms, you should always use it for better security
+            and
+            smaller tokens.<br> The RSA algorithms does exist for compatibility reasons only.</p> <p>The algorithm for the optional refresh token cannot be changed, since this should only be used by <i>rauthy</i> anyway.</p></div> <!> <div class="row svelte-1pba61y"><div class="unit svelte-1pba61y"><div class="label font-label svelte-1pba61y">ACCESS ALGORITHM</div> <div class="value svelte-1pba61y"><!></div></div> <div class="unit svelte-1pba61y"><div class="label font-label svelte-1pba61y">ID ALGORITHM</div> <div class="value svelte-1pba61y"><!></div></div></div> <div class="separator svelte-1pba61y"></div> <div class="desc svelte-1pba61y"><p>If your application does support it, you should always use S256 PKCE challenges.<br> If you login from a single page application directly without any backend and therefore have a
+            non-confidential
+            client, you must(!) use at least the plain PKCE challenge, to have a secure login flow.</p> <p>If any of these is set, <i>rauthy</i> will enforce the usage and deny any login, which does not provide a
+            valid challenge.</p></div> <div class="unit svelte-1pba61y"><div class="label font-label svelte-1pba61y">PKCE CHALLENGES</div> <div class="challenges svelte-1pba61y"><!></div></div> <div class="desc err svelte-1pba61y"><!></div> <!> <!> <!></div>`);function zo(_,s){le(s,!0);let t=G(s,"client",31,()=>n({}));const d="350px";let i=C(""),g=C(!1),f=C(void 0),u=n(Ls.map(se=>{var Ae,ze;return se.label==="device_code"?se.value=(Ae=t().flows_enabled)==null?void 0:Ae.includes("urn:ietf:params:oauth:grant-type:device_code"):se.value=(ze=t().flows_enabled)==null?void 0:ze.includes(se.label),se})),I=C(void 0);Qa.subscribe(se=>{a(I,n(se))});let E=n(Ns.map(se=>{var Ae;return se.value=(Ae=t().challenges)==null?void 0:Ae.includes(se.label),se})),o=C(void 0),$=C(void 0),m=C(void 0),T=C(void 0);Ne(()=>()=>clearTimeout(e(f)));let k=C(n({}));const h=He().shape({name:he().trim().matches(Xt,"Can only contain characters, numbers and '-'"),client_uri:he().trim().nullable().matches(tt,"Invalid URI"),access_token_lifetime:wt().required("Token Lifetime is required").min(10,"Cannot be lower than 10").max(86400,"Cannot be higher than 86400")});function y(){t().redirect_uris[0]===""&&t(t().redirect_uris=[],!0),(!t().post_logout_redirect_uris||t().post_logout_redirect_uris[0]==="")&&t(t().post_logout_redirect_uris=[],!0),t().name||t(t().name="",!0),(!t().contacts||t().contacts[0]==="")&&t(t().contacts=[],!0),t().client_uri||t(t().client_uri=null,!0)}function w(se){se.code==="Enter"&&b()}async function b(){a(i,"");const se=await x();if(!e($)()){a(i,"Invalid Allowed Origin");return}if(!e(m)()){a(i,"Invalid Redirect URIs");return}if(!e(T)()){a(i,"Invalid Post Logout URIs");return}if(!e(o)()){a(i,"Invalid Contacts");return}if(!se){a(i,"Invalid input");return}if(t(t().access_token_lifetime=Number.parseInt(t().access_token_lifetime),!0),t(t().flows_enabled=u.filter(X=>X.value).map(X=>X.label==="device_code"?"urn:ietf:params:oauth:grant-type:device_code":X.label),!0),t().flows_enabled.includes("authorization_code")&&t().redirect_uris.length===0){a(i,"With 'authorization_code' flow enabled, you need to specify at least one redirect URI");return}if(t().flows_enabled.includes("client_credentials")&&!t().confidential){a(i,"'client_credentials' flow needs a 'confidential' client");return}if(t().flows_enabled.length===0){a(i,"At least one flow must be enabled");return}let Ae=t();t(t().challenges=E.filter(X=>X.value).map(X=>X.label),!0),t().challenges.length===0&&(Ae.challenges=null),Ae.name||(Ae.name=void 0),Ae.allowed_origins.length>0&&!Ae.allowed_origins[0]&&(Ae.allowed_origins=[]);let ze=await pr(Ae);if(ze.ok)a(g,!0);else{let X=await ze.json();a(i,n(X.message))}}async function x(){try{return await h.validate(t(),{abortEarly:!1}),a(k,n({})),!0}catch(se){return a(k,n(Ye(se))),!1}}Te(()=>{t().id&&y()}),Te(()=>{e(g)&&a(f,n(setTimeout(()=>{a(g,!1),s.onSave()},3e3)))});var p=Po(),S=c(p),L=l(c(S),2),D=c(L,!0);v(L),v(S);var j=l(S,4);ie(j,{autocomplete:"off",placeholder:"Client Name",width:d,get value(){return t().name},set value(se){t(t().name=se,!0)},get error(){return e(k).name},set error(se){e(k).name=se},$$events:{keypress:w,input:x},children:(se,Ae)=>{q();var ze=B("CLIENT NAME");r(se,ze)},$$slots:{default:!0}});var N=l(j,4);ie(N,{autocomplete:"off",placeholder:"Client URI",width:d,get value(){return t().client_uri},set value(se){t(t().client_uri=se,!0)},get error(){return e(k).client_uri},set error(se){e(k).client_uri=se},$$events:{keypress:w,input:x},children:(se,Ae)=>{q();var ze=B("CLIENT URI");r(se,ze)},$$slots:{default:!0}});var V=l(N,2);Kt(V,{style:`width: ${d}`,validation:{required:!1,regex:Rs,errMsg:"Only URL safe values: a-zA-Z0-9,.:/_-&?=~#!$'()*+%"},autocomplete:"off",placeholder:"Contact",optional:!0,get values(){return t().contacts},set values(se){t(t().contacts=se,!0)},get validate(){return e(o)},set validate(se){a(o,n(se))},children:(se,Ae)=>{q();var ze=B("CONTACT");r(se,ze)},$$slots:{default:!0}});var R=l(V,4);oe(R,"margin-top","-5px");var F=c(R);oe(F,"width","138px");var z=l(c(F),2),O=c(z);Be(O,{get selected(){return t().enabled},set selected(se){t(t().enabled=se,!0)}}),v(z),v(F);var U=l(F,2);oe(U,"width","110px");var Q=l(c(U),2),M=c(Q);Be(M,{get selected(){return t().confidential},set selected(se){t(t().confidential=se,!0)}}),v(Q),v(U),v(R);var W=l(R,2),J=l(c(W),2),Z=c(J);ss(Z,{get options(){return u}}),v(J),v(W);var re=l(W,2),ve=l(c(re),2),be=c(ve);Be(be,{get selected(){return t().force_mfa},set selected(se){t(t().force_mfa=se,!0)}}),v(ve),v(re);var $e=l(re,2);{var pe=se=>{var Ae=Lo();oe(Ae,"margin","-10px 0 -15px 5px");var ze=c(Ae),X=c(ze);oe(X,"color","var(--col-err)"),q(7),v(ze),v(Ae),r(se,Ae)},je=se=>{var Ae=me(),ze=ee(Ae);{var X=Ee=>{var Le=No();oe(Le,"margin","-10px 0 -15px 5px");var St=c(Le),ae=c(St);oe(ae,"color","var(--col-err)"),q(5),v(St),v(Le),ce(3,Le,()=>_e),r(Ee,Le)};P(ze,Ee=>{t().force_mfa&&Ee(X)},!0)}r(se,Ae)};P($e,se=>{t().id==="rauthy"?se(pe):se(je,!1)})}var fe=l($e,6);oe(fe,"margin-top","-10px");var de=l(c(fe),2);zt(de,{get options(){return e(I)},searchThreshold:4,get items(){return t().scopes},set items(se){t(t().scopes=se,!0)}}),v(fe);var ye=l(fe,2);oe(ye,"margin-top","-3px");var we=l(c(ye),2);zt(we,{get options(){return e(I)},searchThreshold:4,get items(){return t().default_scopes},set items(se){t(t().default_scopes=se,!0)}}),v(ye);var Pe=l(ye,4);Kt(Pe,{style:`width: ${d}`,validation:{required:!0,regex:Ds,errMsg:"Must be a valid origin"},autocomplete:"off",placeholder:"Allowed Origin",optional:!0,get values(){return t().allowed_origins},set values(se){t(t().allowed_origins=se,!0)},get validate(){return e($)},set validate(se){a($,n(se))},children:(se,Ae)=>{q();var ze=B("ALLOWED ORIGIN");r(se,ze)},$$slots:{default:!0}});var Ce=l(Pe,4);Kt(Ce,{style:`width: ${d}`,validation:{required:!0,regex:tt,errMsg:"Only URL safe values: a-zA-Z0-9,.:/_-&?=~#!$'()*+%"},autocomplete:"off",placeholder:"Redirect URI",optional:!0,get values(){return t().redirect_uris},set values(se){t(t().redirect_uris=se,!0)},get validate(){return e(m)},set validate(se){a(m,n(se))},children:(se,Ae)=>{q();var ze=B("REDIRECT URI");r(se,ze)},$$slots:{default:!0}});var xe=l(Ce,4);Kt(xe,{style:`width: ${d}`,validation:{required:!0,regex:tt,errMsg:"Only URL safe values: a-zA-Z0-9,.:/_-&?=~#!$'()*+%"},autocomplete:"off",placeholder:"Post Logout Redirect URI",optional:!0,get values(){return t().post_logout_redirect_uris},set values(se){t(t().post_logout_redirect_uris=se,!0)},get validate(){return e(T)},set validate(se){a(T,n(se))},children:(se,Ae)=>{q();var ze=B("POST LOGOUT REDIRECT URI");r(se,ze)},$$slots:{default:!0}});var Re=l(xe,6);ie(Re,{type:"number",min:60,max:86400,autocomplete:"off",placeholder:"Client Name",width:d,get value(){return t().access_token_lifetime},set value(se){t(t().access_token_lifetime=se,!0)},get error(){return e(k).access_token_lifetime},set error(se){e(k).access_token_lifetime=se},$$events:{input:x},children:(se,Ae)=>{q();var ze=B("ACCESS TOKEN LIFETIME");r(se,ze)},$$slots:{default:!0}});var H=l(Re,2),Ie=c(H);oe(Ie,"width","220px");var ge=l(c(Ie),2),Ue=c(ge);kt(Ue,{options:za,get value(){return t().access_token_alg},set value(se){t(t().access_token_alg=se,!0)}}),v(ge),v(Ie);var Je=l(Ie,2),rt=c(Je);oe(rt,"text-align","right");var vt=l(rt,2),qe=c(vt);kt(qe,{options:za,get value(){return t().id_token_alg},set value(se){t(t().id_token_alg=se,!0)}}),v(vt),v(Je),v(H);var Fe=l(H,6),lt=l(c(Fe),2),xt=c(lt);ss(xt,{get options(){return E}}),v(lt),v(Fe);var $t=l(Fe,2),Qe=c($t);{var et=se=>{var Ae=Ro();q(4),r(se,Ae)};P(Qe,se=>{t().id==="rauthy"&&se(et)})}v($t);var gt=l($t,2);Se(gt,{level:1,width:"4rem",$$events:{click:b},children:(se,Ae)=>{q();var ze=B("SAVE");r(se,ze)},$$slots:{default:!0}});var ct=l(gt,2);{var It=se=>{var Ae=Do();r(se,Ae)};P(ct,se=>{e(g)&&se(It)})}var at=l(ct,2);{var st=se=>{var Ae=jo(),ze=c(Ae,!0);v(Ae),K(()=>Y(ze,e(i))),r(se,Ae)};P(at,se=>{e(i)&&se(st)})}v(p),K(()=>Y(D,t().id)),r(_,p),ne()}var Oo=A('<div class="container svelte-3m83zw"><div class="err svelte-3m83zw"> </div> <div class="value font-mono"><!></div> <!></div>');function Mo(_,s){le(s,!0);let t=C(""),d=C("");Ne(()=>{i()});async function i(){let T=await $r(s.client.id),k=await T.json();T.ok?a(d,n(k.secret)):a(t,n(k.message))}async function g(){let T=await _r(s.client.id),k=await T.json();T.ok?await i():a(t,n(k.message))}var f=Oo(),u=c(f),I=c(u,!0);v(u);var E=l(u,2),o=c(E);{var $=T=>{Wt(T,{autocomplete:"off",disabled:!0,showCopy:!0,width:"inherit",maxWidth:"800px",get value(){return e(d)},set value(k){a(d,n(k))},children:(k,h)=>{q();var y=B("CLIENT SECRET");r(k,y)},$$slots:{default:!0}})};P(o,T=>{e(d)&&T($)})}v(E);var m=l(E,2);Se(m,{level:1,$$events:{click:g},children:(T,k)=>{q();var h=B("GENERATE NEW");r(T,h)},$$slots:{default:!0}}),v(f),K(()=>Y(I,e(t))),r(_,f),ne()}var Uo=A('<div class="label svelte-1jljqe9">Anti-Lockout Rule: The rauthy default client cannot be deleted.</div>'),qo=A('<div class="err svelte-1jljqe9"> </div>'),Go=A('<div class="label svelte-1jljqe9">Are you sure, you want to delete this client?</div> <!> <!>',1),Wo=A('<div class="container svelte-1jljqe9"><!></div>');function Ko(_,s){le(s,!0);let t=G(s,"client",19,()=>({})),d=C(!1),i=C("");async function g(){a(i,""),a(d,!0);let o=await mr(t().id);if(o.ok)s.onSave();else{let $=await o.json();a(i,n($.message))}a(d,!1)}var f=Wo(),u=c(f);{var I=o=>{var $=Uo();r(o,$)},E=o=>{var $=Go(),m=l(ee($),2);Se(m,{level:1,get isLoading(){return e(d)},set isLoading(h){a(d,n(h))},$$events:{click:g},children:(h,y)=>{q();var w=B("DELETE");r(h,w)},$$slots:{default:!0}});var T=l(m,2);{var k=h=>{var y=qo(),w=c(y,!0);v(y),K(()=>Y(w,e(i))),r(h,y)};P(T,h=>{e(i)&&h(k)})}r(o,$)};P(u,o=>{t().id==="rauthy"?o(I):o(E,!1)})}v(f),r(_,f),ne()}var Fo=(_,s)=>a(s,!0),Vo=A('<div class="load svelte-icxpvn"><!></div>'),Bo=A('<div class="txt svelte-icxpvn">LOAD</div>'),Jo=A('<div class="wrap svelte-icxpvn"><button class="btn font-label svelte-icxpvn"><!></button></div>');function ya(_,s){le(s,!0);let t=C(!1),d=C(!1),i=C(void 0),g=C(void 0),f=C(void 0),u=C(void 0),I=C(void 0),E=C("white");Ca(()=>{clearTimeout(e(I))});function o(){switch(s.level){case 1:a(i,n(s.colors.act1)),a(g,n(s.colors.act1a)),a(f,"white"),a(u,`1px solid ${s.colors.gmid}`);break;case 2:a(i,n(s.colors.act2)),a(g,n(s.colors.act2a)),a(f,n(s.colors.ghigh)),a(u,`1px solid ${s.colors.gmid}`);break;default:a(i,n(s.colors.ghigh)),a(g,"white"),a(f,n(s.colors.act2a)),a(u,`1px solid ${s.colors.act2a}`),a(E,n(s.colors.acnt))}}Te(()=>{e(d)&&a(I,n(setTimeout(()=>{a(d,!1)},2e3)))}),Te(()=>{s.colors&&o()});var $=Jo(),m=c($);m.__click=[Fo,d],oe(m,"width","100px");var T=c(m);{var k=y=>{var w=Vo(),b=c(w);ha(b,{background:!1,get color(){return e(E)}}),v(w),r(y,w)},h=y=>{var w=Bo();r(y,w)};P(T,y=>{e(d)?y(k):y(h,!1)})}v(m),v($),K(()=>{oe(m,"border",e(u)),oe(m,"box-shadow",`1px 1px 2px ${s.colors.gmid??""}`),oe(m,"cursor",e(d)?"default":"pointer"),oe(m,"color",e(f)),oe(m,"background",e(t)?e(g):e(i))}),Me("focus",m,()=>a(t,!0)),Me("blur",m,()=>a(t,!1)),Me("keypress",m,()=>a(d,!0)),r(_,$),ne()}ut(["click"]);var Yo=A('<div class="rel svelte-115vejc"><div role="none" class="btn show svelte-115vejc"><!></div></div>'),Ho=A('<div class="err font-label svelte-115vejc"> </div>'),Xo=A('<div class="container svelte-115vejc"><div class="label svelte-115vejc"><div class="labelInner font-label noselect svelte-115vejc"><label><!></label></div></div> <input> <!> <!></div>');function rs(_,s){le(s,!0);let t=G(s,"colors",19,()=>({})),d=G(s,"error",3,""),i=G(s,"name",3,""),g=G(s,"password",3,!1),f=G(s,"value",3,""),u=G(s,"width",3,"250px"),I=Jt(s,["$$slots","$$events","$$legacy","colors","error","name","password","value","width","children"]),E=C(n(g()?"new-password":"text")),o=C(!1),$=C(!1);function m(){e(E)==="password"?a(E,"text"):a(E,"password")}var T=Xo(),k=c(T),h=c(k),y=c(h),w=c(y);At(w,()=>s.children??Ct),v(y),v(h),v(k);var b=l(k,2);nt(b);var x=()=>a(o,!0),p=()=>a(o,!1),S=()=>a($,!0),L=()=>a($,!1);let D;var j=l(b,2);{var N=F=>{var z=Yo(),O=c(z);O.__click=m;var U=c(O);{var Q=W=>{Fa(W,{width:22,get color(){return t().err}})},M=W=>{Va(W,{width:22,get color(){return t().ok}})};P(U,W=>{e(E)==="password"?W(Q):W(M,!1)})}v(O),v(z),Me("keypress",O,m),r(F,z)};P(j,F=>{g()&&F(N)})}var V=l(j,2);{var R=F=>{var z=Ho(),O=c(z,!0);v(z),K(()=>{oe(z,"width",u()),oe(z,"color",t().err),Y(O,d())}),ce(7,z,()=>_e,()=>({duration:250})),r(F,z)};P(V,F=>{d()&&F(R)})}v(T),K(()=>{oe(T,"width",`calc(${u()??""} + 12px)`),oe(h,"background",t().bg),ue(y,"for",i()),D=pa(b,D,{type:e(E),onmouseenter:x,onmouseleave:p,onfocus:S,onblur:L,autocomplete:"off",name:i(),value:f(),...I},"svelte-115vejc"),oe(b,"width",u()),oe(b,"background",(e(o)||e($),t().bg)),oe(b,"border",e($)?`1px solid ${t().acnt}`:`1px solid ${t().glow}`),oe(b,"color",t().text),oe(b,"box-shadow",`1px 1px 2px ${t().gmid??""}`)}),r(_,T),ne()}ut(["click"]);var Zo=A('<img alt="No Logo Available">');function is(_,s){le(s,!0);var t=Zo();K(()=>ue(t,"src",`/auth/v1/clients/${s.clientId}/logo?${Mt(6)}`)),r(_,t),ne()}var Qo=A('<div class="preview font-label svelte-rscdc0"><b>PREVIEW</b></div> <div class="container svelte-rscdc0"><div class="head svelte-rscdc0"><div class="logo svelte-rscdc0"><!></div></div> <div class="name svelte-rscdc0"><h2>Client Name</h2></div> <!> <!> <div class="btn svelte-rscdc0"><!> <!> <!></div></div>',1);function ev(_,s){le(s,!0);let t="This is an E-Mail error",d="This is a password error";var i=Qo(),g=l(ee(i),2),f=c(g),u=c(f),I=c(u);{var E=y=>{is(y,{get clientId(){return s.clientId}})};P(I,y=>{s.isLoading||y(E)})}v(u),v(f);var o=l(f,4);rs(o,{type:"email",name:"rauthyEmail",placeholder:"E-Mail",get error(){return t},get colors(){return s.colors},children:(y,w)=>{q();var b=B("E-MAIL");r(y,b)},$$slots:{default:!0}});var $=l(o,2);rs($,{password:!0,name:"rauthyPassword",placeholder:"Password",get error(){return d},get colors(){return s.colors},children:(y,w)=>{q();var b=B("E-MAIL");r(y,b)},$$slots:{default:!0}});var m=l($,2),T=c(m);ya(T,{get colors(){return s.colors},level:1});var k=l(T,2);ya(k,{get colors(){return s.colors},level:2});var h=l(k,2);ya(h,{get colors(){return s.colors},level:3}),v(m),v(g),K(()=>{oe(g,"color",s.colors.text),oe(g,"border",`1px solid ${s.colors.gmid??""}`),oe(g,"background",s.colors.bg)}),r(_,i),ne()}var tv=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5"></path></svg>');function av(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=tv();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var sv=(_,s)=>e(s).click(),rv=(_,s)=>e(s).click(),iv=(_,s)=>s(_),lv=A('<div class="container svelte-jso5mh"><div role="button" tabindex="0" class="btn svelte-jso5mh"><!></div> <div role="button" tabindex="0" class="text noselect font-label svelte-jso5mh"> </div> <input class="imageInput svelte-jso5mh" type="file" accept=".jpg, .jpeg, .png, .svg"></div>');function ls(_,s){let t=G(s,"text",3,"UPLOAD LOGO"),d=G(s,"image",15),i=C(void 0);async function g(m){d(m.target.files[0])}var f=lv(),u=c(f);u.__click=[sv,i];var I=c(u);av(I,{width:22}),v(u);var E=l(u,2);E.__click=[rv,i];var o=c(E,!0);v(E);var $=l(E,2);$.__change=[iv,g],Qs($,m=>a(i,m),()=>e(i)),v(f),K(()=>Y(o,t())),Me("keypress",u,()=>e(i).click()),Me("keypress",E,()=>e(i).click()),r(_,f)}ut(["click","change"]);var nv=A('<div class="col1 colors svelte-11vvvzr"><div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div></div> <div class="col2 colors svelte-11vvvzr"><div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="row svelte-11vvvzr"><!> <div class="colInputWrap svelte-11vvvzr"><input type="color" class="colInput svelte-11vvvzr"> <div class="colorBlock svelte-11vvvzr"></div></div></div> <div class="logo svelte-11vvvzr"><!> <!></div></div>',1),ov=A('<div class="preview svelte-11vvvzr"><!></div>'),vv=A('<div class="success svelte-11vvvzr">Success</div>'),dv=A('<div class="err svelte-11vvvzr"> </div>'),cv=A(`<div class="container svelte-11vvvzr"><div class="label svelte-11vvvzr"><p>You can set client specific colors, which then will be used for the Login page.
+            These colors must be valid CSS values. Either enter them directly or use the color picker.</p></div> <div class="inner svelte-11vvvzr"><!> <!></div> <div class="btns svelte-11vvvzr"><!> <!> <!> <!></div></div>`);function uv(_,s){le(s,!0);let t=G(s,"client",19,()=>({})),d=C(void 0),i=C(void 0),g=C(!1),f=C(""),u=C(!1),I=C(void 0),E=C(n({})),o=C(n({}));const $=He().shape({act1:he().trim().matches(ft,"only valid CSS color"),act1a:he().trim().matches(ft,"only valid CSS color"),act2:he().trim().matches(ft,"only valid CSS color"),act2a:he().trim().matches(ft,"only valid CSS color"),acnt:he().trim().matches(ft,"only valid CSS color"),acnta:he().trim().matches(ft,"only valid CSS color"),ok:he().trim().matches(ft,"only valid CSS color"),err:he().trim().matches(ft,"only valid CSS color"),glow:he().trim().matches(ft,"only valid CSS color"),gmid:he().trim().matches(ft,"only valid CSS color"),ghigh:he().trim().matches(ft,"only valid CSS color"),text:he().trim().matches(ft,"only valid CSS color"),bg:he().trim().matches(ft,"only valid CSS color")});Ne(async()=>{await m()}),Ca(()=>{e(I)&&clearTimeout(e(I))});async function m(){let O=await gr(t().id);if(O.ok){let U=await O.json();a(d,n(U)),a(o,n(U))}else{let U=await O.json();a(f,n(U.message))}}async function T(){if(a(f,""),a(g,!0),!await y())return;let O=await fr(t().id,e(o));if(O.ok)a(u,!0);else{let U=await O.json();a(f,n(U.message))}a(g,!1)}async function k(){a(f,""),a(g,!0);let O=await yr(t().id);if(O.ok)await br(t().id),await m(),a(u,!0);else{let U=await O.json();a(f,n(U.message))}a(g,!1)}async function h(O){a(g,!0),await Bt();let U=await wr(t().id,O);if(!U.ok){let Q=await U.json();console.error(Q.message)}a(g,!1)}async function y(){try{await $.validate(e(o),{abortEarly:!1}),a(E,n({}))}catch(O){return a(E,n(Ye(O))),!1}return a(d,n(e(o))),!0}Te(()=>{e(u)&&a(I,n(setTimeout(()=>{a(u,!1)},3e3)))}),Te(()=>{e(i)&&h(e(i))});var w=cv(),b=l(c(w),2),x=c(b);{var p=O=>{var U=nv(),Q=ee(U),M=c(Q),W=c(M);ie(W,{autocomplete:"off",placeholder:"act1",get value(){return e(o).act1},set value(te){e(o).act1=te},get error(){return e(E).act1},set error(te){e(E).act1=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("act1");r(te,Ve)},$$slots:{default:!0}});var J=l(W,2),Z=c(J);nt(Z);var re=l(Z,2);v(J),v(M);var ve=l(M,2),be=c(ve);ie(be,{autocomplete:"off",placeholder:"act1a",get value(){return e(o).act1a},set value(te){e(o).act1a=te},get error(){return e(E).act1a},set error(te){e(E).act1a=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("act1a");r(te,Ve)},$$slots:{default:!0}});var $e=l(be,2),pe=c($e);nt(pe);var je=l(pe,2);v($e),v(ve);var fe=l(ve,2),de=c(fe);ie(de,{autocomplete:"off",placeholder:"act2",get value(){return e(o).act2},set value(te){e(o).act2=te},get error(){return e(E).act2},set error(te){e(E).act2=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("act2");r(te,Ve)},$$slots:{default:!0}});var ye=l(de,2),we=c(ye);nt(we);var Pe=l(we,2);v(ye),v(fe);var Ce=l(fe,2),xe=c(Ce);ie(xe,{autocomplete:"off",placeholder:"act2a",get value(){return e(o).act2a},set value(te){e(o).act2a=te},get error(){return e(E).act2a},set error(te){e(E).act2a=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("act2a");r(te,Ve)},$$slots:{default:!0}});var Re=l(xe,2),H=c(Re);nt(H);var Ie=l(H,2);v(Re),v(Ce);var ge=l(Ce,2),Ue=c(ge);ie(Ue,{autocomplete:"off",placeholder:"acnt",get value(){return e(o).acnt},set value(te){e(o).acnt=te},get error(){return e(E).acnt},set error(te){e(E).acnt=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("acnt");r(te,Ve)},$$slots:{default:!0}});var Je=l(Ue,2),rt=c(Je);nt(rt);var vt=l(rt,2);v(Je),v(ge);var qe=l(ge,2),Fe=c(qe);ie(Fe,{autocomplete:"off",placeholder:"acnta",get value(){return e(o).acnta},set value(te){e(o).acnta=te},get error(){return e(E).acnta},set error(te){e(E).acnta=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("acnta");r(te,Ve)},$$slots:{default:!0}});var lt=l(Fe,2),xt=c(lt);nt(xt);var $t=l(xt,2);v(lt),v(qe);var Qe=l(qe,2),et=c(Qe);ie(et,{autocomplete:"off",placeholder:"ok",get value(){return e(o).ok},set value(te){e(o).ok=te},get error(){return e(E).ok},set error(te){e(E).ok=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("ok");r(te,Ve)},$$slots:{default:!0}});var gt=l(et,2),ct=c(gt);nt(ct);var It=l(ct,2);v(gt),v(Qe);var at=l(Qe,2),st=c(at);ie(st,{autocomplete:"off",placeholder:"err",get value(){return e(o).err},set value(te){e(o).err=te},get error(){return e(E).err},set error(te){e(E).err=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("err");r(te,Ve)},$$slots:{default:!0}});var se=l(st,2),Ae=c(se);nt(Ae);var ze=l(Ae,2);v(se),v(at),v(Q);var X=l(Q,2),Ee=c(X),Le=c(Ee);ie(Le,{autocomplete:"off",placeholder:"glow",get value(){return e(o).glow},set value(te){e(o).glow=te},get error(){return e(E).glow},set error(te){e(E).glow=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("glow");r(te,Ve)},$$slots:{default:!0}});var St=l(Le,2),ae=c(St);nt(ae);var Ge=l(ae,2);v(St),v(Ee);var Oe=l(Ee,2),Ut=c(Oe);ie(Ut,{autocomplete:"off",placeholder:"gmid",get value(){return e(o).gmid},set value(te){e(o).gmid=te},get error(){return e(E).gmid},set error(te){e(E).gmid=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("gmid");r(te,Ve)},$$slots:{default:!0}});var Ht=l(Ut,2),Ft=c(Ht);nt(Ft);var Pt=l(Ft,2);v(Ht),v(Oe);var Vt=l(Oe,2),ba=c(Vt);ie(ba,{autocomplete:"off",placeholder:"ghigh",get value(){return e(o).ghigh},set value(te){e(o).ghigh=te},get error(){return e(E).ghigh},set error(te){e(E).ghigh=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("ghigh");r(te,Ve)},$$slots:{default:!0}});var $a=l(ba,2),aa=c($a);nt(aa);var hs=l(aa,2);v($a),v(Vt);var sa=l(Vt,2),_a=c(sa);ie(_a,{autocomplete:"off",placeholder:"text",get value(){return e(o).text},set value(te){e(o).text=te},get error(){return e(E).text},set error(te){e(E).text=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("text");r(te,Ve)},$$slots:{default:!0}});var ka=l(_a,2),ra=c(ka);nt(ra);var ps=l(ra,2);v(ka),v(sa);var ia=l(sa,2),xa=c(ia);ie(xa,{autocomplete:"off",placeholder:"bg",get value(){return e(o).bg},set value(te){e(o).bg=te},get error(){return e(E).bg},set error(te){e(E).bg=te},$$events:{input:y},children:(te,_t)=>{q();var Ve=B("bg");r(te,Ve)},$$slots:{default:!0}});var Ea=l(xa,2),la=c(Ea);nt(la);var ms=l(la,2);v(Ea),v(ia);var Ia=l(ia,2),Sa=c(Ia);ls(Sa,{get image(){return e(i)},set image(te){a(i,n(te))}});var gs=l(Sa,2);{var fs=te=>{is(te,{get clientId(){return t().id}})};P(gs,te=>{e(g)||te(fs)})}v(Ia),v(X),K(()=>{oe(re,"background",e(o).act1),oe(je,"background",e(o).act1a),oe(Pe,"background",e(o).act2),oe(Ie,"background",e(o).act2a),oe(vt,"background",e(o).acnt),oe($t,"background",e(o).acnta),oe(It,"background",e(o).ok),oe(ze,"background",e(o).err),oe(Ge,"background",e(o).glow),oe(Pt,"background",e(o).gmid),oe(hs,"background",e(o).ghigh),oe(ps,"background",e(o).text),oe(ms,"background",e(o).bg)}),dt(Z,()=>e(o).act1,te=>e(o).act1=te),dt(pe,()=>e(o).act1a,te=>e(o).act1a=te),dt(we,()=>e(o).act2,te=>e(o).act2=te),dt(H,()=>e(o).act2a,te=>e(o).act2a=te),dt(rt,()=>e(o).acnt,te=>e(o).acnt=te),dt(xt,()=>e(o).acnta,te=>e(o).acnta=te),dt(ct,()=>e(o).ok,te=>e(o).ok=te),dt(Ae,()=>e(o).err,te=>e(o).err=te),dt(ae,()=>e(o).glow,te=>e(o).glow=te),dt(Ft,()=>e(o).gmid,te=>e(o).gmid=te),dt(aa,()=>e(o).ghigh,te=>e(o).ghigh=te),dt(ra,()=>e(o).text,te=>e(o).text=te),dt(la,()=>e(o).bg,te=>e(o).bg=te),r(O,U)};P(x,O=>{e(o)&&O(p)})}var S=l(x,2);{var L=O=>{var U=ov(),Q=c(U);ev(Q,{get clientId(){return t().id},get isLoading(){return e(g)},get colors(){return e(d)},set colors(M){a(d,n(M))}}),v(U),r(O,U)};P(S,O=>{e(d)&&O(L)})}v(b);var D=l(b,2),j=c(D);Se(j,{level:1,get isLoading(){return e(g)},set isLoading(O){a(g,n(O))},$$events:{click:T},children:(O,U)=>{q();var Q=B("SAVE");r(O,Q)},$$slots:{default:!0}});var N=l(j,2);Se(N,{level:3,get isLoading(){return e(g)},set isLoading(O){a(g,n(O))},$$events:{click:k},children:(O,U)=>{q();var Q=B("RESET");r(O,Q)},$$slots:{default:!0}});var V=l(N,2);{var R=O=>{var U=vv();r(O,U)};P(V,O=>{e(u)&&O(R)})}var F=l(V,2);{var z=O=>{var U=dv(),Q=c(U,!0);v(U),K(()=>Y(Q,e(f))),r(O,U)};P(F,O=>{e(f)&&O(z)})}v(D),v(w),r(_,w),ne()}var hv=A('<div class="data font-mono svelte-115hohv"> </div>'),pv=A('<div class="data svelte-115hohv"> </div>'),mv=A('<div class="header svelte-115hohv"><!> <!></div>'),gv=A("<div><!></div>"),fv=A("<div><!></div>"),yv=A("<div><!></div>"),wv=A("<div><!></div>"),bv=A("<div><!> <!></div>");function $v(_,s){le(s,!0);let t=G(s,"client",31,()=>n({})),d=G(s,"onSave",15),i=C(void 0);const g=["Config","Secret","Branding","Delete"];let f=C(n(g[0]));const u=200,I=u/2;function E(){a(i,!1),d()()}ot(_,{get show(){return e(i)},set show(o){a(i,n(o))},header:o=>{var $=mv(),m=c($);Ze(m,{text:"Client ID",children:(h,y)=>{var w=hv(),b=c(w,!0);v(w),K(()=>Y(b,t().id)),r(h,w)},$$slots:{default:!0}});var T=l(m,2);{var k=h=>{Ze(h,{text:"Client Name",children:(y,w)=>{var b=pv(),x=c(b,!0);v(b),K(()=>Y(x,t().name)),r(y,b)},$$slots:{default:!0}})};P(T,h=>{t().name&&h(k)})}v($),r(o,$)},body:o=>{var $=bv(),m=c($);Dt(m,{labels:g,get selected(){return e(f)},set selected(y){a(f,n(y))}});var T=l(m,2);{var k=y=>{var w=gv(),b=c(w);zo(b,{get client(){return t()},set client(x){t(x)},get onSave(){return d()},set onSave(x){d(x)}}),v(w),ce(5,w,()=>_e,()=>({delay:I,duration:u})),ce(6,w,()=>_e,()=>({duration:u})),r(y,w)},h=y=>{var w=me(),b=ee(w);{var x=S=>{var L=fv(),D=c(L);Mo(D,{get client(){return t()}}),v(L),ce(5,L,()=>_e,()=>({delay:I,duration:u})),ce(6,L,()=>_e,()=>({duration:u})),r(S,L)},p=S=>{var L=me(),D=ee(L);{var j=V=>{var R=yv(),F=c(R);uv(F,{get client(){return t()}}),v(R),ce(5,R,()=>_e,()=>({delay:I,duration:u})),ce(6,R,()=>_e,()=>({duration:u})),r(V,R)},N=V=>{var R=me(),F=ee(R);{var z=O=>{var U=wv(),Q=c(U);Ko(Q,{get client(){return t()},onSave:E}),v(U),ce(5,U,()=>_e,()=>({delay:I,duration:u})),ce(6,U,()=>_e,()=>({duration:u})),r(O,U)};P(F,O=>{e(f)==="Delete"&&O(z)},!0)}r(V,R)};P(D,V=>{e(f)==="Branding"?V(j):V(N,!1)},!0)}r(S,L)};P(b,S=>{e(f)==="Secret"?S(x):S(p,!1)},!0)}r(y,w)};P(T,y=>{e(f)==="Config"?y(k):y(h,!1)})}v($),r(o,$)},$$slots:{header:!0,body:!0}}),ne()}var _v=A('<div class="header font-label svelte-gbj18i">ADD NEW CLIENT</div>'),kv=A('<div class="success svelte-gbj18i">Success</div>'),xv=A('<div class="mainErr err svelte-gbj18i"> </div>'),Ev=A('<div class="container svelte-gbj18i"><!> <!> <!> <!> <div class="unit svelte-gbj18i"><div class="label font-label svelte-gbj18i">CONFIDENTIAL</div> <div class="value svelte-gbj18i"><!></div></div> <!> <!> <!></div>');function Iv(_,s){le(s,!0);let t=G(s,"idx",31,()=>-1),d=C(void 0),i=n({id:"",name:"",confidential:!0,redirect_uris:[]}),g=C(""),f=C(!1),u=C(void 0),I=C(n({}));const E=He().shape({id:he().required("Client ID is required").trim().matches(js,"Can only contain characters, numbers and '-'"),name:he().trim().nullable().matches(Xt,"Can only contain characters, numbers and '-'")});let o=C(void 0),$=C(void 0);const m="330px";Te(()=>{e(f)&&a(u,n(setTimeout(()=>{s.onSave(),a(f,!1),a(d,!1)},1500)))}),Ne(()=>()=>clearTimeout(e(u)));async function T(){if(a(g,""),!await k()||!e(o)()||!e($)()){a(g,"Invalid input");return}let h=i;h.name||(h.name=void 0);let y=await hr(h);if(y.ok)a(f,!0);else{let w=await y.json();a(g,n(w.message))}}async function k(){try{return await E.validate(i,{abortEarly:!1}),a(I,n({})),!0}catch(h){return a(I,n(Ye(h))),!1}}ot(_,{get idx(){return t()},set idx(h){t(h)},get show(){return e(d)},set show(h){a(d,n(h))},header:h=>{var y=_v();r(h,y)},body:h=>{var y=Ev(),w=c(y);ie(w,{autocomplete:"off",placeholder:"Client ID",width:m,get value(){return i.id},set value(z){i.id=z},get error(){return e(I).id},set error(z){e(I).id=z},$$events:{input:k},children:(z,O)=>{q();var U=B("CLIENT ID");r(z,U)},$$slots:{default:!0}});var b=l(w,2);ie(b,{autocomplete:"off",placeholder:"Client Name",width:m,get value(){return i.name},set value(z){i.name=z},get error(){return e(I).name},set error(z){e(I).name=z},$$events:{input:k},children:(z,O)=>{q();var U=B("NAME");r(z,U)},$$slots:{default:!0}});var x=l(b,2);Kt(x,{style:`width: ${m}`,validation:{required:!0,regex:tt,errMsg:"Only URL safe values: a-zA-Z0-9,.:/_-&?=~#!$'()*+%"},autocomplete:"off",optional:!0,placeholder:"Redirect URI",get values(){return i.redirect_uris},set values(z){i.redirect_uris=z},get validate(){return e(o)},set validate(z){a(o,n(z))},children:(z,O)=>{q();var U=B("REDIRECT URI");r(z,U)},$$slots:{default:!0}});var p=l(x,2);Kt(p,{style:`width: ${m}`,validation:{required:!0,regex:tt,errMsg:"Only URL safe values: a-zA-Z0-9,.:/_-&?=~#!$'()*+%"},autocomplete:"off",optional:!0,placeholder:"Post Logout Redirect URI",get values(){return i.post_logout_redirect_uris},set values(z){i.post_logout_redirect_uris=z},get validate(){return e($)},set validate(z){a($,n(z))},children:(z,O)=>{q();var U=B("POST LOGOUT REDIRECT URI");r(z,U)},$$slots:{default:!0}});var S=l(p,2),L=l(c(S),2),D=c(L);Be(D,{get selected(){return i.confidential},set selected(z){i.confidential=z}}),v(L),v(S);var j=l(S,2);Se(j,{level:1,width:"4rem",$$events:{click:T},children:(z,O)=>{q();var U=B("SAVE");r(z,U)},$$slots:{default:!0}});var N=l(j,2);{var V=z=>{var O=kv();r(z,O)};P(N,z=>{e(f)&&z(V)})}var R=l(N,2);{var F=z=>{var O=xv(),U=c(O,!0);v(O),K(()=>Y(U,e(g))),r(z,O)};P(R,z=>{e(g)&&z(F)})}v(y),r(h,y)},$$slots:{header:!0,body:!0}}),ne()}var Sv=A('<div class="svelte-z13sh"><!></div>'),Cv=A(' <div class="content"><!> <!> <div id="clients" class="svelte-z13sh"></div> <!> <div style="height: 20px"></div></div>',1);function Av(_,s){le(s,!0);let t=C(""),d=C(n([])),i=C(n([])),g=C(n([])),f=C(""),u=[{label:"ID",callback:(x,p)=>x.id.toLowerCase().includes(p.toLowerCase())}],I=[{label:"ID",callback:(x,p)=>x.id.localeCompare(p.id)}];Ne(()=>{E(),o()});async function E(){let x=await ur();if(!x.ok)a(t,"Error fetching clients: "+x.body.message);else{let p=await x.json();a(d,n([...p]))}}async function o(){let x=await Za();if(!x.ok)a(t,"Error fetching scopes: "+x.body.message);else{let p=await x.json();mi.set(p),Qa.set(p.map(S=>S.name))}}function $(){E(),o(),a(f,"")}q();var m=Cv(),T=ee(m),k=l(T),h=c(k);Lt(h,{get items(){return e(d)},searchOptions:u,orderOptions:I,get resItems(){return e(i)},set resItems(x){a(i,n(x))},get search(){return e(f)},set search(x){a(f,n(x))}});var y=l(h,2);Iv(y,{onSave:$});var w=l(y,2);We(w,23,()=>e(g),x=>x.id,(x,p,S)=>{var L=Sv(),D=c(L);$v(D,{onSave:$,get client(){return e(g)[e(S)]},set client(j){e(g)[e(S)]=j}}),v(L),r(x,L)}),v(w);var b=l(w,2);jt(b,{get items(){return e(i)},set items(x){a(i,n(x))},get resItems(){return e(g)},set resItems(x){a(g,n(x))}}),q(2),v(k),K(()=>Y(T,`${e(t)??""} `)),r(_,m),ne()}var Tv=A('<div class="uid svelte-yz275t"> </div>'),Lv=A('<div class="ip svelte-yz275t"> </div>'),Nv=A('<div class="date svelte-yz275t"> </div>'),Rv=A('<div class="header svelte-yz275t"><!> <div class="header svelte-yz275t"><!> <!></div></div>'),Dv=A('<div class="details svelte-yz275t"><div class="flex svelte-yz275t"><div class="label svelte-yz275t">Session ID:</div> </div> <div class="flex svelte-yz275t"><div class="label svelte-yz275t">User ID:</div> </div> <div class="flex svelte-yz275t"><div class="label svelte-yz275t">Expires:</div> </div> <div class="flex svelte-yz275t"><div class="label svelte-yz275t">Last Seen:</div> </div> <div class="flex svelte-yz275t"><div class="label svelte-yz275t">State:</div> </div> <div class="flex svelte-yz275t"><div class="label svelte-yz275t">IP:</div> </div> <div class="flex svelte-yz275t"><div class="label svelte-yz275t">MFA:</div> <!></div></div>'),jv=A('<div class="container svelte-yz275t"><!></div>');function ns(_,s){le(s,!0);let t=G(s,"session",27,()=>n({})),d=G(s,"now",11,0);var i=jv(),g=c(i);ot(g,{header:f=>{var u=Rv(),I=c(u);Ze(I,{text:"User ID",children:(m,T)=>{var k=Tv(),h=c(k,!0);v(k),K(()=>Y(h,t().user_id)),r(m,k)},$$slots:{default:!0}});var E=l(I,2),o=c(E);Ze(o,{text:"Peer IP",children:(m,T)=>{var k=Lv(),h=c(k,!0);v(k),K(()=>Y(h,t().remote_ip)),r(m,k)},$$slots:{default:!0}});var $=l(o,2);Ze($,{text:"Last Seen",children:(m,T)=>{var k=Nv(),h=c(k,!0);K(()=>Y(h,ht(t().last_seen))),v(k),r(m,k)},$$slots:{default:!0}}),v(E),v(u),r(f,u)},body:f=>{var u=Dv(),I=c(u),E=l(c(I));v(I);var o=l(I,2),$=l(c(o));v(o);var m=l(o,2),T=l(c(m));K(()=>Y(T,` ${ht(t().exp)??""}`)),v(m);var k=l(m,2),h=l(c(k));K(()=>Y(h,` ${ht(t().last_seen)??""}`)),v(k);var y=l(k,2),w=l(c(y));v(y);var b=l(y,2),x=l(c(b));v(b);var p=l(b,2),S=l(c(p),2);ea(S,{get check(){return t().is_mfa}}),v(p),v(u),K(()=>{Y(E,` ${t().id??""}`),Y($,` ${t().user_id??""}`),Y(w,` ${t().state??""}`),Y(x,` ${t().remote_ip??""}`)}),r(f,u)},$$slots:{header:!0,body:!0}}),v(i),K(()=>Et(i,"expired",t().exp<d())),r(_,i),ne()}var Pv=A('<div class="svelte-80zd7k"><!></div>'),zv=A('<div class="svelte-80zd7k"><!></div>'),Ov=A('<div class="content"><div class="row svelte-80zd7k"><!> <div class="button svelte-80zd7k"><!></div></div> <div id="sessions" class="svelte-80zd7k"><!></div> <!></div>');function Mv(_,s){le(s,!0);let t=C(""),d=C(n([])),i=C(n([])),g=C(n([])),f=C(Date.now()/1e3),u=C(""),I=C(!1),E=C(15),o=C(""),$=C(1),m=[{label:"User ID",callback:(U,Q)=>{var M;return(M=U.user_id)==null?void 0:M.toLowerCase().includes(Q.toLowerCase())}},{label:"Session ID",callback:(U,Q)=>U.id.toLowerCase().includes(Q.toLowerCase())},{label:"IP",callback:(U,Q)=>{var M;return(M=U.remote_ip)==null?void 0:M.toLowerCase().includes(Q.toLowerCase())}}],T=[{label:"Expires",callback:(U,Q)=>U.exp-Q.exp},{label:"Last Seen",callback:(U,Q)=>U.last_seen-Q.last_seen},{label:"Session ID",callback:(U,Q)=>U.id.localeCompare(Q.id)},{label:"User ID",callback:(U,Q)=>{var M;return(M=U.user_id)==null?void 0:M.localeCompare(Q.user_id)}},{label:"State",callback:(U,Q)=>U.state.localeCompare(Q.state)},{label:"IP",callback:(U,Q)=>{var M;return(M=U.remote_ip)==null?void 0:M.localeCompare(Q.remote_ip)}}];Ne(()=>{k()});async function k(U,Q,M,W){let J;if(U===!0?M&&e($)===2?J=await Ja(W||e(E),Q,void 0,!1):J=await Ja(W||e(E),Q,e(o),M):J=await qr(),!J.ok)a(t,"Error fetching sessions: "+J.body.message);else{J.status===206?(a(E,n(Number.parseInt(J.headers.get("x-page-size"),10))),a(o,n(J.headers.get("x-continuation-token"))),a(u,"session")):a(u,"");let Z=await J.json();a(d,n([...Z])),a(i,n([...Z])),a(f,Date.now()/1e3)}}async function h(U,Q){await k(!0,U,Q),Q?a($,e($)-1):a($,e($)+1)}async function y(U){a(o,""),await k(!0,0,!1,U),a($,1)}async function w(){let U=await Gr();if(U.ok)Oa();else{let Q=await U.json();a(t,n(Q.message))}a(f,n(new Date))}var b=Ov(),x=c(b),p=c(x);Lt(p,{get items(){return e(d)},searchOptions:m,orderOptions:T,firstDirReverse:!0,get resItems(){return e(i)},set resItems(U){a(i,n(U))},get useServerSideIdx(){return e(u)},set useServerSideIdx(U){a(u,n(U))},get isSearchFiltered(){return e(I)},set isSearchFiltered(U){a(I,n(U))}});var S=l(p,2);oe(S,"margin-top","-10px");var L=c(S);Se(L,{level:3,$$events:{click:w},children:(U,Q)=>{q();var M=B("Invalidate All Sessions");r(U,M)},$$slots:{default:!0}}),v(S),v(x);var D=l(x),j=l(D),N=c(j);{var V=U=>{var Q=me(),M=ee(Q);We(M,19,()=>e(d),W=>W.id,(W,J,Z)=>{var re=Pv(),ve=c(re);ns(ve,{get session(){return e(d)[e(Z)]},set session(be){e(d)[e(Z)]=be},get now(){return e(f)},set now(be){a(f,n(be))}}),v(re),r(W,re)}),r(U,Q)},R=U=>{var Q=me(),M=ee(Q);We(M,19,()=>e(g),W=>W.id,(W,J,Z)=>{var re=zv(),ve=c(re);ns(ve,{get session(){return e(g)[e(Z)]},set session(be){e(g)[e(Z)]=be},get now(){return e(f)},set now(be){a(f,n(be))}}),v(re),r(W,re)}),r(U,Q)};P(N,U=>{e(u)&&!e(I)?U(V):U(R,!1)})}v(j);var F=l(j,2);{var z=U=>{as(U,{fetchPageCallback:h,sspPageSizeChange:y,get sspPage(){return e($)},set sspPage(Q){a($,n(Q))},get sspPageSize(){return e(E)},set sspPageSize(Q){a(E,n(Q))},get sspContinuationToken(){return e(o)},set sspContinuationToken(Q){a(o,n(Q))}})},O=U=>{jt(U,{get items(){return e(i)},set items(Q){a(i,n(Q))},get resItems(){return e(g)},set resItems(Q){a(g,n(Q))}})};P(F,U=>{e(u)&&!e(I)?U(z):U(O,!1)})}v(b),K(()=>Y(D,` ${e(t)??""} `)),r(_,b),ne()}var Uv=A('<div class="header font-label svelte-1mi5990">ADD NEW USER ATTRIBUTE</div>'),qv=A('<div class="mainErr err svelte-1mi5990"> </div>'),Gv=A('<div class="container svelte-1mi5990"><div class="desc svelte-1mi5990">You can add a new custom user attribute.<br> These attributes can be set for every user and mapped to an existing scope.<br> They are simple Key / JsonValue pairs.</div> <!> <!> <!> <!> <!></div>');function Wv(_,s){le(s,!0);let t=G(s,"idx",31,()=>-1),d=C(""),i=C(void 0),g=n({name:"",desc:""}),f=C(n({}));const u=He().shape({name:he().trim().required("Name is required").matches(Ma,"Invalid characters: [a-z0-9-_/]{2,32}"),desc:he().trim().matches(Ua,"Invalid characters: [a-zA-Z0-9\\-_/\\s]{0,128}")});async function I(){if(!await E())return;a(d,"");let o=await Br(g);if(o.ok)a(i,!1),s.onSave();else{let $=await o.json();a(d,n($.message))}}async function E(){try{return await u.validate(g,{abortEarly:!1}),a(f,n({})),!0}catch(o){return a(f,n(Ye(o))),!1}}ot(_,{get idx(){return t()},set idx(o){t(o)},get show(){return e(i)},set show(o){a(i,n(o))},header:o=>{var $=Uv();r(o,$)},body:o=>{var $=Gv(),m=l(c($),2);ie(m,{autocomplete:"off",placeholder:"Name",get value(){return g.name},set value(b){g.name=b},get error(){return e(f).name},set error(b){e(f).name=b},$$events:{input:E},children:(b,x)=>{q();var p=B("NAME");r(b,p)},$$slots:{default:!0}});var T=l(m,2);ie(T,{autocomplete:"off",placeholder:"Description",get value(){return g.desc},set value(b){g.desc=b},get error(){return e(f).desc},set error(b){e(f).desc=b},$$events:{input:E},children:(b,x)=>{q();var p=B("DESCRIPTION");r(b,p)},$$slots:{default:!0}});var k=l(T,2);Se(k,{level:1,$$events:{click:I},children:(b,x)=>{q();var p=B("SAVE");r(b,p)},$$slots:{default:!0}});var h=l(k,2);P(h,b=>{});var y=l(h,2);{var w=b=>{var x=qv(),p=c(x,!0);v(x),K(()=>Y(p,e(d))),r(b,x)};P(y,b=>{e(d)&&b(w)})}v($),r(o,$)},$$slots:{header:!0,body:!0}}),ne()}var Kv=A('<div class="success svelte-2o3w7i">Success</div>'),Fv=A('<div class="mainErr err svelte-2o3w7i"> </div>'),Vv=A('<div class="container svelte-2o3w7i"><!> <!> <!> <!> <!></div>');function Bv(_,s){le(s,!0);let t=G(s,"attr",19,()=>({})),d=C(""),i=C(!1),g=C(void 0);Te(()=>{e(i)&&a(g,n(setTimeout(()=>{a(i,!1),s.onSave()},2e3)))}),Ne(()=>()=>clearTimeout(e(g)));let f=C(n({})),u=n({});const I=He().shape({name:he().trim().required("Name is required").matches(Ma,"Valid characters: [a-z0-9-_/]{2,32}"),desc:he().nullable().trim().matches(Ua,"Valid characters: [a-zA-Z0-9\\-_/\\s]{0,128}")});Ne(()=>{u.name=t().name,u.desc=t().desc});async function E(){if(a(d,""),!await o()){a(d,"Invalid input");return}let x={name:u.name,desc:u.desc},p=await Jr(t().name,x);if(p.ok)a(i,!0);else{let S=await p.json();a(d,n(S.message))}}async function o(){try{return await I.validate(u,{abortEarly:!1}),a(f,n({})),!0}catch(x){return a(f,n(Ye(x))),!1}}var $=Vv(),m=c($);ie(m,{autocomplete:"off",placeholder:"Name",get value(){return u.name},set value(x){u.name=x},get error(){return e(f).name},set error(x){e(f).name=x},$$events:{input:o},children:(x,p)=>{q();var S=B("NAME");r(x,S)},$$slots:{default:!0}});var T=l(m,2);ie(T,{autocomplete:"off",placeholder:"Description",get value(){return u.desc},set value(x){u.desc=x},get error(){return e(f).desc},set error(x){e(f).desc=x},$$events:{input:o},children:(x,p)=>{q();var S=B("DESCRIPTION");r(x,S)},$$slots:{default:!0}});var k=l(T,2);Se(k,{level:1,width:"4rem",$$events:{click:E},children:(x,p)=>{q();var S=B("SAVE");r(x,S)},$$slots:{default:!0}});var h=l(k,2);{var y=x=>{var p=Kv();r(x,p)};P(h,x=>{e(i)&&x(y)})}var w=l(h,2);{var b=x=>{var p=Fv(),S=c(p,!0);v(p),K(()=>Y(S,e(d))),r(x,p)};P(w,x=>{e(d)&&x(b)})}v($),r(_,$),ne()}var Jv=A('<div class="err svelte-1jljqe9"> </div>'),Yv=A('<div class="container svelte-1jljqe9"><div class="label svelte-1jljqe9">Are you sure, you want to delete this custom attribute?</div> <!> <!></div>');function Hv(_,s){le(s,!0);let t=G(s,"attr",19,()=>({})),d=C(!1),i=C("");async function g(){a(i,""),a(d,!0);let o=await Yr(t().name);if(o.ok)s.onSave();else{let $=await o.json();a(i,n($.message))}a(d,!1)}var f=Yv(),u=l(c(f),2);Se(u,{level:1,get isLoading(){return e(d)},set isLoading(o){a(d,n(o))},$$events:{click:g},children:(o,$)=>{q();var m=B("DELETE");r(o,m)},$$slots:{default:!0}});var I=l(u,2);{var E=o=>{var $=Jv(),m=c($,!0);v($),K(()=>Y(m,e(i))),r(o,$)};P(I,o=>{e(i)&&o(E)})}v(f),r(_,f),ne()}var Xv=A('<div class="data svelte-115hohv"> </div>'),Zv=A('<div class="header svelte-115hohv"><!></div>'),Qv=A("<div><!></div>"),ed=A("<div><!></div>"),td=A("<div><!> <!></div>");function ad(_,s){le(s,!0);let t=G(s,"attr",27,()=>n({})),d=G(s,"onSave",15),i=C(void 0);const g=["Config","Delete"];let f=C(n(g[0]));const u=200,I=u/2;function E(){a(i,!1),d()()}ot(_,{get show(){return e(i)},set show(o){a(i,n(o))},header:o=>{var $=Zv(),m=c($);Ze(m,{text:"Custom Attribute Name",children:(T,k)=>{var h=Xv(),y=c(h,!0);v(h),K(()=>Y(y,t().name)),r(T,h)},$$slots:{default:!0}}),v($),r(o,$)},body:o=>{var $=td(),m=c($);Dt(m,{labels:g,get selected(){return e(f)},set selected(y){a(f,n(y))}});var T=l(m,2);{var k=y=>{var w=Qv(),b=c(w);Bv(b,{get attr(){return t()},get onSave(){return d()},set onSave(x){d(x)}}),v(w),ce(5,w,()=>_e,()=>({delay:I,duration:u})),ce(6,w,()=>_e,()=>({duration:u})),r(y,w)},h=y=>{var w=me(),b=ee(w);{var x=p=>{var S=ed(),L=c(S);Hv(L,{get attr(){return t()},onSave:E}),v(S),ce(5,S,()=>_e,()=>({delay:I,duration:u})),ce(6,S,()=>_e,()=>({duration:u})),r(p,S)};P(b,p=>{e(f)==="Delete"&&p(x)},!0)}r(y,w)};P(T,y=>{e(f)==="Config"?y(k):y(h,!1)})}v($),r(o,$)},$$slots:{header:!0,body:!0}}),ne()}var sd=A('<div class="svelte-1yl9ae5"><!></div>'),rd=A(' <div class="content"><!> <!> <div id="attrs" class="svelte-1yl9ae5"></div> <!> <div style="height: 20px"></div></div>',1);function id(_,s){le(s,!0);let t=C(""),d=C(n([])),i=C(n([])),g=C(n([])),f=C(""),u=[{label:"NAME",callback:(b,x)=>b.name.toLowerCase().includes(x.toLowerCase())}],I=[{label:"NAME",callback:(b,x)=>b.name.localeCompare(x.name)}];Ne(()=>{E()});async function E(){let b=await ma();if(!b.ok)a(t,"Error fetching user attr: "+b.body.message);else{let x=await b.json();a(d,n([...x.values]))}}function o(){e(d).length<2&&(a(d,n([])),a(i,n([])),a(g,n([]))),E(),a(f,"")}q();var $=rd(),m=ee($),T=l(m),k=c(T);Lt(k,{get items(){return e(d)},searchOptions:u,orderOptions:I,get resItems(){return e(i)},set resItems(b){a(i,n(b))},get search(){return e(f)},set search(b){a(f,n(b))}});var h=l(k,2);Wv(h,{onSave:o});var y=l(h,2);We(y,23,()=>e(g),b=>b.name,(b,x,p)=>{var S=sd(),L=c(S);ad(L,{onSave:o,get attr(){return e(g)[e(p)]},set attr(D){e(g)[e(p)]=D}}),v(S),r(b,S)}),v(y);var w=l(y,2);jt(w,{get items(){return e(i)},set items(b){a(i,n(b))},get resItems(){return e(g)},set resItems(b){a(g,n(b))}}),q(2),v(T),K(()=>Y(m,`${e(t)??""} `)),r(_,$),ne()}var ld=A('<div class="row svelte-151ox8b"><div class="columnWide svelte-151ox8b"> </div> <div class="column svelte-151ox8b"> </div> <div class="column svelte-151ox8b"> </div> <div class="column svelte-151ox8b"> </div></div>'),nd=A('<div class="container svelte-151ox8b"><div class="row svelte-151ox8b"><div class="columnWide svelte-151ox8b">Time Taken (ms)</div> <div class="column svelte-151ox8b">t_cost</div> <div class="column svelte-151ox8b">m_cost</div> <div class="column svelte-151ox8b">p_cost</div></div> <!> <div style="height: 20px"></div></div>');function od(_,s){let t=G(s,"res",19,()=>[]);var d=nd(),i=l(c(d),2);We(i,17,t,yt,(g,f)=>{var u=ld(),I=c(u),E=c(I,!0);v(I);var o=l(I,2),$=c(o,!0);v(o);var m=l(o,2),T=c(m,!0);v(m);var k=l(m,2),h=c(k,!0);v(k),v(u),K(()=>{Y(E,e(f).time_taken),Y($,e(f).t_cost),Y(T,e(f).m_cost),Y(h,e(f).p_cost)}),r(g,u)}),q(2),v(d),r(_,d)}var vd=A('<div class="result svelte-1digv30"><!></div>'),dd=A('<div class="wrapper svelte-1digv30"><div class="container svelte-1digv30"><!> <!> <!> <!></div> <!></div>');function cd(_,s){le(s,!0);const t="170px";let d=C(!1),i=C(!1),g=C(void 0),f=C(void 0),u=n({targetTime:1e3,mCost:32768,pCost:2}),I=C(n({}));const E=He().shape({targetTime:wt().required("Target Time is required").min(500,"Cannot be lower than 500").max(99999,"Cannot be higher than 99999"),mCost:wt().min(32768,"Cannot be lower than 32768").max(1048576,"Cannot be higher than 1048576"),pCost:wt().min(2,"Cannot be lower than 2").max(1024,"Cannot be higher than 1024")});Te(()=>{e(i)&&e(g)&&a(f,n(window.innerHeight))});function o(p){p.code==="Enter"&&$()}async function $(){try{await E.validate(u,{abortEarly:!1}),a(I,n({}))}catch(D){a(I,n(Ye(D)));return}a(d,!0),a(i,!1);const p={target_time:Number.parseInt(u.targetTime),m_cost:Number.parseInt(u.mCost),p_cost:Number.parseInt(u.pCost)},S=await Tr(p),L=await S.json();S.ok?(a(g,n(L.results)),a(i,!0)):L.message,a(d,!1)}var m=dd(),T=c(m),k=c(T);ie(k,{type:"number",autocomplete:"off",placeholder:"Target Time (ms)",width:t,get value(){return u.targetTime},set value(p){u.targetTime=p},get error(){return e(I).targetTime},set error(p){e(I).targetTime=p},$$events:{keypress:o},children:(p,S)=>{q();var L=B("TARGET TIME (ms)");r(p,L)},$$slots:{default:!0}});var h=l(k,2);ie(h,{type:"number",autocomplete:"off",placeholder:"m_cost (kB)",width:t,get value(){return u.mCost},set value(p){u.mCost=p},get error(){return e(I).mCost},set error(p){e(I).mCost=p},$$events:{keypress:o},children:(p,S)=>{q();var L=B("M_COST (kB)");r(p,L)},$$slots:{default:!0}});var y=l(h,2);ie(y,{type:"number",autocomplete:"off",placeholder:"p_cost",width:t,get value(){return u.pCost},set value(p){u.pCost=p},get error(){return e(I).pCost},set error(p){e(I).pCost=p},$$events:{keypress:o},children:(p,S)=>{q();var L=B("P_COST");r(p,L)},$$slots:{default:!0}});var w=l(y,2);Se(w,{get isLoading(){return e(d)},level:1,$$events:{click:$},children:(p,S)=>{q();var L=B("CALCULATE");r(p,L)},$$slots:{default:!0}}),v(T);var b=l(T,2);{var x=p=>{var S=vd(),L=c(S);od(L,{get res(){return e(g)}}),v(S),r(p,S)};P(b,p=>{e(i)&&p(x)})}v(m),Ks("y",()=>e(f),p=>a(f,n(p))),r(_,m),ne()}var ud=A(`<div class="container svelte-6927oe"><h3>Argon2ID - Password Hashing</h3> <p>This utility helps you find the best argon2id settings for your platform.<br> Argon2id is currently the safest available password hashing algorithm. To use it to its fullest potential, it
+        has
+        to be tuned for each deployment.</p> <p><b>Important:These values need to be tuned on the final architecture!</b><br> They change depending on the capabilities of the system. The more powerful the system, the more safe these
+        values
+        can be.</p> <p>If you want a detailed introduction to argon2id, many sources exist online. This guide will just give very short
+        overview about the values.<br> Three of them need to be configured:</p> <ul><li><b>m cost</b> <p>The <code class="svelte-6927oe">m_cost</code> defines the amount of <b>memory (in kB)</b>, which is used for the hashing.<br> The higher the value, the better, of course. But you need to keep in mind the servers resources.<br> When you hash 4 passwords at the same time, for instance, the backend needs <code class="svelte-6927oe">4 x m_cost</code> during the
+                hashing. These resources must be available.</p> <p>Tuning <code class="svelte-6927oe">m_cost</code> is pretty easy. If you can give rauthy 1GB of memory for hashing operations,
+                give it
+                1GB. If you can sacrifice 4GB, give it 4GB.</p> <p><b>Important: You should never go below an <code class="svelte-6927oe">m_cost</code> of <code class="svelte-6927oe">32768</code></b>.</p></li> <li><b>p cost</b> <p>The <code class="svelte-6927oe">p_cost</code> defines the amount of <b>parallelism</b> for hashing.<br> This value most often tops out at ~8, which is the default for Rauthy.<br> <code class="svelte-6927oe">p_cost</code> does not affect the time needed for the calculation, if the resources are available.</p> <p>The general rule is:<br> Set the <code class="svelte-6927oe">p_cost</code> to twice the size of cores your have available.<br> For instance, if you have 4 cores available, set the <code class="svelte-6927oe">p_cost</code> to <code class="svelte-6927oe">8</code>.<br></p></li> <li><b>t cost</b> <p>The <code class="svelte-6927oe">t_cost</code> defines the amount of <b>time</b> for hashing.<br> This value is actually the only one, that needs tuning, since <code class="svelte-6927oe">m_cost</code> and <code class="svelte-6927oe">p_cost</code> are
+                basically given by the environment.</p> <p>Tuning is easy: Set <code class="svelte-6927oe">m_cost</code> and <code class="svelte-6927oe">p_cost</code> accordingly and then increase <code class="svelte-6927oe">t_cost</code> as long as you have not reached your hashing-time-goal.</p></li></ul> <br> <h3>A word about Login Time</h3> <p>Generally, users want everything as fast as possible. When doing a safe login though, a time between 500 - 1000
+        ms
+        should not be a problem.<br> The login time must not be too short, since it would lower the strength of the hash, of course.</p> <p>To provide as much safety by default as possible, this utility does not allow you to go below 500 ms for the
+        login
+        time.</p> <br> <h3>Current values</h3> <p>The current values from the backend are the following:</p> <div><div class="valRow svelte-6927oe"><div class="label svelte-6927oe"><b>m_cost</b>:</div> </div> <div class="valRow svelte-6927oe"><div class="label svelte-6927oe"><b>p_cost</b>:</div> </div> <div class="valRow svelte-6927oe"><div class="label svelte-6927oe"><b>t_cost</b>:</div> </div> <br> <div class="valRow svelte-6927oe"><div class="label svelte-6927oe"><b>Login Time</b>:</div> </div> <p><i>Note:</i> The Login Time from the backend does only provide a good guideline after at least 5 successful
+            logins, after
+            rauthy has been started.<br> The base value is always 2000 ms after a fresh restart and will adjust over time with each successful login.</p> <b>Threads (p_cost) rauthy has access to</b> <br></div> <br> <h3>Parameter Calculation Utility</h3> <p>You can use this tool to approximate good values for your deployment.<br> Keep in mind, that this should be executed with rauthy in its final place with all final resources
+        available.<br><br> You should execute this utility during load to not over tune.<br><br> <code class="svelte-6927oe">m_cost</code> is optional and the safe minimal value of <code class="svelte-6927oe">32768</code> would be chosen, if empty.<br> <code class="svelte-6927oe">p_cost</code> is optional and rauthy will utilize all threads it can see, if empty.<br></p> <!> <div style="height: 20px"></div></div>`);function hd(_,s){le(s,!0);let t=C(void 0),d=C(void 0),i=C(void 0);Ne(()=>{g()});async function g(){let x=await Ar(),p=await x.json();x.ok?(a(t,n(p.argon2_params)),a(d,n(p.login_time)),a(i,n(p.num_cpus))):p.message}var f=ud(),u=l(c(f),8);oe(u,"margin-left","-10px");var I=l(u,16),E=c(I),o=l(c(E));v(E);var $=l(E,2),m=l(c($));v($);var T=l($,2),k=l(c(T));v(T);var h=l(T,4),y=l(c(h));v(h);var w=l(h,5);q(),v(I);var b=l(I,8);cd(b,{}),q(2),v(f),K(()=>{var x,p,S;Y(o,` ${((x=e(t))==null?void 0:x.m_cost)??""}`),Y(m,` ${((p=e(t))==null?void 0:p.p_cost)??""}`),Y(k,` ${((S=e(t))==null?void 0:S.t_cost)??""}`),Y(y,` ${e(d)??""} ms`),Y(w,`: ${e(i)??""}`)}),r(_,f),ne()}var pd=A('<li class="font-mono"> </li>'),md=A('<div class="err svelte-3rk97c"> </div>'),gd=A('<div class="success svelte-3rk97c">Success</div>'),fd=A(`<div class="wrapper svelte-3rk97c"><div class="desc svelte-3rk97c"><h3>Secrets Encryption Keys</h3> <p>These Keys are used for an additional encryption at rest, independently from any data store technology used
+            under
+            the hood. They are configured statically, but can be rotated and migrated on this page manually to maybe get
+            rid
+            of an old key, which is currently still in use in some places.</p> <p>The active key is statically set in the Rauthy config file / environment variables. It cannot be changed
+            here
+            dynamically.<br> <b>All new JWK encryption's will always use the currently active key.</b></p> <div class="valRow svelte-3rk97c"><div class="label svelte-3rk97c">Active Key:</div> <div class="value font-mono"> </div></div> <div class="keysBlock svelte-3rk97c"><div>Available Keys:</div> <ul></ul></div> <div class="migrateBlock svelte-3rk97c"><p>If you migrate all existing secrets, it might take a few seconds to finish, if you have a big
+                dataset.<br> Manually migrate all existing encryption in the backend to key:</p> <!></div></div> <div class="btn svelte-3rk97c"><!></div> <!> <!></div>`);function yd(_,s){le(s,!0);let t=C(""),d=C(!0),i=C(""),g=C(""),f=C(n([])),u=C(!1);Ne(async()=>{I()});async function I(){let N=await kr(),V=await N.json();N.ok?(a(i,n(V.active)),a(g,n(V.active)),a(f,n(V.keys))):a(t,n(V.message)),a(d,!1)}async function E(){a(d,!0),a(u,!1);let N={key_id:e(g)},V=await xr(N);if(V.ok)a(u,!0);else{let R=await V.json();a(t,n(R.message))}a(d,!1)}var o=fd(),$=c(o),m=l(c($),6),T=l(c(m),2),k=c(T,!0);v(T),v(m);var h=l(m,2),y=l(c(h),2);oe(y,"margin-left","-10px"),We(y,21,()=>e(f),yt,(N,V)=>{var R=pd(),F=c(R,!0);v(R),K(()=>Y(F,e(V))),r(N,R)}),v(y),v(h);var w=l(h,2),b=l(c(w),2);kt(b,{get options(){return e(f)},width:"186px",get value(){return e(g)},set value(N){a(g,n(N))}}),v(w),v($);var x=l($,2),p=c(x);Se(p,{get isLoading(){return e(d)},set isLoading(N){a(d,n(N))},$$events:{click:E},children:(N,V)=>{q();var R=B("MIGRATE");r(N,R)},$$slots:{default:!0}}),v(x);var S=l(x,2);{var L=N=>{var V=md(),R=c(V,!0);v(V),K(()=>Y(R,e(t))),r(N,V)};P(S,N=>{e(t)&&N(L)})}var D=l(S,2);{var j=N=>{var V=gd();r(N,V)};P(D,N=>{e(u)&&N(j)})}v(o),K(()=>Y(k,e(i))),r(_,o),ne()}var wd=A('<div class="success svelte-10h0sak">Success</div>'),bd=A('<div class="err svelte-10h0sak"> </div>'),$d=A('<div class="row svelte-10h0sak"><!> <!></div> <div class="row svelte-10h0sak"><!> <!></div> <div class="row svelte-10h0sak"><!> <!></div> <div class="desc svelte-10h0sak"><p>Validity for a new password.<br> Not Recently Used denied the last n used passwords.<br> Setting no value at all with disable the given option.</p></div> <div class="row svelte-10h0sak"><!> <!></div> <!> <!> <!>',1),_d=A('<div class="wrapper svelte-10h0sak"><div class="desc svelte-10h0sak"><h3>Password Policy</h3> <p>Configure the password policy.<br> The policy is being applied to all passwords being set from this moment on.</p></div> <!></div>');function kd(_,s){le(s,!0);const t="160px";let d=C(!1),i=C(""),g=C(!1),f=C(void 0),u=C(void 0),I=C(n({}));const E=He().shape({length_min:wt().required("Min Length is required").min(8,"Cannot be lower than 8").max(128,"Cannot be higher than 128"),length_max:wt().required("Max Length is required").min(8,"Cannot be lower than 8").max(128,"Cannot be higher than 128"),not_recently_used:wt().nullable().min(0,"Cannot be lower than 0").max(10,"Cannot be higher than 10"),valid_days:wt().nullable().min(0,"Cannot be lower than 0").max(3650,"Cannot be higher than 3650"),include_digits:wt().nullable().min(0,"Cannot be lower than 0").max(32,"Cannot be higher than 32"),include_lower_case:wt().nullable().min(0,"Cannot be lower than 0").max(32,"Cannot be higher than 32"),include_upper_case:wt().nullable().min(0,"Cannot be lower than 0").max(32,"Cannot be higher than 32"),include_special:wt().nullable().min(0,"Cannot be lower than 0").max(32,"Cannot be higher than 32")});Te(()=>{e(g)&&a(f,n(setTimeout(()=>{a(g,!1)},3e3)))}),Ne(async()=>{if(!e(u)){let y=await ja(),w=await y.json();y.ok?(a(u,n(w)),e(u).length_min=w.length_min||0,e(u).length_max=w.length_max||0,e(u).include_digits=w.include_digits||0,e(u).include_lower_case=w.include_lower_case||0,e(u).include_upper_case=w.include_upper_case||0,e(u).include_special=w.include_special||0,e(u).length_max=w.length_max||0,e(u).valid_days=w.valid_days||0,e(u).not_recently_used=w.not_recently_used||0):a(i,n(w.message))}});function o(y){y.code==="Enter"&&$()}async function $(){if(!await m())return;a(i,""),a(d,!0);let y=e(u);y.not_recently_used===0&&(y.not_recently_used=null),y.valid_days===0&&(y.valid_days=null),y.include_digits===0&&(y.include_digits=null),y.include_lower_case===0&&(y.include_lower_case=null),y.include_upper_case===0&&(y.include_upper_case=null),y.include_special===0&&(y.include_special=null);let w=await Lr(y);if(w.ok)a(g,!0);else{let b=await w.json();a(i,n(b.message))}a(d,!1)}async function m(){try{return a(I,n({})),await E.validate(e(u),{abortEarly:!1}),e(u).length_min=Number.parseInt(e(u).length_min),e(u).length_max=Number.parseInt(e(u).length_max),e(u).include_digits=Number.parseInt(e(u).include_digits),e(u).include_lower_case=Number.parseInt(e(u).include_lower_case),e(u).include_upper_case=Number.parseInt(e(u).include_upper_case),e(u).include_special=Number.parseInt(e(u).include_special),e(u).length_max=Number.parseInt(e(u).length_max),e(u).valid_days=Number.parseInt(e(u).valid_days),e(u).not_recently_used=Number.parseInt(e(u).not_recently_used),e(u).length_max<e(u).length_min?(e(I).length_max="Max Length cannot be lower than Min Length",!1):e(u).include_digits+e(u).include_lower_case+e(u).include_upper_case+e(u).include_special>e(u).length_max?(e(I).length_max="The sum of all includes does not fit into Max Length",!1):!0}catch(y){return a(I,n(Ye(y))),!1}}var T=_d(),k=l(c(T),2);{var h=y=>{var w=$d(),b=ee(w),x=c(b);ie(x,{type:"number",autocomplete:"off",width:t,get value(){return e(u).length_min},set value(J){e(u).length_min=J},get error(){return e(I).length_min},set error(J){e(I).length_min=J},$$events:{keypress:o,input:m},children:(J,Z)=>{q();var re=B("MIN LENGTH");r(J,re)},$$slots:{default:!0}});var p=l(x,2);ie(p,{type:"number",autocomplete:"off",width:t,get value(){return e(u).length_max},set value(J){e(u).length_max=J},get error(){return e(I).length_max},set error(J){e(I).length_max=J},$$events:{keypress:o,input:m},children:(J,Z)=>{q();var re=B("MAX LENGTH");r(J,re)},$$slots:{default:!0}}),v(b);var S=l(b,2),L=c(S);ie(L,{type:"number",autocomplete:"off",width:t,get value(){return e(u).include_lower_case},set value(J){e(u).include_lower_case=J},get error(){return e(I).include_lower_case},set error(J){e(I).include_lower_case=J},$$events:{keypress:o,input:m},children:(J,Z)=>{q();var re=B("INCLUDE LOWERCASE");r(J,re)},$$slots:{default:!0}});var D=l(L,2);ie(D,{type:"number",autocomplete:"off",width:t,get value(){return e(u).include_upper_case},set value(J){e(u).include_upper_case=J},get error(){return e(I).include_upper_case},set error(J){e(I).include_upper_case=J},$$events:{keypress:o,input:m},children:(J,Z)=>{q();var re=B("INCLUDE UPPERCASE");r(J,re)},$$slots:{default:!0}}),v(S);var j=l(S,2),N=c(j);ie(N,{type:"number",autocomplete:"off",width:t,get value(){return e(u).include_digits},set value(J){e(u).include_digits=J},get error(){return e(I).include_digits},set error(J){e(I).include_digits=J},$$events:{keypress:o,input:m},children:(J,Z)=>{q();var re=B("INCLUDE DIGITS");r(J,re)},$$slots:{default:!0}});var V=l(N,2);ie(V,{type:"number",autocomplete:"off",width:t,get value(){return e(u).include_special},set value(J){e(u).include_special=J},get error(){return e(I).include_special},set error(J){e(I).include_special=J},$$events:{keypress:o,input:m},children:(J,Z)=>{q();var re=B("INCLUDE SPECIAL");r(J,re)},$$slots:{default:!0}}),v(j);var R=l(j,4),F=c(R);ie(F,{type:"number",autocomplete:"off",width:t,get value(){return e(u).not_recently_used},set value(J){e(u).not_recently_used=J},get error(){return e(I).not_recently_used},set error(J){e(I).not_recently_used=J},$$events:{keypress:o,input:m},children:(J,Z)=>{q();var re=B("NOT RECENTLY USED");r(J,re)},$$slots:{default:!0}});var z=l(F,2);ie(z,{type:"number",autocomplete:"off",width:t,get value(){return e(u).valid_days},set value(J){e(u).valid_days=J},get error(){return e(I).valid_days},set error(J){e(I).valid_days=J},$$events:{keypress:o,input:m},children:(J,Z)=>{q();var re=B("VALID FOR DAYS");r(J,re)},$$slots:{default:!0}}),v(R);var O=l(R,2);Se(O,{level:1,width:"4rem",get isLoading(){return e(d)},set isLoading(J){a(d,n(J))},$$events:{click:$},children:(J,Z)=>{q();var re=B("SAVE");r(J,re)},$$slots:{default:!0}});var U=l(O,2);{var Q=J=>{var Z=wd();r(J,Z)};P(U,J=>{e(g)&&J(Q)})}var M=l(U,2);{var W=J=>{var Z=bd(),re=c(Z,!0);v(Z),K(()=>Y(re,e(i))),r(J,Z)};P(M,J=>{e(i)&&J(W)})}r(y,w)};P(k,y=>{e(u)&&y(h)})}v(T),r(_,T),ne()}var xd=A('<div class="details svelte-2yt27i"><div class="detailsInner svelte-2yt27i"><textarea class="font-mono text svelte-2yt27i"></textarea></div></div>'),Ed=A('<div role="none" class="cert svelte-2yt27i"><div class="data font-mono svelte-2yt27i"> </div> <div class="data right svelte-2yt27i"> </div> <!></div>');function Id(_,s){le(s,!0);let t=C(!1);function d(){if(s.jwk.kty==="OKP")return s.jwk.crv;if(s.jwk.kty==="RSA"){let $;const m=s.jwk.n.length;return m>600?$=4096:m>400?$=3072:$=2048,`RSA ${$}`}return"unknown type"}var i=Ed(),g=c(i),f=c(g,!0);v(g);var u=l(g,2),I=c(u,!0);K(()=>Y(I,d())),v(u);var E=l(u,2);{var o=$=>{var m=xd(),T=c(m),k=c(T);oa(k),ue(k,"rows",10),ue(k,"cols",40),K(()=>Gs(k,JSON.stringify(s.jwk,null,2))),v(T),v(m),K(()=>ue(k,"name",s.jwk.kid)),ce(7,m,()=>pt),r($,m)};P(E,$=>{e(t)&&$(o)})}v(i),K(()=>Y(f,s.jwk.kid)),Me("mouseenter",i,()=>a(t,!0)),Me("mouseleave",i,()=>a(t,!1)),r(_,i),ne()}var Sd=A('<div class="success svelte-a4xw46">Success</div>'),Cd=A('<div class="err svelte-a4xw46"> </div>'),Ad=A(`<div class="wrapper svelte-a4xw46"><div class="desc svelte-a4xw46"><h3>Json Web Keys</h3> <p>These are the Json Web Keys (JWKs) used for token singing.</p> <p>You can rotate them and generate a full new set. Depending on your deployment, this could take a few
+            seconds.<br> New tokens will always be signed with the new / latest ones. The old keys will be cleaned up automatically,
+            when
+            there cannot be a token anymore that used the old key to not
+            break any current token validation.</p></div> <!> <!> <!> <!></div>`);function Td(_,s){le(s,!0);let t=C(n([])),d=C(!1),i=C(""),g=C(!1),f=C(void 0);Te(()=>{e(g)&&a(f,n(setTimeout(()=>{a(g,!1)},3e3)))}),Ne(()=>{e(t).length===0&&u()});async function u(){let y=await cr(),w=await y.json();y.ok?a(t,n([...w.keys])):a(i,n(w.message))}async function I(){a(i,""),a(d,!0);let y=await Ur();if(y.ok)u(),a(g,!0);else{let w=await y.json();a(i,n(w.message))}a(d,!1)}var E=Ad(),o=l(c(E),2);We(o,19,()=>e(t),y=>y.kid,(y,w,b)=>{Id(y,{get jwk(){return e(t)[e(b)]},set jwk(x){e(t)[e(b)]=x}})});var $=l(o,2);Se($,{level:1,get isLoading(){return e(d)},set isLoading(y){a(d,n(y))},$$events:{click:I},children:(y,w)=>{q();var b=B("ROTATE KEYS");r(y,b)},$$slots:{default:!0}});var m=l($,2);{var T=y=>{var w=Sd();r(y,w)};P(m,y=>{e(g)&&y(T)})}var k=l(m,2);{var h=y=>{var w=Cd(),b=c(w,!0);v(w),K(()=>Y(b,e(i))),r(y,w)};P(k,y=>{e(i)&&y(h)})}v(E),r(_,E),ne()}var Ld=A('<div class="content"><div class="container svelte-5h65jg"><!> <!></div></div>');function Nd(_){const s=["Password Policy","JWKS","Argon2 Parameter","Encryption Keys"];let t=C(n(s[0]));var d=Ld(),i=c(d),g=c(i);Dt(g,{labels:s,get selected(){return e(t)},set selected(E){a(t,n(E))}});var f=l(g,2);{var u=E=>{kd(E,{})},I=E=>{var o=me(),$=ee(o);{var m=k=>{Td(k,{})},T=k=>{var h=me(),y=ee(h);{var w=x=>{hd(x,{})},b=x=>{var p=me(),S=ee(p);{var L=D=>{yd(D,{})};P(S,D=>{e(t)==="Encryption Keys"&&D(L)},!0)}r(x,p)};P(y,x=>{e(t)==="Argon2 Parameter"?x(w):x(b,!1)},!0)}r(k,h)};P($,k=>{e(t)==="JWKS"?k(m):k(T,!1)},!0)}r(E,o)};P(f,E=>{e(t)==="Password Policy"?E(u):E(I,!1)})}v(i),v(d),r(_,d)}var Rd=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M11.42 15.17L17.25 21A2.652 2.652 0 0021 17.25l-5.877-5.877M11.42 15.17l2.496-3.03c.317-.384.74-.626 1.208-.766M11.42 15.17l-4.655 5.653a2.548 2.548 0 11-3.586-3.586l6.837-5.63m5.108-.233c.55-.164 1.163-.188 1.743-.14a4.5 4.5 0 004.486-6.336l-3.276 3.277a3.004 3.004 0 01-2.25-2.25l3.276-3.276a4.5 4.5 0 00-6.336 4.486c.091 1.076-.071 2.264-.904 2.95l-.102.085m-1.745 1.437L5.909 7.5H4.5L2.25 3.75l1.5-1.5L7.5 4.5v1.409l4.26 4.26m-1.745 1.437l1.745-1.437m6.615 8.206L15.75 15.75M4.867 19.125h.008v.008h-.008v-.008z"></path></svg>');function Dd(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=Rd();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var jd=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"></path></svg>');function Pd(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=jd();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var zd=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 21h16.5M4.5 3h15M5.25 3v18m13.5-18v18M9 6.75h1.5m-1.5 3h1.5m-1.5 3h1.5m3-6H15m-1.5 3H15m-1.5 3H15M9 21v-3.375c0-.621.504-1.125 1.125-1.125h3.75c.621 0 1.125.504 1.125 1.125V21"></path></svg>');function Od(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=zd();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var Md=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z"></path></svg>');function Ud(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=Md();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var qd=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z"></path></svg>');function Gd(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=qd();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var Wd=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75m-3-7.036A11.959 11.959 0 013.598 6 11.99 11.99 0 003 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285z"></path></svg>');function os(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=Wd();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var Kd=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15M12 9l-3 3m0 0l3 3m-3-3h12.75"></path></svg>');function Fd(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=Kd();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var Vd=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15 9h3.75M15 12h3.75M15 15h3.75M4.5 19.5h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5zm6-10.125a1.875 1.875 0 11-3.75 0 1.875 1.875 0 013.75 0zm1.294 6.336a6.721 6.721 0 01-3.17.789 6.721 6.721 0 01-3.168-.789 3.376 3.376 0 016.338 0z"></path></svg>');function Bd(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=Vd();ue(i,"stroke-width",1.5),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var Jd=Xe(`<svg width="100%" height="100%" viewBox="0 0 512 138" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"><g transform="matrix(1,0,0,1,0,-11)"><g transform="matrix(1,0,0,1,0,-176)"><g transform="matrix(0.920325,0,0,1.84151,45.9279,26.459)"><rect x="27.741" y="151.57" width="200.517" height="10.148" style="fill:rgb(4,7,11);"></rect></g><g transform="matrix(1.93472,0,0,1.82732,8.35618,28.7533)"><rect x="33.307" y="97.15" width="94.693" height="54.42" style="fill:rgb(4,7,11);stroke:rgb(4,7,11);stroke-width:1.06px;"></rect></g><g transform="matrix(1.82732,0,0,1.82732,-160.822,70.1806)"><g transform="matrix(72,0,0,72,227.174,123.417)"></g><text x="128.982px" y="123.417px" style="font-family:'Calibri-Bold', 'Calibri', sans-serif;font-weight:700;font-size:72px;fill:white;">r<tspan x="152.994px 188.537px " y="123.417px 123.417px ">au</tspan></text></g><g transform="matrix(1,0,0,1.01617,-1.42109e-14,-5.24492)"><path d="M440.936,322.643L439.204,324.266L255.482,324.266L255.482,305.721L440.936,305.721L440.936,322.643Z" style="fill:url(#_Linear1);"></path></g><g transform="matrix(0.920191,0,0,1.84121,46.2464,-91.3383)"><rect x="27.741" y="151.57" width="200.517" height="10.148" style="fill:url(#_Linear2);"></rect></g><g transform="matrix(1.97598,0,0,1.84619,190.187,26.062)"><rect x="33.307" y="97.15" width="94.693" height="54.42" style="fill:rgb(43,65,107);"></rect></g><path d="M439.204,187.734L440.557,189.007L440.557,206.279L256,206.279L256,187.734L439.204,187.734Z" style="fill:rgb(43,65,107);"></path><g transform="matrix(1.82732,0,0,1.82732,-154.661,70.1806)"><g transform="matrix(72,0,0,72,323.045,123.417)"></g><text x="226.646px" y="123.417px" style="font-family:'Calibri-Bold', 'Calibri', sans-serif;font-weight:700;font-size:72px;fill:white;">th<tspan x="288.943px " y="123.417px ">y</tspan></text></g><g transform="matrix(2,0,0,2,0,0)"><path d="M219.602,93.867L256,128L219.602,162.133L219.602,93.867Z" style="fill:rgb(43,65,107);"></path></g><g transform="matrix(2,0,0,1.95739,0,3.99997)"><path d="M36.398,93.867L0,93.867L35.908,128.524L0,163.619L36.398,163.619" style="fill:rgb(4,7,11);"></path></g></g></g><defs><linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(185.454,0,0,18.5443,255.482,314.994)"><stop offset="0" style="stop-color:rgb(4,7,11);stop-opacity:1"></stop><stop offset="1" style="stop-color:rgb(43,65,107);stop-opacity:1"></stop></linearGradient><linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(200.517,0,0,10.1483,27.7414,156.645)"><stop offset="0" style="stop-color:rgb(4,7,11);stop-opacity:1"></stop><stop offset="1" style="stop-color:rgb(43,65,107);stop-opacity:1"></stop></linearGradient></defs></svg>`);function Yd(_){var s=Jd();r(_,s)}var Hd=A(`<div class="content"><div class="container svelte-x4sug2"><h2>Documentation</h2> <p class="svelte-x4sug2">For general documentation about Rauthy itself, you should take a look at the <a href="https://sebadob.github.io/rauthy/" target="_blank" class="svelte-x4sug2">Rauthy Book</a></p> <p class="svelte-x4sug2">If you want to integrate an external application and use Rauthy's REST API, take a look at the <a href="/docs/v1/swagger-ui/" target="_blank" class="svelte-x4sug2">Swagger UI</a><br> <b>Note:</b> Depending on the backend configuration, the Swagger UI may not be exposed publicly at this point.
+            It is however by default available via the internal <code>/metrics</code> HTTP server to not expose any information.</p> <p class="svelte-x4sug2">The source code can be found in <a href="https://github.com/sebadob/rauthy" target="_blank" class="svelte-x4sug2">Github</a></p></div></div>`);function Xd(_){var s=Hd();r(_,s)}var Zd=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25"></path></svg>');function Qd(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=Zd();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var ec=A('<div class="col-typ svelte-a54rx3"> </div> <div class="col-ip svelte-a54rx3"> </div> <div class="col-text svelte-a54rx3"> </div>',1),tc=A('<div class="col-typ svelte-a54rx3"> </div> <div class="col-ip svelte-a54rx3"> </div>',1),ac=A('<div class="col-typ svelte-a54rx3"> </div> <div class="col-ip svelte-a54rx3"> </div>',1),sc=A('<div class="col-typ svelte-a54rx3"> </div> <div class="col-ip svelte-a54rx3"> </div> <div class="col-text svelte-a54rx3"><!></div>',1),rc=A('<div class="col-typ svelte-a54rx3"> </div> <div class="col-ip svelte-a54rx3"> </div> <div class="col-text svelte-a54rx3"> </div>',1),ic=A('<div class="col-typ svelte-a54rx3"> </div> <div class="col-ip svelte-a54rx3"></div> <div class="col-text svelte-a54rx3"> </div>',1),lc=A('<div class="col-typ svelte-a54rx3"> </div>'),nc=A('<div class="row svelte-a54rx3"><div class="col-ts svelte-a54rx3"> </div> <!></div>'),oc=A(" <br>",1),vc=A("<br> <!> ",1),dc=A(" <br> ",1),cc=A("<br> <br> <!>",1),uc=A("<br> <br> ",1),hc=A("<br> ",1),pc=A(" <br> <!>",1),mc=A('<div role="contentinfo"><!></div>');function vs(_,s){le(s,!0);let t=G(s,"collapsed",3,!0),d=C("event"),i=C(!1),g=Ke(()=>!t()&&!s.wide),f=Ke(()=>t()&&!s.wide&&!e(i)),u=Ke(()=>!t()&&s.wide),I=Ke(()=>e(f)?".5rem":".33rem");Ne(()=>{new Date().getTime()-1e3*30<s.event.timestamp&&(setTimeout(()=>{a(d,"eventNew")},100),setTimeout(()=>{a(d,"event")},2500))});function E(){switch(s.event.level){case"test":return"T";case"info":return"I";case"notice":return"N";case"warning":return"W";case"critical":return"C";default:return"U"}}function o(){return ht(s.event.timestamp/1e3)}var $=mc();const m=Ke(()=>`${e(I)} solid ${Gt(s.event.level)}`);var T=c($);{var k=y=>{var w=nc(),b=c(w),x=c(b,!0);K(()=>Y(x,o())),v(b);var p=l(b,2);{var S=D=>{var j=ec(),N=ee(j),V=c(N,!0);v(N);var R=l(N,2),F=c(R,!0);v(R);var z=l(R,2),O=c(z,!0);v(z),K(()=>{Y(V,s.event.typ),Y(F,s.event.ip),Y(O,s.event.text)}),r(D,j)},L=D=>{var j=me(),N=ee(j);{var V=F=>{var z=tc(),O=ee(z),U=c(O,!0);v(O);var Q=l(O,2),M=c(Q,!0);v(Q),K(()=>{Y(U,`${s.event.typ}: ${s.event.data}`),Y(M,s.event.ip)}),r(F,z)},R=F=>{var z=me(),O=ee(z);{var U=M=>{var W=ac(),J=ee(W),Z=c(J,!0);v(J);var re=l(J,2),ve=c(re,!0);v(re),K(()=>{Y(Z,s.event.typ),Y(ve,s.event.ip||"")}),r(M,W)},Q=M=>{var W=me(),J=ee(W);{var Z=ve=>{var be=sc(),$e=ee(be),pe=c($e,!0);v($e);var je=l($e,2),fe=c(je,!0);v(je);var de=l(je,2),ye=c(de);Wa(ye,()=>s.event.text.replace("@","<wbr/>@")),v(de),K(()=>{Y(pe,s.event.typ),Y(fe,s.event.ip||"")}),r(ve,be)},re=ve=>{var be=me(),$e=ee(be);{var pe=fe=>{var de=rc(),ye=ee(de),we=c(ye,!0);v(ye);var Pe=l(ye,2),Ce=c(Pe,!0);v(Pe);var xe=l(Pe,2),Re=c(xe,!0);K(()=>Y(Re,`Expires: ${ht(s.event.data)}`)),v(xe),K(()=>{Y(we,s.event.typ),Y(Ce,s.event.ip)}),r(fe,de)},je=fe=>{var de=me(),ye=ee(de);{var we=Ce=>{var xe=ic(),Re=ee(xe),H=c(Re,!0);v(Re);var Ie=l(Re,4),ge=c(Ie,!0);v(Ie),K(()=>{Y(H,s.event.typ),Y(ge,s.event.text)}),r(Ce,xe)},Pe=Ce=>{var xe=lc(),Re=c(xe,!0);v(xe),K(()=>Y(Re,s.event.typ)),r(Ce,xe)};P(ye,Ce=>{s.event.typ==="RauthyStarted"||s.event.typ==="RauthyHealthy"||s.event.typ==="RauthyUnhealthy"?Ce(we):Ce(Pe,!1)},!0)}r(fe,de)};P($e,fe=>{s.event.typ==="IpBlacklisted"?fe(pe):fe(je,!1)},!0)}r(ve,be)};P(J,ve=>{s.event.typ==="NewRauthyAdmin"||s.event.typ==="NewUserRegistered"||s.event.typ==="UserPasswordReset"||s.event.typ==="UserEmailChange"?ve(Z):ve(re,!1)},!0)}r(M,W)};P(O,M=>{s.event.typ==="SecretsMigrated"?M(U):M(Q,!1)},!0)}r(F,z)};P(N,F=>{s.event.typ==="InvalidLogins"?F(V):F(R,!1)},!0)}r(D,j)};P(p,D=>{s.event.typ==="Test"?D(S):D(L,!1)})}v(w),r(y,w)},h=y=>{var w=me(),b=ee(w);{var x=S=>{var L=pc(),D=ee(L,!0);K(()=>Y(D,o()));var j=l(D,2),N=l(j);{var V=F=>{var z=vc(),O=l(ee(z),2);{var U=M=>{var W=oc(),J=ee(W);q(),K(()=>Y(J,`${s.event.text??""} `)),r(M,W)};P(O,M=>{s.event.text&&M(U)})}var Q=l(O);K(()=>Y(Q,` ${s.event.ip??""}`)),r(F,z)},R=F=>{var z=me(),O=ee(z);{var U=M=>{var W=dc(),J=ee(W,!0),Z=l(J,2);K(()=>{Y(J,`: ${s.event.data}`),Y(Z,` ${s.event.ip??""}`)}),r(M,W)},Q=M=>{var W=me(),J=ee(W);{var Z=ve=>{var be=B();K(()=>Y(be,s.event.ip)),r(ve,be)},re=ve=>{var be=me(),$e=ee(be);{var pe=fe=>{var de=cc(),ye=l(ee(de)),we=l(ye,3);Wa(we,()=>s.event.text.replace("@","<wbr/>@")),K(()=>Y(ye,` ${(s.event.ip||"")??""} `)),r(fe,de)},je=fe=>{var de=me(),ye=ee(de);{var we=Ce=>{var xe=uc(),Re=l(ee(xe)),H=l(Re,2);K(()=>Y(H,` ${ht(s.event.data)??""}`)),K(()=>Y(Re,` ${s.event.ip??""} `)),r(Ce,xe)},Pe=Ce=>{var xe=me(),Re=ee(xe);{var H=Ie=>{var ge=hc(),Ue=l(ee(ge));K(()=>Y(Ue,` ${s.event.text??""}`)),r(Ie,ge)};P(Re,Ie=>{(s.event.typ==="RauthyStarted"||s.event.typ==="RauthyHealthy"||s.event.typ==="RauthyUnhealthy")&&Ie(H)},!0)}r(Ce,xe)};P(ye,Ce=>{s.event.typ==="IpBlacklisted"?Ce(we):Ce(Pe,!1)},!0)}r(fe,de)};P($e,fe=>{s.event.typ==="NewRauthyAdmin"||s.event.typ==="NewUserRegistered"||s.event.typ==="UserPasswordReset"||s.event.typ==="UserEmailChange"?fe(pe):fe(je,!1)},!0)}r(ve,be)};P(J,ve=>{s.event.typ==="SecretsMigrated"?ve(Z):ve(re,!1)},!0)}r(M,W)};P(O,M=>{s.event.typ==="InvalidLogins"?M(U):M(Q,!1)},!0)}r(F,z)};P(N,F=>{s.event.typ==="Test"?F(V):F(R,!1)})}K(()=>Y(j,` ${s.event.typ??""} `)),r(S,L)},p=S=>{var L=B();K(()=>Y(L,E())),r(S,L)};P(b,S=>{e(g)?S(x):S(p,!1)},!0)}r(y,w)};P(T,y=>{e(u)?y(k):y(h,!1)})}v($),K(()=>{Nt($,Rt(e(d)),"svelte-a54rx3"),Et($,"showCollapsed",e(f)),oe($,"border-left",e(m))}),Me("mouseenter",$,()=>a(i,!0)),Me("mouseleave",$,()=>a(i,!1)),r(_,$),ne()}var gc=A("<div><div><b>Legend</b></div> <div><div>TEST</div> <div>INFO</div> <div>NOTICE</div> <div>WARNING</div> <div>CRITICAL</div></div></div>");function fc(_,s){le(s,!0);var t=gc(),d=c(t),i=l(d,2),g=c(i);const f=Ke(()=>`.33rem solid ${Gt("test")}`);var u=l(g,2);const I=Ke(()=>`.33rem solid ${Gt("info")}`);var E=l(u,2);const o=Ke(()=>`.33rem solid ${Gt("notice")}`);var $=l(E,2);const m=Ke(()=>`.33rem solid ${Gt("warning")}`);var T=l($,2);const k=Ke(()=>`.33rem solid ${Gt("critical")}`);v(i),v(t),K(()=>{Nt(d,Rt(s.wide?" legendEntryWide":"legendEntry"),"svelte-1imwz5t"),oe(d,"border-left",".33rem solid var(--col-bg)"),Nt(i,Rt(s.wide?"legendWide":"legend"),"svelte-1imwz5t"),Nt(g,Rt(s.wide?" legendEntryWide":"legendEntry"),"svelte-1imwz5t"),oe(g,"border-left",e(f)),Nt(u,Rt(s.wide?" legendEntryWide":"legendEntry"),"svelte-1imwz5t"),oe(u,"border-left",e(I)),Nt(E,Rt(s.wide?" legendEntryWide":"legendEntry"),"svelte-1imwz5t"),oe(E,"border-left",e(o)),Nt($,Rt(s.wide?" legendEntryWide":"legendEntry"),"svelte-1imwz5t"),oe($,"border-left",e(m)),Nt(T,Rt(s.wide?" legendEntryWide":"legendEntry"),"svelte-1imwz5t"),oe(T,"border-left",e(k))}),r(_,t),ne()}var yc=A('<div class="headerWideInner svelte-1ymfjrj"><b>Events</b> <!></div>'),wc=A("<b>Events</b>"),bc=A("<!> <!>",1),$c=A('<div class="opts svelte-1ymfjrj"><!></div>'),_c=A('<div role="contentinfo" id="events" class="svelte-1ymfjrj"><div class="upper"><div class="header svelte-1ymfjrj"><!></div> <!> <div></div></div> <!></div>');function kc(_,s){le(s,!0);let t=G(s,"collapsed",3,!0),d=G(s,"wide",15),i=50,g=C(void 0),f=C(n([])),u=C(n([])),I=C(void 0),E=C(!1);Ne(async()=>{a(I,n(await o()))});async function o(){return localStorage.getItem("eventLevel")||"Info"}async function $(R){localStorage.setItem("eventLevel",R)}async function m(){await Ps()}function T(){var R;console.log("opening SSE stream"),a(g,n(new EventSource(`/auth/v1/events/stream?latest=${i}&level=${((R=e(I))==null?void 0:R.toLowerCase())||"info"}`))),e(g).onopen=()=>{console.log("SSE Events Stream opened"),a(f,n([]))},e(g).onerror=()=>{console.error("SSE Events Stream closed")},e(g).onmessage=F=>{if(F.data){let z=JSON.parse(F.data);a(f,n([z,...e(f).slice(-499)]))}}}let k=Ke(()=>!t()&&!d()||e(E)),h=Ke(()=>t()&&!d()&&!e(E)),y=Ke(()=>!t()&&d());Te(()=>{if(e(f))switch(e(I)){case"Info":a(u,n(e(f)));break;case"Notice":a(u,n(e(f).filter(R=>R.typ==="Test"||R.level==="notice"||R.level==="warning"||R.level==="critical")));break;case"Warning":a(u,n(e(f).filter(R=>R.typ==="Test"||R.level==="warning"||R.level==="critical")));break;case"Critical":a(u,n(e(f).filter(R=>R.typ==="Test"||R.level==="critical")));break}}),Te(()=>{e(I)&&($(e(I)),e(g)&&e(g).readyState!==2&&e(g).close(),T())});var w=_c(),b=c(w),x=c(b),p=c(x);{var S=R=>{var F=bc(),z=ee(F);{var O=M=>{var W=yc(),J=l(c(W),2);kt(J,{options:ca,get value(){return e(I)},set value(Z){a(I,n(Z))}}),v(W),r(M,W)},U=M=>{var W=wc();r(M,W)};P(z,M=>{e(y)?M(O):M(U,!1)})}var Q=l(z,2);Se(Q,{level:3,$$events:{click:m},children:(M,W)=>{q();var J=B("TEST");r(M,J)},$$slots:{default:!0}}),r(R,F)};P(p,R=>{e(h)||R(S)})}v(x);var L=l(x,2);{var D=R=>{var F=$c(),z=c(F);kt(z,{options:ca,get value(){return e(I)},set value(O){a(I,n(O))}}),v(F),r(R,F)};P(L,R=>{e(y)||R(D)})}var j=l(L,2);We(j,23,()=>e(u),R=>R.id,(R,F,z)=>{var O=Ke(()=>t()&&!e(E));vs(R,{get collapsed(){return e(O)},get event(){return e(u)[e(z)]},set event(U){e(u)[e(z)]=U},get wide(){return d()},set wide(U){d(U)}})}),v(j),v(b);var N=l(b,2);{var V=R=>{fc(R,{get wide(){return d()},set wide(F){d(F)}})};P(N,R=>{(!t()||e(E))&&R(V)})}v(w),K(()=>{Et(w,"widthDefault",e(k)),Et(w,"widthCollapsed",e(h)),Et(w,"widthWide",e(y)),Nt(j,Rt(e(y)?"dataWide":e(h)?"dataCollapsed":"data"),"svelte-1ymfjrj")}),Me("mouseenter",w,()=>a(E,!0)),Me("mouseleave",w,()=>a(E,!1)),r(_,w),ne()}var xc=A('<div class="addNewInputs svelte-1a7hztb"><!> <!> <div class="saveBtn svelte-1a7hztb"><!></div> <div class="err svelte-1a7hztb"> </div></div>'),Ec=A('<div class="svelte-1a7hztb">No blacklisted IPs</div>'),Ic=(_,s,t)=>s(e(t).ip),Sc=A('<div role="button" tabindex="0" class="delete svelte-1a7hztb"><!></div>'),Cc=A('<div class="blacklisted svelte-1a7hztb"><div class="ip svelte-1a7hztb"> </div> <div class="exp svelte-1a7hztb"> </div> <!></div>'),Ac=A(' <div class="content"><div class="top svelte-1a7hztb"><!> <div class="addNew svelte-1a7hztb"><!></div></div> <!> <div id="blacklist" class="svelte-1a7hztb"><!></div> <!> <div style="height: 20px"></div></div>',1);function Tc(_,s){le(s,!0);let t=C(""),d=C(""),i=C(n([])),g=C(n([])),f=C(n([])),u=C(!1),I=n({ip:"",exp:""}),E=C(n({}));const o=He().shape({ip:he().required("IP is required").matches(zs,"Invalid IPv4")}),$=new Date().toISOString().split(".")[0],m=[{label:"IP",callback:(M,W)=>M.ip.includes(W)}];let T=[{label:"IP",callback:(M,W)=>M.ip.localeCompare(W.ip)}];Te(()=>{e(u)&&(a(d,""),I.exp=new Date().toISOString().split(".")[0])}),Ne(()=>{k()});async function k(){let M=await si(),W=await M.json();M.ok?a(i,n(W.ips)):a(t,n(W.message))}async function h(){if(a(d,""),!await w())return;let M=Ot(I.exp);if(!M){a(d,"Invalid Date Input: User Expires");return}let W={ip:I.ip,exp:M},J=await ri(W);if(J.ok)a(u,!1),I.ip="",await k();else{let Z=await J.json();a(d,n(Z.message))}}async function y(M){(await ii(M)).ok&&await k()}async function w(){try{return await o.validate(I,{abortEarly:!1}),a(E,n({})),!0}catch(M){return a(E,n(Ye(M))),!1}}q();var b=Ac(),x=ee(b),p=l(x),S=c(p),L=c(S);Lt(L,{get items(){return e(i)},searchOptions:m,orderOptions:T,get resItems(){return e(g)},set resItems(M){a(g,n(M))}});var D=l(L,2),j=c(D);Se(j,{level:3,$$events:{click:()=>a(u,!e(u))},children:(M,W)=>{q();var J=B("BLACKLIST IP");r(M,J)},$$slots:{default:!0}}),v(D),v(S);var N=l(S,2);{var V=M=>{var W=xc(),J=c(W);ie(J,{width:"9.5rem",autocomplete:"off",placeholder:"IP",get value(){return I.ip},set value(pe){I.ip=pe},get error(){return e(E).ip},set error(pe){e(E).ip=pe},children:(pe,je)=>{q();var fe=B("IP");r(pe,fe)},$$slots:{default:!0}});var Z=l(J,2);ie(Z,{type:"datetime-local",step:"60",width:"18rem",min:$,max:"2099-01-01T00:00",get value(){return I.exp},set value(pe){I.exp=pe},children:(pe,je)=>{q();var fe=B("EXPIRES");r(pe,fe)},$$slots:{default:!0}});var re=l(Z,2),ve=c(re);Se(ve,{level:1,$$events:{click:h},children:(pe,je)=>{q();var fe=B("SAVE");r(pe,fe)},$$slots:{default:!0}}),v(re);var be=l(re,2),$e=c(be,!0);v(be),v(W),K(()=>Y($e,e(d))),ce(3,W,()=>_e),r(M,W)};P(N,M=>{e(u)&&M(V)})}var R=l(N,2),F=c(R);{var z=M=>{var W=Ec();r(M,W)},O=M=>{var W=me(),J=ee(W);We(J,17,()=>e(f),Z=>Z.ip,(Z,re)=>{var ve=Cc(),be=c(ve),$e=c(be,!0);v(be);var pe=l(be,2),je=c(pe,!0);K(()=>Y(je,ht(e(re).exp))),v(pe);var fe=l(pe,2);Ze(fe,{text:"Delete IP",children:(de,ye)=>{var we=Sc();we.__click=[Ic,y,re];var Pe=c(we);Qt(Pe,{color:"var(--col-err)"}),v(we),Me("keypress",we,()=>y(e(re).ip)),r(de,we)},$$slots:{default:!0}}),v(ve),K(()=>Y($e,e(re).ip)),r(Z,ve)}),r(M,W)};P(F,M=>{e(i).length===0?M(z):M(O,!1)})}v(R);var U=l(R,2);{var Q=M=>{jt(M,{get items(){return e(g)},set items(W){a(g,n(W))},get resItems(){return e(f)},set resItems(W){a(f,n(W))}})};P(U,M=>{e(i).length>0&&M(Q)})}q(2),v(p),K(()=>Y(x,`${e(t)??""} `)),r(_,b),ne()}ut(["click"]);var Lc=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z"></path></svg>');function Nc(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=Lc();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var Rc=A('<div role="button" tabindex="0" class="cell pointer svelte-lgl56a"> </div>'),Dc=A('<div class="cell svelte-lgl56a"><input class="pointer svelte-lgl56a" type="checkbox"></div>'),jc=A('<div class="mr svelte-lgl56a"><div role="button" tabindex="0" class="label pointer svelte-lgl56a"> </div> <!></div>'),Pc=A('<div class="matrix svelte-lgl56a"><b>Access Rights</b> <div class="mr svelte-lgl56a"><div class="label svelte-lgl56a"></div> <!></div> <!></div>');function ds(_,s){le(s,!0);let t=G(s,"accessMatrix",15);G(s,"finalize",15)(E);const d=["Blacklist","Clients","Events","Generic","Groups","Roles","Secrets","Sessions","Scopes","UserAttributes","Users"],i=["create","read","update","delete"];let g=new Array(d.length).fill(!1),f=new Array(i.length).fill(!1);Ne(()=>{var w;u(),(w=s.apiKey)!=null&&w.access&&I()});function u(){let w=new Array(d.length);for(let b=0;b<d.length;b++){w[b]={group:d[b]};for(let x of i)w[b][x]=!1}t(w)}function I(){for(let w of s.apiKey.access){let b=d.findIndex(x=>x===w.group);for(let x of w.access_rights){let p=i.findIndex(S=>S===x);t(t()[b][i[p]]=!0,!0)}}}function E(){let w=[];for(let b=0;b<d.length;b++){let x=[];for(let p of i)t()[b][p]&&x.push(p);x.length>0&&w.push({group:d[b],access_rights:x})}return w}function o(w){g[w]=!g[w];const b=g[w];let x=t()[w];for(let p=0;p<i.length;p++)for(let S of Object.keys(x))S!=="group"&&(x[S]=b);t(t()[w]=x,!0)}function $(w){f[w]=!f[w];const b=f[w];for(let x=0;x<d.length;x++)t(t()[x][i[w]]=b,!0)}var m=Pc(),T=l(c(m),2),k=l(c(T),2);We(k,17,()=>i,yt,(w,b,x)=>{var p=Rc(),S=Ke(()=>$.bind(this,x));p.__click=function(...j){var N;(N=e(S))==null||N.apply(this,j)};var L=Ke(()=>$.bind(this,x)),D=c(p,!0);v(p),K(()=>Y(D,i[x])),Me("keypress",p,function(...j){var N;(N=e(L))==null||N.apply(this,j)}),r(w,p)}),v(T);var h=l(T,2);{var y=w=>{var b=me(),x=ee(b);We(x,17,()=>d,yt,(p,S,L)=>{var D=jc(),j=c(D),N=Ke(()=>o.bind(this,L));j.__click=function(...z){var O;(O=e(N))==null||O.apply(this,z)};var V=Ke(()=>o.bind(this,L)),R=c(j,!0);v(j);var F=l(j,2);We(F,17,()=>i,yt,(z,O)=>{var U=Dc(),Q=c(U);nt(Q),v(U),Fs(Q,()=>t()[L][e(O)],M=>t(t()[L][e(O)]=M,!0)),r(z,U)}),v(D),K(()=>Y(R,d[L])),Me("keypress",j,function(...z){var O;(O=e(V))==null||O.apply(this,z)}),r(p,D)}),r(w,b)};P(h,w=>{t()&&w(y)})}return v(m),r(_,m),ne({finalizeMatrix:E})}ut(["click"]);var zc=A("<div><!></div>"),Oc=A('<div class="container svelte-ubtepy"><!> <div class="switch svelte-ubtepy">Key Expires: <!></div> <!> <!> <div class="saveBtn svelte-ubtepy"><!></div> <div class="err svelte-ubtepy"> </div></div>');function Mc(_,s){le(s,!0);const t=new Date().toISOString().split(".")[0];let d=G(s,"apiKeys",19,()=>[]),i=G(s,"onSave",3,()=>{}),g=C(""),f=C(!1),u=C(void 0),I=C(void 0),E=n({name:"",exp:""}),o=C(n({}));const $=He().shape({name:he().required("Name is required").min(2).max(24).matches(Os,"Format: [a-zA-Z0-9_/-]{2,24}")});Te(()=>{e(f)&&(E.exp=new Date().toISOString().split(".")[0])});async function m(){if(a(g,""),!await T())return;let N={name:E.name,access:e(u)()};if(N.access.length===0){a(g,"Grant the new API Key at least one permission");return}if(e(f)){let R=Ot(E.exp);if(!R){a(g,"Invalid Date Input: User Expires");return}N.exp=R}let V=await Qr(N);if(V.ok)i()();else{let R=await V.json();a(g,n(R.message))}}async function T(){try{await $.validate(E,{abortEarly:!1}),a(o,n({}))}catch(N){return a(o,n(Ye(N))),!1}for(let N of d())if(N.name===E.name)return e(o).name="Name already exists",!1;return!0}var k=Oc(),h=c(k);ie(h,{width:"18rem",autocomplete:"off",placeholder:"Name",get value(){return E.name},set value(N){E.name=N},get error(){return e(o).name},set error(N){e(o).name=N},children:(N,V)=>{q();var R=B("NAME");r(N,R)},$$slots:{default:!0}});var y=l(h,2),w=l(c(y));Be(w,{get selected(){return e(f)},set selected(N){a(f,n(N))}}),v(y);var b=l(y,2);{var x=N=>{var V=zc(),R=c(V);ie(R,{type:"datetime-local",step:"60",width:"18rem",min:t,max:"2099-01-01T00:00",get value(){return E.exp},set value(F){E.exp=F},children:(F,z)=>{q();var O=B("EXPIRES");r(F,O)},$$slots:{default:!0}}),v(V),ce(3,V,()=>_e),r(N,V)};P(b,N=>{e(f)&&N(x)})}var p=l(b,2);ds(p,{get accessMatrix(){return e(I)},set accessMatrix(N){a(I,n(N))},get finalize(){return e(u)},set finalize(N){a(u,n(N))}});var S=l(p,2),L=c(S);Se(L,{level:1,$$events:{click:m},children:(N,V)=>{q();var R=B("SAVE");r(N,R)},$$slots:{default:!0}}),v(S);var D=l(S,2),j=c(D,!0);v(D),v(k),K(()=>Y(j,e(g))),r(_,k),ne()}var Uc=A("<div><!></div>"),qc=A('<div class="success svelte-1a3jnb3">Success</div>'),Gc=A('<div class="mainErr err svelte-1a3jnb3"> </div>'),Wc=A('<div class="container svelte-1a3jnb3"><div class="unit svelte-1a3jnb3"><div class="label svelte-1a3jnb3">Name</div> <div class="value svelte-1a3jnb3"> </div></div> <div class="switch svelte-1a3jnb3">Key Expires: <!></div> <!> <!> <!> <!> <!></div>');function Kc(_,s){le(s,!0);const t=new Date().toISOString().split(".")[0];let d=G(s,"apiKey",27,()=>n({})),i=C(""),g=C(!1),f=C(void 0),u=C(!!d().expires),I=C(void 0),E=C(void 0);Te(()=>{e(g)&&a(f,n(setTimeout(()=>{a(g,!1),s.onSave()},2e3)))}),Ne(()=>()=>clearTimeout(e(f)));let o=n({exp:""});Te(()=>{e(u)&&(o.exp=new Date().toISOString().split(".")[0])});async function $(){a(i,"");let V={name:d().name,access:e(E)()};if(V.access.length===0){a(i,"Grant the API Key at least one permission");return}if(e(u)){let F=Ot(o.exp);if(!F){a(i,"Invalid Date Input: User Expires");return}V.exp=F}let R=await ei(V);if(R.ok)s.onSave(),a(g,!0);else{let F=await R.json();a(i,n(F.message))}}var m=Wc(),T=c(m),k=l(c(T),2),h=c(k,!0);v(k),v(T);var y=l(T,2),w=l(c(y));Be(w,{get selected(){return e(u)},set selected(V){a(u,n(V))}}),v(y);var b=l(y,2);{var x=V=>{var R=Uc(),F=c(R);ie(F,{type:"datetime-local",step:"60",width:"18rem",min:t,max:"2099-01-01T00:00",get value(){return o.exp},set value(z){o.exp=z},children:(z,O)=>{q();var U=B("EXPIRES");r(z,U)},$$slots:{default:!0}}),v(R),ce(3,R,()=>_e),r(V,R)};P(b,V=>{e(u)&&V(x)})}var p=l(b,2);ds(p,{get apiKey(){return d()},get accessMatrix(){return e(I)},set accessMatrix(V){a(I,n(V))},get finalize(){return e(E)},set finalize(V){a(E,n(V))}});var S=l(p,2);Se(S,{level:1,width:"4rem",$$events:{click:$},children:(V,R)=>{q();var F=B("SAVE");r(V,F)},$$slots:{default:!0}});var L=l(S,2);{var D=V=>{var R=qc();r(V,R)};P(L,V=>{e(g)&&V(D)})}var j=l(L,2);{var N=V=>{var R=Gc(),F=c(R,!0);v(R),K(()=>Y(F,e(i))),r(V,R)};P(j,V=>{e(i)&&V(N)})}v(m),K(()=>Y(h,d().name)),r(_,m),ne()}var Fc=A('<div class="err svelte-1jljqe9"> </div>'),Vc=A('<div class="container svelte-1jljqe9"><div class="label svelte-1jljqe9">Are you sure, you want to delete this ApiKey?</div> <!> <!></div>');function Bc(_,s){le(s,!0);let t=G(s,"apiKey",19,()=>({})),d=C("");async function i(){a(d,"");let E=await ti(t().name);if(E.ok)s.onSave();else{let o=await E.json();a(d,n(o.message))}}var g=Vc(),f=l(c(g),2);Se(f,{level:1,$$events:{click:i},children:(E,o)=>{q();var $=B("DELETE");r(E,$)},$$slots:{default:!0}});var u=l(f,2);{var I=E=>{var o=Fc(),$=c(o,!0);v(o),K(()=>Y($,e(d))),r(E,o)};P(u,E=>{e(d)&&E(I)})}v(g),r(_,g),ne()}var Jc=A('<div><div class="iconsOuter svelte-s24qr4"><div class="iconsInner svelte-s24qr4"><div role="button" tabindex="0" class="show svelte-s24qr4"><!></div> <div role="button" tabindex="0"><!></div></div></div> <textarea></textarea></div>');function cs(_,s){le(s,!0);let t=G(s,"value",3,""),d=G(s,"rows",3,10),i=G(s,"cols",3,60),g=G(s,"name",3,"default"),f=G(s,"show",15,!1),u=G(s,"width",3,"40rem"),I=Jt(s,["$$slots","$$events","$$legacy","value","rows","cols","name","show","width"]),E=C(""),o=C("");Te(()=>{f()?a(o,t()):a(o,n(e(E)))}),Ne(()=>{for(let j=0;j<t().length;j++)a(E,e(E)+"*");a(o,n(e(E)))});function $(){navigator.clipboard.writeText(t())}function m(){f(!f())}var T=Jc(),k=c(T),h=c(k),y=c(h);y.__click=m;var w=c(y);{var b=j=>{Va(j,{width:22})},x=j=>{Fa(j,{width:22})};P(w,j=>{f()?j(b):j(x,!1)})}v(y);var p=l(y,2);p.__click=$;var S=c(p);Xs(S,{}),v(p),v(h),v(k);var L=l(k,2);oa(L);let D;v(T),K(()=>{oe(T,"width",`${u()}`),D=pa(L,D,{disabled:!0,name:g(),rows:d(),cols:i(),...I},"svelte-s24qr4"),oe(L,"width",`${u()}`),oe(L,"padding-right","2.75rem")}),Me("keypress",y,m),Me("keypress",p,$),dt(L,()=>e(o),j=>a(o,j)),r(_,T),ne()}ut(["click"]);var Yc=A(`<div class="secret font-mono svelte-1vixcxf"><!></div> <p class="svelte-1vixcxf">An API Key must be provided in the HTTP <span class="headerCodeSmall svelte-1vixcxf"><code>Authorization</code></span> header in the following format:</p> <p class="svelte-1vixcxf"><span class="headerCode svelte-1vixcxf"><b><code>API-Key YourSecretApiKeyHere</code></b></span></p> <p class="svelte-1vixcxf">You can use the following <code>curl</code> request to test your new Key:</p> <!> <p class="svelte-1vixcxf">If you don't have <code>jq</code> installed and the above fails:</p> <!>`,1),Hc=A(`<div class="container svelte-1vixcxf"><p class="svelte-1vixcxf">You Can generate a new secret for this API Key here.</p> <p class="svelte-1vixcxf">You will only see this secret once after the generation.
+        When a new one has been generated, the old secret will be overridden permanently.
+        This operation cannot be reverted!</p> <!> <!> <div class="err svelte-1vixcxf"> </div></div>`);function Xc(_,s){le(s,!0);let t=C(""),d=C(""),i=C(""),g=C("");async function f(){let k=await ai(s.apiKey.name);if(k.ok)a(d,n(await k.text())),a(i,`curl -s -H 'Authorization: API-Key ${e(d)}' ${window.location.origin}/auth/v1/api_keys/${s.apiKey.name}/test`),a(g,`${e(i)} | jq`);else{let h=await k.json();a(t,n(h.message))}}var u=Hc(),I=l(c(u),4),E=Ke(()=>e(d)?3:1);Se(I,{get level(){return e(E)},width:"130px",$$events:{click:f},children:(k,h)=>{q();var y=B("GENERATE NEW");r(k,y)},$$slots:{default:!0}});var o=l(I,2);{var $=k=>{var h=Yc(),y=ee(h),w=c(y);Wt(w,{autocomplete:"off",disabled:!0,showCopy:!0,width:"inherit",maxWidth:"800px",get value(){return e(d)},set value(p){a(d,n(p))},children:(p,S)=>{q();var L=B("API KEY");r(p,L)},$$slots:{default:!0}}),v(y);var b=l(y,8);cs(b,{name:"id",rows:3,get value(){return e(g)}});var x=l(b,4);cs(x,{name:"id",rows:3,get value(){return e(i)}}),ce(3,y,()=>_e),r(k,h)};P(o,k=>{e(d)&&k($)})}var m=l(o,2),T=c(m,!0);v(m),v(u),K(()=>Y(T,e(t))),r(_,u),ne()}var Zc=A('<div class="data svelte-115hohv"> </div>'),Qc=A('<div class="header svelte-115hohv"><div class="data svelte-115hohv"> </div> <!></div>'),eu=A("<div><!></div>"),tu=A("<div><!></div>"),au=A("<div><!></div>"),su=A("<div><!> <!></div>");function ru(_,s){le(s,!0);let t=G(s,"apiKey",31,()=>n({})),d=G(s,"onSave",11,()=>{}),i=C(void 0);const g=["Config","Secret","Delete"];let f=C(n(g[0]));const u=200,I=u/2;function E(){a(i,!1),d()()}ot(_,{get show(){return e(i)},set show(o){a(i,n(o))},header:o=>{var $=Qc(),m=c($),T=c(m,!0);v(m);var k=l(m,2);{var h=y=>{Ze(y,{text:"Expiry",children:(w,b)=>{var x=Zc(),p=c(x,!0);K(()=>Y(p,ht(t().expires))),v(x),r(w,x)},$$slots:{default:!0}})};P(k,y=>{t().expires&&y(h)})}v($),K(()=>Y(T,t().name)),r(o,$)},body:o=>{var $=su(),m=c($);Dt(m,{labels:g,get selected(){return e(f)},set selected(y){a(f,n(y))}});var T=l(m,2);{var k=y=>{var w=eu(),b=c(w);Kc(b,{get onSave(){return d()},get apiKey(){return t()},set apiKey(x){t(x)}}),v(w),ce(1,w,()=>_e,()=>({delay:I,duration:u})),ce(2,w,()=>_e,()=>({duration:u})),r(y,w)},h=y=>{var w=me(),b=ee(w);{var x=S=>{var L=tu(),D=c(L);Xc(D,{get apiKey(){return t()}}),v(L),ce(1,L,()=>_e,()=>({delay:I,duration:u})),ce(2,L,()=>_e,()=>({duration:u})),r(S,L)},p=S=>{var L=me(),D=ee(L);{var j=N=>{var V=au(),R=c(V);Bc(R,{get apiKey(){return t()},onSave:E}),v(V),ce(1,V,()=>_e,()=>({delay:I,duration:u})),ce(2,V,()=>_e,()=>({duration:u})),r(N,V)};P(D,N=>{e(f)==="Delete"&&N(j)},!0)}r(S,L)};P(b,S=>{e(f)==="Secret"?S(x):S(p,!1)},!0)}r(y,w)};P(T,y=>{e(f)==="Config"?y(k):y(h,!1)})}v($),r(o,$)},$$slots:{header:!0,body:!0}}),ne()}var iu=A("<div><!></div>"),lu=A('<div class="svelte-1hg1l4q">No Api Keys</div>'),nu=A(' <div class="content"><div class="top svelte-1hg1l4q"><!> <div class="addNew svelte-1hg1l4q"><!></div></div> <!> <div id="keys" class="svelte-1hg1l4q"><!></div> <!> <div style="height: 20px"></div></div>',1);function ou(_,s){le(s,!0);let t=C(""),d=C(n([])),i=C(n([])),g=C(n([])),f=C(!1);const u=[{label:"Name",callback:(N,V)=>N.name.includes(V)}];let I=[{label:"Name",callback:(N,V)=>N.name.localeCompare(V.name)}];Ne(()=>{E()});async function E(){let N=await Zr(),V=await N.json();N.ok?(a(d,n(V.keys)),a(f,!1)):a(t,n(V.message))}q();var o=nu(),$=ee(o),m=l($),T=c(m),k=c(T);Lt(k,{get items(){return e(d)},searchOptions:u,orderOptions:I,get resItems(){return e(i)},set resItems(N){a(i,n(N))}});var h=l(k,2),y=c(h);Se(y,{level:3,$$events:{click:()=>a(f,!e(f))},children:(N,V)=>{q();var R=B("NEW KEY");r(N,R)},$$slots:{default:!0}}),v(h),v(T);var w=l(T,2);{var b=N=>{var V=iu(),R=c(V);Mc(R,{onSave:E,get apiKeys(){return e(d)}}),v(V),ce(3,V,()=>_e),r(N,V)};P(w,N=>{e(f)&&N(b)})}var x=l(w,2),p=c(x);{var S=N=>{var V=lu();r(N,V)},L=N=>{var V=me(),R=ee(V);We(R,19,()=>e(g),F=>F.name,(F,z,O)=>{ru(F,{onSave:E,get apiKey(){return e(g)[e(O)]},set apiKey(U){e(g)[e(O)]=U}})}),r(N,V)};P(p,N=>{e(d).length===0?N(S):N(L,!1)})}v(x);var D=l(x,2);{var j=N=>{jt(N,{get items(){return e(i)},set items(V){a(i,n(V))},get resItems(){return e(g)},set resItems(V){a(g,n(V))}})};P(D,N=>{e(d).length>0&&N(j)})}q(2),v(m),K(()=>Y($,`${e(t)??""} `)),r(_,o),ne()}var vu=A('<div class="row svelte-hjwmgw">No events found</div>'),du=A('<div class="content"><div class="row svelte-hjwmgw"><!></div> <div class="row filter svelte-hjwmgw"><!> <!></div> <div class="row filterOpts svelte-hjwmgw"><div><!></div> Filter <!> <!></div> <!></div>');function cu(_,s){le(s,!0);let t=C(n([])),d=C(n([])),i=C(n(Da(new Date(new Date().getTime()-3600*1e3)))),g=C(void 0),f=C("Info"),u=C(!1),I=C(n(qa[0])),E=[{label:"IP",callback:(R,F)=>{var z;return(z=R.ip)==null?void 0:z.includes(F)}},{label:"Content",callback:(R,F)=>{var z,O;return(O=(z=R.text)==null?void 0:z.toLowerCase())==null?void 0:O.includes(F.toLowerCase())}}],o=[{label:"Timestamp",callback:(R,F)=>R.timestamp-F.timestamp},{label:"Level",callback:(R,F)=>R.level.localeCompare(F.level)},{label:"Type",callback:(R,F)=>R.typ.localeCompare(F.typ)}];ws(()=>{$()});async function $(){let R={from:Ot(e(i)),level:e(f).toLowerCase()};e(g)&&(R.until=Ot(e(g))),e(u)&&(R.typ=e(I));let F=await Er(R),z=await F.json();F.ok?a(t,n(z)):z.message}var m=du(),T=c(m),k=c(T);Lt(k,{get items(){return e(t)},searchOptions:E,orderOptions:o,firstDirReverse:!0,get resItems(){return e(d)},set resItems(R){a(d,n(R))}}),v(T);var h=l(T,2),y=c(h);ie(y,{type:"datetime-local",step:"60",width:"17.5rem",max:"2099-01-01T00:00",get value(){return e(i)},set value(R){a(i,n(R))},children:(R,F)=>{q();var z=B("FROM");r(R,z)},$$slots:{default:!0}});var w=l(y,2);ie(w,{type:"datetime-local",step:"60",width:"17rem",max:"2099-01-01T00:00",get value(){return e(g)},set value(R){a(g,n(R))},children:(R,F)=>{q();var z=B("UNTIL");r(R,z)},$$slots:{default:!0}}),v(h);var b=l(h,2),x=c(b);oe(x,"margin","0 5.5rem 0 .25rem");var p=c(x);kt(p,{options:ca,get value(){return e(f)},set value(R){a(f,n(R))}}),v(x);var S=l(x,2);Be(S,{get selected(){return e(u)},set selected(R){a(u,n(R))}});var L=l(S,2);{var D=R=>{kt(R,{options:qa,get value(){return e(I)},set value(F){a(I,n(F))}})};P(L,R=>{e(u)&&R(D)})}v(b);var j=l(b,2);{var N=R=>{var F=vu();r(R,F)},V=R=>{var F=me(),z=ee(F);We(z,19,()=>e(d),O=>O.id,(O,U,Q)=>{vs(O,{collapsed:!1,wide:!0,get event(){return e(d)[e(Q)]},set event(M){e(d)[e(Q)]=M}})}),r(R,F)};P(j,R=>{e(d).length===0?R(N):R(V,!1)})}v(m),r(_,m),ne()}var uu=Xe('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M3.124 7.5A8.969 8.969 0 0 1 5.292 3m13.416 0a8.969 8.969 0 0 1 2.168 4.5"></path></svg>');function hu(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=uu();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var pu=Xe(`<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M2.25 15a4.5 4.5 0 0 0 4.5 4.5H18a3.75 3.75 0 0 0 1.332-7.257 3 3 0 0 0-3.758-3.848 5.25 5.25 0 0
+            0-10.233 2.33A4.502 4.502 0 0 0 2.25 15Z"></path></svg>`);function mu(_,s){let t=G(s,"opacity",3,.9),d=G(s,"width",3,24);var i=pu();ue(i,"stroke-width",2),K(()=>{ue(i,"width",d()),ue(i,"opacity",t())}),r(_,i)}var gu=A(`<div class="desc svelte-i817w5"><h4 class="svelte-i817w5">ID token claim mappings</h4> <p class="svelte-i817w5">Values from the ID token after a successful upstream login can be mapped automatically.</p> <p class="svelte-i817w5">The <code class="svelte-i817w5">path</code> needs to be given in a regex like syntax. It can resolve to
+        single JSON values or resolve to a value in a JSON object or array.</p> <p class="svelte-i817w5"><code class="svelte-i817w5">$.</code> marks the start of the JSON object</p> <p class="svelte-i817w5"><code class="svelte-i817w5">*</code> can be used as a wildcard in your path</p> <p class="svelte-i817w5"><code class="svelte-i817w5">$.roles</code> would target <code class="svelte-i817w5">&#123;"roles": "value"&#125;</code></p> <p class="svelte-i817w5"><code class="svelte-i817w5">$.roles.*</code> can target a value inside an object or array like<br> <code class="svelte-i817w5">&#123;"roles": ["value", "notMyValue"]&#125;</code></p></div>`);function us(_){var s=gu();r(_,s)}var fu=A('<div class="err font-label svelte-w61ts0"> </div>'),yu=A('<div class="container svelte-w61ts0"><div class="label svelte-w61ts0"><div class="labelInner font-label noselect svelte-w61ts0"><label><!></label></div></div> <textarea></textarea> <!></div>');function wa(_,s){le(s,!0);let t=G(s,"rows",3,10),d=G(s,"cols",3,10),i=G(s,"name",19,Mt),g=G(s,"disabled",3,!1),f=G(s,"error",3,""),u=G(s,"value",15),I=G(s,"width",3,"32rem"),E=G(s,"fixed",3,!0),o=Jt(s,["$$slots","$$events","$$legacy","rows","cols","name","disabled","error","value","width","fixed","children"]);const $=na();async function m(j){await Bt(),u(j.target.value),$("input",u())}function T(){$("focus",!0)}function k(){$("blur",!0)}var h=yu(),y=c(h),w=c(y),b=c(w),x=c(b);At(x,()=>s.children??Ct),v(b),v(w),v(y);var p=l(y,2);oa(p);let S;var L=l(p,2);{var D=j=>{var N=fu(),V=c(N,!0);v(N),K(()=>{oe(N,"width",I()),Y(V,f())}),ce(7,N,()=>_e,()=>({duration:250})),r(j,N)};P(L,j=>{f()&&j(D)})}v(h),K(()=>{oe(h,"width",`calc(${I()??""} + 12px)`),oe(w,"background",g()?"var(--col-gmid)":"var(--col-bg)"),ue(b,"for",i()),S=pa(p,S,{name:i(),disabled:g(),value:u(),rows:t(),cols:d(),...o,oninput:m,onfocus:T,onblur:k},"svelte-w61ts0"),oe(p,"resize",E()?"none":""),oe(p,"width",I())}),r(_,h),ne()}var wu=A('<div class="header font-label svelte-1m46su9">ADD NEW AUTHENTICATION PROVIDER</div>'),bu=A('<div class="header svelte-1m46su9">Allow insecure TLS certificates</div> <div class="ml mb svelte-1m46su9"><!></div>',1),$u=A('<div class="header svelte-1m46su9">Custom Root CA PEM</div> <div class="ml mb svelte-1m46su9"><!></div> <!>',1),_u=A("<!> <!>",1),ku=A("<!> <!>",1),xu=A('<div class="header svelte-1m46su9">Allow insecure TLS certificates</div> <div class="ml mb svelte-1m46su9"><!></div>',1),Eu=A(`<!> <!> <!> <!> <!> <div class="header svelte-1m46su9">Use PKCE</div> <div class="ml svelte-1m46su9"><!></div> <div class="desc svelte-1m46su9">The scope the client should use when redirecting to the login.<br> Provide the values separated by space.</div> <!> <div class="desc svelte-1m46su9">Client name for the Rauthy login form</div> <!> <div class="desc svelte-1m46su9">Client ID given by the auth provider</div> <!> <div class="desc svelte-1m46su9">Client Secret given by the auth provider.<br> At least a client secret or PKCE is required.</div> <!> <div class="desc svelte-1m46su9"><p class="svelte-1m46su9">The authentication method to use on the <code>/token</code> endpoint.<br> Most providers should work with <code>basic</code>, some only with <code>post</code>.
+                        In rare situations, you need both, while it can lead to errors with others.</p></div> <div class="switchRow svelte-1m46su9"><div>client_secret_basic</div> <!></div> <div class="switchRow svelte-1m46su9"><div>client_secret_post</div> <!></div> <!> <div class="desc svelte-1m46su9"><p class="svelte-1m46su9">You can map a user to be a rauthy admin depending on an upstream ID claim.</p></div> <!> <!> <div class="desc svelte-1m46su9"><p class="svelte-1m46su9">If your provider issues a claim indicating that the user has used at least 2FA during
+                        login, you can specify the mfa claim path.</p></div> <!> <!> <!> <!>`,1),Iu=A('<div class="success svelte-1m46su9">Success</div>'),Su=A('<div class="err svelte-1m46su9"> </div>'),Cu=A('<div class="container svelte-1m46su9"><div class="header svelte-1m46su9">Type</div> <div class="ml mb svelte-1m46su9"><!></div> <!> <!> <!> <!></div>');function Au(_,s){le(s,!0);let t=G(s,"idx",31,()=>-1);const d="25rem";let i=C(!1),g=C(!1),f=C(""),u=C(!1),I=C(!1),E=C(void 0),o=C(!1),$=C(n({issuer:null,metadata_url:null,danger_allow_insecure:!1,root_pem:null})),m=C(n({enabled:!0,typ:"oidc",issuer:"",danger_allow_insecure:!1,authorization_endpoint:"",token_endpoint:"",token_auth_method_basic:!1,userinfo_endpoint:"",use_pkce:!0,client_secret_basic:!0,client_secret_post:!1,name:"",client_id:"",client_secret:"",scope:"",root_pem:null,admin_claim_path:null,admin_claim_value:null,mfa_claim_path:null,mfa_claim_value:null})),T=["OIDC","Auto","Custom","Github","Google"],k=C(n(T[0])),h=C(n({}));const y=He().shape({issuer:he().trim().matches(tt,"Can only contain URI safe characters, length max: 128").required("Required"),authorization_endpoint:he().url().required("Required"),token_endpoint:he().url().required("Required"),userinfo_endpoint:he().url().required("Required"),name:he().trim().matches(Xt,"Can only contain: 'a-zA-Z0-9\xC0-\xFF- ', length max: 128").required("Required"),client_id:he().trim().matches(tt,"Can only contain URI safe characters, length max: 128").required("Required"),client_secret:he().trim().max(256,"Max 256 characters"),scope:he().trim().matches(Ga,"Can only contain: 'a-zA-Z0-9-_/ ', length max: 128").required("Required"),root_pem:he().trim().nullable().matches(ua,"Invalid PEM certificate"),admin_claim_path:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128"),admin_claim_value:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128"),mfa_claim_path:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128"),mfa_claim_value:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128")}),w=He().shape({issuer:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128"),metadata_url:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128"),root_pem:he().trim().nullable().matches(ua,"Valid PEM certificate")});Ne(()=>()=>{a(i,!1),clearTimeout(e(E))});async function b(){if(!await S())return;if(!e(m).use_pkce&&!e(m).client_secret){a(f,"Must at least be a confidential client or use PKCE");return}a(f,""),a(g,!0),e(m).root_pem&&(e(m).danger_allow_insecure=!1,e(m).root_pem=e(m).root_pem.trim()),e(D)?e(m).typ="custom":e(m).typ=e(k).toLowerCase(),e(m).scope=e(m).scope.trim();let R=await Dr(e(m));if(R.ok)a(I,!0);else{let F=await R.json();F.message.includes("InvalidCertificate")?a(f,"Insecure connection not allowed"):a(f,n(F.message))}a(g,!1)}async function x(){if(!await L()){a(f,"Invalid input");return}a(f,""),a(g,!0);let R=await Mr(e($));if(R.ok){const F=await R.json();e(m).issuer=F.issuer,e(m).authorization_endpoint=F.authorization_endpoint,e(m).danger_allow_insecure=F.danger_allow_insecure,e(m).token_endpoint=F.token_endpoint,e(m).userinfo_endpoint=F.userinfo_endpoint,e(m).token_auth_method_basic=F.token_auth_method_basic,e(m).use_pkce=F.use_pkce,e(m).client_secret_basic=F.client_secret_basic,e(m).client_secret_post=!F.client_secret_basic&&F.client_secret_post,e(m).scope=F.scope,e(m).root_pem=F.root_pem,a(u,!0)}else{let F=await R.json();F.message.includes("InvalidCertificate")?a(f,"Insecure connection not allowed"):a(f,n(F.message))}a(g,!1)}function p(){a($,n({issuer:null,metadata_url:null,danger_allow_insecure:!1,root_pem:null})),a(m,n({enabled:!0,issuer:"",danger_allow_insecure:!1,authorization_endpoint:"",token_endpoint:"",userinfo_endpoint:"",use_pkce:!0,client_secret_basic:!0,client_secret_post:!1,scope:"",root_pem:null,admin_claim_path:null,admin_claim_value:null,mfa_claim_path:null,mfa_claim_value:null})),a(u,!1),a(o,!1)}async function S(){a(h,n({}));try{return await y.validate(e(m),{abortEarly:!1}),e(m).client_secret&&!(e(m).client_secret_basic||e(m).client_secret_post)?(a(f,"You have given a client secret, but no client auth method is active"),!1):(a(f,"Invalid input"),!0)}catch(R){return a(h,n(Ye(R))),R="Invalid input",!1}}async function L(){a(h,n({}));try{return await w.validate(e($),{abortEarly:!1}),!e($).issuer&&!e($).metadata_url?(e(h).issuer="Required",e(h).metadata_url=e(h).issuer,!1):!0}catch(R){return a(h,n(Ye(R))),!1}}let D=Ke(()=>e(k)===T[1]),j=Ke(()=>e(k)===T[2]),N=Ke(()=>e(k)===T[0]),V=Ke(()=>!e(D)&&!e(j)&&!e(N));Te(()=>{if(e(k))switch(a(u,!1),a(h,n({})),a($,n({issuer:null,metadata_url:null,danger_allow_insecure:!1,root_pem:null})),e(k)){case"Github":a(m,n({enabled:!0,issuer:"github.com",danger_allow_insecure:!1,authorization_endpoint:"https://github.com/login/oauth/authorize",token_endpoint:"https://github.com/login/oauth/access_token",token_auth_method_basic:!1,userinfo_endpoint:"https://api.github.com/user",use_pkce:!1,name:"Github",client_id:"",client_secret:"",scope:"user:email",root_pem:null,admin_claim_path:null,admin_claim_value:null,mfa_claim_path:"$.two_factor_authentication",mfa_claim_value:"true"}));break;case"Google":a($,n({issuer:"accounts.google.com",metadata_url:null,danger_allow_insecure:!1,root_pem:null})),x();break;default:a(m,n({enabled:!0,typ:"oidc",issuer:"",danger_allow_insecure:!1,authorization_endpoint:"",token_endpoint:"",token_auth_method_basic:!1,userinfo_endpoint:"",use_pkce:!0,name:"",client_id:"",client_secret:"",scope:"",root_pem:null,admin_claim_path:null,admin_claim_value:null,mfa_claim_path:null,mfa_claim_value:null}))}}),Te(()=>{e(I)&&a(E,n(setTimeout(()=>{s.onSave(),a(I,!1),a(i,!1),p()},1500)))}),ot(_,{get idx(){return t()},set idx(R){t(R)},get show(){return e(i)},set show(R){a(i,n(R))},header:R=>{var F=wu();r(R,F)},body:R=>{var F=Cu(),z=l(c(F),2),O=c(z);kt(O,{options:T,get value(){return e(k)},set value($e){a(k,n($e))}}),v(z);var U=l(z,2);{var Q=$e=>{var pe=$u(),je=l(ee(pe),2),fe=c(je);Be(fe,{get selected(){return e(o)},set selected(Pe){a(o,n(Pe))}}),v(je);var de=l(je,2);{var ye=Pe=>{wa(Pe,{rows:17,name:"rootPem",placeholder:`-----BEGIN CERTIFICATE-----
+    -----END CERTIFICATE-----`,get error(){return e(h).root_pem},get value(){return e($).root_pem},set value(Ce){e($).root_pem=Ce},children:(Ce,xe)=>{q();var Re=B("Root Certificate in PEM format");r(Ce,Re)},$$slots:{default:!0}})},we=Pe=>{var Ce=bu(),xe=l(ee(Ce),2),Re=c(xe);Be(Re,{get selected(){return e($).danger_allow_insecure},set selected(H){e($).danger_allow_insecure=H}}),v(xe),r(Pe,Ce)};P(de,Pe=>{e(o)?Pe(ye):Pe(we,!1)})}r($e,pe)};P(U,$e=>{e(u)||$e(Q)})}var M=l(U,2);{var W=$e=>{var pe=_u(),je=ee(pe);ie(je,{type:"url",name:"issuer",placeholder:"Issuer URL",width:d,get value(){return e($).issuer},set value(de){e($).issuer=de},get error(){return e(h).issuer},set error(de){e(h).issuer=de},$$events:{input:L,enter:x},children:(de,ye)=>{q();var we=B("ISSUER URL");r(de,we)},$$slots:{default:!0}});var fe=l(je,2);Se(fe,{level:1,width:"6rem",get isLoading(){return e(g)},set isLoading(de){a(g,n(de))},$$events:{click:x},children:(de,ye)=>{q();var we=B("LOOKUP");r(de,we)},$$slots:{default:!0}}),r($e,pe)},J=$e=>{var pe=me(),je=ee(pe);{var fe=ye=>{var we=ku(),Pe=ee(we);ie(Pe,{type:"url",name:"metadata",placeholder:".../.well-known/openid-configuration",width:d,get value(){return e($).metadata_url},set value(xe){e($).metadata_url=xe},get error(){return e(h).metadata_url},set error(xe){e(h).metadata_url=xe},$$events:{input:L,enter:x},children:(xe,Re)=>{q();var H=B("METADATA URL");r(xe,H)},$$slots:{default:!0}});var Ce=l(Pe,2);Se(Ce,{level:1,width:"6rem",get isLoading(){return e(g)},set isLoading(xe){a(g,n(xe))},$$events:{click:x},children:(xe,Re)=>{q();var H=B("LOOKUP");r(xe,H)},$$slots:{default:!0}}),r(ye,we)},de=ye=>{var we=me(),Pe=ee(we);{var Ce=xe=>{var Re=Eu(),H=ee(Re);{var Ie=ae=>{wa(ae,{rows:17,name:"rootPem",placeholder:`-----BEGIN CERTIFICATE-----
+    -----END CERTIFICATE-----`,get error(){return e(h).root_pem},get disabled(){return e(u)},get value(){return e(m).root_pem},set value(Ge){e(m).root_pem=Ge},children:(Ge,Oe)=>{q();var Ut=B("Root Certificate in PEM format");r(Ge,Ut)},$$slots:{default:!0}})},ge=ae=>{var Ge=xu(),Oe=l(ee(Ge),2),Ut=c(Oe);{var Ht=Pt=>{ea(Pt,{get check(){return e(m).danger_allow_insecure}})},Ft=Pt=>{Be(Pt,{get selected(){return e(m).danger_allow_insecure},set selected(Vt){e(m).danger_allow_insecure=Vt}})};P(Ut,Pt=>{e(u)?Pt(Ht):Pt(Ft,!1)})}v(Oe),r(ae,Ge)};P(H,ae=>{e(o)?ae(Ie):ae(ge,!1)})}var Ue=l(H,2);ie(Ue,{type:"url",name:"issuer",placeholder:"Issuer URL",width:d,get disabled(){return e(u)},get value(){return e(m).issuer},set value(ae){e(m).issuer=ae},get error(){return e(h).issuer},set error(ae){e(h).issuer=ae},$$events:{input:L},children:(ae,Ge)=>{q();var Oe=B("ISSUER URL");r(ae,Oe)},$$slots:{default:!0}});var Je=l(Ue,2);ie(Je,{type:"url",name:"auth_endpoint",placeholder:"Authorization Endpoint",width:d,get disabled(){return e(u)},get value(){return e(m).authorization_endpoint},set value(ae){e(m).authorization_endpoint=ae},get error(){return e(h).authorization_endpoint},set error(ae){e(h).authorization_endpoint=ae},$$events:{input:L},children:(ae,Ge)=>{q();var Oe=B("AUTHORIZATION ENDPOINT");r(ae,Oe)},$$slots:{default:!0}});var rt=l(Je,2);ie(rt,{type:"url",name:"token_endpoint",placeholder:"Token Endpoint",width:d,get disabled(){return e(u)},get value(){return e(m).token_endpoint},set value(ae){e(m).token_endpoint=ae},get error(){return e(h).token_endpoint},set error(ae){e(h).token_endpoint=ae},$$events:{input:L},children:(ae,Ge)=>{q();var Oe=B("TOKEN ENDPOINT");r(ae,Oe)},$$slots:{default:!0}});var vt=l(rt,2);ie(vt,{type:"url",name:"userinfo_endpoint",placeholder:"Userinfo Endpoint",width:d,get disabled(){return e(u)},get value(){return e(m).userinfo_endpoint},set value(ae){e(m).userinfo_endpoint=ae},get error(){return e(h).userinfo_endpoint},set error(ae){e(h).userinfo_endpoint=ae},$$events:{input:L},children:(ae,Ge)=>{q();var Oe=B("USERINFO ENDPOINT");r(ae,Oe)},$$slots:{default:!0}});var qe=l(vt,4),Fe=c(qe);{var lt=ae=>{ea(ae,{get check(){return e(m).use_pkce}})},xt=ae=>{Be(ae,{get selected(){return e(m).use_pkce},set selected(Ge){e(m).use_pkce=Ge}})};P(Fe,ae=>{e(u)?ae(lt):ae(xt,!1)})}v(qe);var $t=l(qe,4);ie($t,{name:"scope",placeholder:"openid profile email",width:d,get value(){return e(m).scope},set value(ae){e(m).scope=ae},get error(){return e(h).scope},set error(ae){e(h).scope=ae},$$events:{input:S},children:(ae,Ge)=>{q();var Oe=B("SCOPE");r(ae,Oe)},$$slots:{default:!0}});var Qe=l($t,4);ie(Qe,{name:"client_name",placeholder:"Client Name",width:d,get value(){return e(m).name},set value(ae){e(m).name=ae},get error(){return e(h).name},set error(ae){e(h).name=ae},$$events:{input:S},children:(ae,Ge)=>{q();var Oe=B("CLIENT NAME");r(ae,Oe)},$$slots:{default:!0}});var et=l(Qe,4);ie(et,{name:"client_id",autocomplete:"off",placeholder:"Client ID",width:d,get value(){return e(m).client_id},set value(ae){e(m).client_id=ae},get error(){return e(h).client_id},set error(ae){e(h).client_id=ae},$$events:{input:S},children:(ae,Ge)=>{q();var Oe=B("CLIENT ID");r(ae,Oe)},$$slots:{default:!0}});var gt=l(et,4);Wt(gt,{name:"client_secret",get error(){return e(h).client_secret},autocomplete:"off",placeholder:"Client Secret",width:d,get value(){return e(m).client_secret},set value(ae){e(m).client_secret=ae},$$events:{input:S},children:(ae,Ge)=>{q();var Oe=B("CLIENT SECRET");r(ae,Oe)},$$slots:{default:!0}});var ct=l(gt,4),It=l(c(ct),2);Be(It,{get selected(){return e(m).client_secret_basic},set selected(ae){e(m).client_secret_basic=ae}}),v(ct);var at=l(ct,2),st=l(c(at),2);Be(st,{get selected(){return e(m).client_secret_post},set selected(ae){e(m).client_secret_post=ae}}),v(at);var se=l(at,2);us(se);var Ae=l(se,4);ie(Ae,{name:"admin_claim_path",placeholder:"$.roles.*",width:d,get value(){return e(m).admin_claim_path},set value(ae){e(m).admin_claim_path=ae},get error(){return e(h).admin_claim_path},set error(ae){e(h).admin_claim_path=ae},$$events:{input:S},children:(ae,Ge)=>{q();var Oe=B("ADMIN CLAIM PATH");r(ae,Oe)},$$slots:{default:!0}});var ze=l(Ae,2);ie(ze,{name:"admin_claim_value",placeholder:"rauthy_admin",width:d,get value(){return e(m).admin_claim_value},set value(ae){e(m).admin_claim_value=ae},get error(){return e(h).admin_claim_value},set error(ae){e(h).admin_claim_value=ae},$$events:{input:S},children:(ae,Ge)=>{q();var Oe=B("ADMIN CLAIM VALUE");r(ae,Oe)},$$slots:{default:!0}});var X=l(ze,4);ie(X,{name:"mfa_claim_path",placeholder:"$.amr.*",width:d,get value(){return e(m).mfa_claim_path},set value(ae){e(m).mfa_claim_path=ae},get error(){return e(h).mfa_claim_path},set error(ae){e(h).mfa_claim_path=ae},$$events:{input:S},children:(ae,Ge)=>{q();var Oe=B("MFA CLAIM PATH");r(ae,Oe)},$$slots:{default:!0}});var Ee=l(X,2);ie(Ee,{name:"mfa_claim_value",placeholder:"mfa",width:d,get value(){return e(m).mfa_claim_value},set value(ae){e(m).mfa_claim_value=ae},get error(){return e(h).mfa_claim_value},set error(ae){e(h).mfa_claim_value=ae},$$events:{input:S},children:(ae,Ge)=>{q();var Oe=B("MFA CLAIM VALUE");r(ae,Oe)},$$slots:{default:!0}});var Le=l(Ee,2);Se(Le,{level:1,width:"6rem",get isLoading(){return e(g)},set isLoading(ae){a(g,n(ae))},$$events:{click:b},children:(ae,Ge)=>{q();var Oe=B("SAVE");r(ae,Oe)},$$slots:{default:!0}});var St=l(Le,2);Se(St,{level:4,width:"6rem",get isLoading(){return e(g)},set isLoading(ae){a(g,n(ae))},$$events:{click:p},children:(ae,Ge)=>{q();var Oe=B("RESET");r(ae,Oe)},$$slots:{default:!0}}),r(xe,Re)};P(Pe,xe=>{(e(V)||e(j)||e(u))&&xe(Ce)},!0)}r(ye,we)};P(je,ye=>{e(D)&&!e(u)?ye(fe):ye(de,!1)},!0)}r($e,pe)};P(M,$e=>{e(N)&&!e(u)?$e(W):$e(J,!1)})}var Z=l(M,2);{var re=$e=>{var pe=Iu();r($e,pe)};P(Z,$e=>{e(I)&&$e(re)})}var ve=l(Z,2);{var be=$e=>{var pe=Su(),je=c(pe,!0);v(pe),K(()=>Y(je,e(f))),r($e,pe)};P(ve,$e=>{e(f)&&$e(be)})}v(F),r(R,F)},$$slots:{header:!0,body:!0}}),ne()}var Tu=A('<img alt="No Logo Available">');function Lu(_,s){le(s,!0);var t=Tu();K(()=>ue(t,"src",`/auth/v1/providers/${s.providerId}/img?${Mt(6)}`)),ue(t,"width",20),ue(t,"height",20),r(_,t),ne()}var Nu=A('<div class="header svelte-19hes5">Allow insecure TLS certificates</div> <div class="ml mb svelte-19hes5"><!></div>',1),Ru=A('<div class="success svelte-19hes5">Success</div>'),Du=A('<div class="mainErr err svelte-19hes5"> </div>'),ju=A("<!> <!> <!>",1),Pu=A(`<div class="container svelte-19hes5"><div class="unit svelte-19hes5"><div class="label font-label svelte-19hes5">ID</div> <div class="value font-mono svelte-19hes5"> </div></div> <div class="separator"></div> <div class="header svelte-19hes5">Enabled</div> <div class="ml mb svelte-19hes5"><!></div> <div class="header svelte-19hes5">Custom Root CA PEM</div> <div class="ml mb svelte-19hes5"><!></div> <!> <!> <!> <!> <!> <div class="header svelte-19hes5">Use PKCE</div> <div class="ml mb svelte-19hes5"><!></div> <div class="desc svelte-19hes5">The scope the client should use when redirecting to the login.<br> Provide the values separated by space.</div> <!> <div class="desc svelte-19hes5">Client name for the Rauthy login form</div> <!> <div class="desc svelte-19hes5">Client ID given by the auth provider</div> <!> <div class="desc svelte-19hes5">Client Secret given by the auth provider.<br> At least a client secret or PKCE is required.</div> <!> <div class="desc svelte-19hes5"><p class="svelte-19hes5">The authentication method to use on the <code>/token</code> endpoint.<br> Most providers should work with <code>basic</code>, some only with <code>post</code>.
+            In rare situations, you need both, while it can lead to errors with others.</p></div> <div class="switchRow svelte-19hes5"><div>client_secret_basic</div> <!></div> <div class="switchRow svelte-19hes5"><div>client_secret_post</div> <!></div> <!> <div class="desc svelte-19hes5"><p class="svelte-19hes5">You can map a user to be a rauthy admin depending on an upstream ID claim.</p></div> <!> <!> <div class="desc svelte-19hes5"><p class="svelte-19hes5">If your provider issues a claim indicating that the user has used at least 2FA during
+            login, you can specify the mfa claim path.</p></div> <!> <!> <div class="logo svelte-19hes5"><!> <!></div> <!></div>`);function zu(_,s){le(s,!0);let t=G(s,"provider",31,()=>n({}));const d="25rem";let i=C(!1),g=C(""),f=C(!1),u=C(void 0),I=C(n(t().root_pem)),E=C(void 0);Ne(()=>()=>clearTimeout(e(u)));let o=C(n({}));const $=He().shape({issuer:he().trim().matches(tt,"Can only contain URI safe characters, length max: 128"),authorization_endpoint:he().url(),token_endpoint:he().url(),userinfo_endpoint:he().url(),name:he().trim().matches(Xt,"Can only contain: 'a-zA-Z0-9\xC0-\xFF- ', length max: 128"),client_id:he().trim().matches(tt,"Can only contain URI safe characters, length max: 128"),client_secret:he().trim().max(256,"Max 256 characters"),scope:he().trim().matches(Ga,"Can only contain: 'a-zA-Z0-9-_/ ', length max: 128"),admin_claim_path:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128"),admin_claim_value:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128"),mfa_claim_path:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128"),mfa_claim_value:he().trim().nullable().matches(tt,"Can only contain URI safe characters, length max: 128")});async function m(){if(e(I)||t(t().root_pem=void 0,!0),!await k())return;if(!t().use_pkce&&!t().client_secret){a(g,"Must at least be a confidential client or use PKCE");return}a(g,""),a(i,!0),t().root_pem?(t(t().danger_allow_insecure=!1,!0),t(t().root_pem=t().root_pem.trim(),!0)):t(t().root_pem=void 0,!0);let H=await jr(t().id,t());if(H.ok)a(f,!0);else{let Ie=await H.json();a(g,n(Ie.message))}a(i,!1)}async function T(H){a(i,!0);let Ie=await Or(t().id,H);if(!Ie.ok){let ge=await Ie.json();console.error(ge.message)}a(i,!1)}async function k(){a(o,n({}));try{return await $.validate(t(),{abortEarly:!1}),t().client_secret&&!(t().client_secret_basic||t().client_secret_post)?(a(g,"You have given a client secret, but no client auth method is active"),!1):(t().root_pem&&t().root_pem.length>0?ua.test(t().root_pem.trim())||(e(o).root_pem="Invalid PEM certificate"):a(g,"Invalid input"),!0)}catch(H){return a(o,n(Ye(H))),!1}}Te(()=>{e(f)&&a(u,n(setTimeout(()=>{a(f,!1),s.onSave()},2e3)))}),Te(()=>{t().scope&&t(t().scope=t().scope.replaceAll("+"," "),!0)}),Te(()=>{e(E)&&T(e(E))});var h=Pu(),y=c(h),w=l(c(y),2),b=c(w,!0);v(w),v(y);var x=l(y,6),p=c(x);Be(p,{get selected(){return t().enabled},set selected(H){t(t().enabled=H,!0)}}),v(x);var S=l(x,4),L=c(S);Be(L,{get selected(){return e(I)},set selected(H){a(I,n(H))}}),v(S);var D=l(S,2);{var j=H=>{wa(H,{rows:17,name:"rootPem",placeholder:`-----BEGIN CERTIFICATE-----
+-----END CERTIFICATE-----`,get error(){return e(o).root_pem},get value(){return t().root_pem},set value(Ie){t(t().root_pem=Ie,!0)},children:(Ie,ge)=>{q();var Ue=B("Root Certificate in PEM format");r(Ie,Ue)},$$slots:{default:!0}})},N=H=>{var Ie=Nu(),ge=l(ee(Ie),2),Ue=c(ge);Be(Ue,{get selected(){return t().danger_allow_insecure},set selected(Je){t(t().danger_allow_insecure=Je,!0)}}),v(ge),r(H,Ie)};P(D,H=>{e(I)?H(j):H(N,!1)})}var V=l(D,2);ie(V,{autocomplete:"off",placeholder:"Issuer URL",width:d,get value(){return t().issuer},set value(H){t(t().issuer=H,!0)},get error(){return e(o).issuer},set error(H){e(o).issuer=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("ISSUER URL");r(H,ge)},$$slots:{default:!0}});var R=l(V,2);ie(R,{autocomplete:"off",placeholder:"Authorization Endpoint",width:d,get value(){return t().authorization_endpoint},set value(H){t(t().authorization_endpoint=H,!0)},get error(){return e(o).authorization_endpoint},set error(H){e(o).authorization_endpoint=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("AUTHORIZATION ENDPOINT");r(H,ge)},$$slots:{default:!0}});var F=l(R,2);ie(F,{autocomplete:"off",placeholder:"Token Endpoint",width:d,get value(){return t().token_endpoint},set value(H){t(t().token_endpoint=H,!0)},get error(){return e(o).token_endpoint},set error(H){e(o).token_endpoint=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("TOKEN ENDPOINT");r(H,ge)},$$slots:{default:!0}});var z=l(F,2);ie(z,{autocomplete:"off",placeholder:"Userinfo Endpoint",width:d,get value(){return t().userinfo_endpoint},set value(H){t(t().userinfo_endpoint=H,!0)},get error(){return e(o).userinfo_endpoint},set error(H){e(o).userinfo_endpoint=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("USERINFO ENDPOINT");r(H,ge)},$$slots:{default:!0}});var O=l(z,4),U=c(O);Be(U,{get selected(){return t().use_pkce},set selected(H){t(t().use_pkce=H,!0)}}),v(O);var Q=l(O,4);ie(Q,{autocomplete:"off",placeholder:"openid profile email",width:d,get value(){return t().scope},set value(H){t(t().scope=H,!0)},get error(){return e(o).scope},set error(H){e(o).scope=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("SCOPE");r(H,ge)},$$slots:{default:!0}});var M=l(Q,4);ie(M,{autocomplete:"off",placeholder:"Client Name",width:d,get value(){return t().name},set value(H){t(t().name=H,!0)},get error(){return e(o).name},set error(H){e(o).name=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("CLIENT NAME");r(H,ge)},$$slots:{default:!0}});var W=l(M,4);ie(W,{autocomplete:"off",placeholder:"Client ID",width:d,get value(){return t().client_id},set value(H){t(t().client_id=H,!0)},get error(){return e(o).client_id},set error(H){e(o).client_id=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("CLIENT ID");r(H,ge)},$$slots:{default:!0}});var J=l(W,4);Wt(J,{get error(){return e(o).client_secret},autocomplete:"off",placeholder:"Client Secret",width:d,get value(){return t().client_secret},set value(H){t(t().client_secret=H,!0)},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("CLIENT SECRET");r(H,ge)},$$slots:{default:!0}});var Z=l(J,4),re=l(c(Z),2);Be(re,{get selected(){return t().client_secret_basic},set selected(H){t(t().client_secret_basic=H,!0)}}),v(Z);var ve=l(Z,2),be=l(c(ve),2);Be(be,{get selected(){return t().client_secret_post},set selected(H){t(t().client_secret_post=H,!0)}}),v(ve);var $e=l(ve,2);us($e);var pe=l($e,4);ie(pe,{autocomplete:"off",placeholder:"$.roles.*",width:d,get value(){return t().admin_claim_path},set value(H){t(t().admin_claim_path=H,!0)},get error(){return e(o).admin_claim_path},set error(H){e(o).admin_claim_path=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("ADMIN CLAIM PATH");r(H,ge)},$$slots:{default:!0}});var je=l(pe,2);ie(je,{autocomplete:"off",placeholder:"rauthy_admin",width:d,get value(){return t().admin_claim_value},set value(H){t(t().admin_claim_value=H,!0)},get error(){return e(o).admin_claim_value},set error(H){e(o).admin_claim_value=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("ADMIN CLAIM VALUE");r(H,ge)},$$slots:{default:!0}});var fe=l(je,4);ie(fe,{autocomplete:"off",placeholder:"$.amr.*",width:d,get value(){return t().mfa_claim_path},set value(H){t(t().mfa_claim_path=H,!0)},get error(){return e(o).mfa_claim_path},set error(H){e(o).mfa_claim_path=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("MFA CLAIM PATH");r(H,ge)},$$slots:{default:!0}});var de=l(fe,2);ie(de,{autocomplete:"off",placeholder:"mfa",width:d,get value(){return t().mfa_claim_value},set value(H){t(t().mfa_claim_value=H,!0)},get error(){return e(o).mfa_claim_value},set error(H){e(o).mfa_claim_value=H},$$events:{input:k},children:(H,Ie)=>{q();var ge=B("MFA CLAIM VALUE");r(H,ge)},$$slots:{default:!0}});var ye=l(de,2),we=c(ye);ls(we,{get image(){return e(E)},set image(H){a(E,n(H))}});var Pe=l(we,2);{var Ce=H=>{Lu(H,{get providerId(){return t().id}})};P(Pe,H=>{e(i)||H(Ce)})}v(ye);var xe=l(ye,2);{var Re=H=>{var Ie=ju(),ge=ee(Ie);Se(ge,{level:1,width:"4rem",get isLoading(){return e(i)},set isLoading(qe){a(i,n(qe))},$$events:{click:m},children:(qe,Fe)=>{q();var lt=B("SAVE");r(qe,lt)},$$slots:{default:!0}});var Ue=l(ge,2);{var Je=qe=>{var Fe=Ru();r(qe,Fe)};P(Ue,qe=>{e(f)&&qe(Je)})}var rt=l(Ue,2);{var vt=qe=>{var Fe=Du(),lt=c(Fe,!0);v(Fe),K(()=>Y(lt,e(g))),r(qe,Fe)};P(rt,qe=>{e(g)&&qe(vt)})}r(H,Ie)};P(xe,H=>{H(Re)})}v(h),K(()=>Y(b,t().id)),r(_,h),ne()}var Ou=A("<p> </p>"),Mu=A(`<div class="label svelte-1tncxap"><p>This provider is in use by active users.</p> <p>You can force delete it, but users without a local password or passkey
+                will not be able to log in anymore.</p> <details><summary>Linked Users</summary> <!></details></div> <div class="label svelte-1tncxap"><p>Are you sure you want to delete this provider?</p> <div class="forceDelete svelte-1tncxap">FORCE DELETE <!></div></div> <!>`,1),Uu=A('<div class="label svelte-1tncxap">Are you sure, you want to delete this provider?</div> <!>',1),qu=A('<div class="err svelte-1tncxap"> </div>'),Gu=A('<div class="container svelte-1tncxap"><!> <!></div>');function Wu(_,s){le(s,!0);let t=G(s,"provider",19,()=>({})),d=C(!0),i=C(""),g=C(!1),f=C(n([]));Ne(async()=>{let k=await zr(t().id),h=await k.json();k.status===406?a(f,n(h)):a(i,n(h.message)),a(d,!1)});async function u(){a(i,""),a(d,!0);let k=await Pr(t().id);if(k.ok)s.onSave();else{let h=await k.json();a(i,n(h.message))}a(d,!1)}var I=Gu(),E=c(I);{var o=k=>{var h=Mu(),y=ee(h),w=l(c(y),4),b=l(c(w),2);We(b,17,()=>e(f),j=>j.id,(j,N)=>{var V=Ou(),R=c(V);v(V),K(()=>Y(R,`${e(N).id??""} ${e(N).email??""}`)),r(j,V)}),v(w),v(y);var x=l(y,2),p=l(c(x),2),S=l(c(p));Be(S,{get selected(){return e(g)},set selected(j){a(g,n(j))}}),v(p),v(x);var L=l(x,2);{var D=j=>{Se(j,{level:1,get isLoading(){return e(d)},set isLoading(N){a(d,n(N))},$$events:{click:u},children:(N,V)=>{q();var R=B("DELETE");r(N,R)},$$slots:{default:!0}})};P(L,j=>{e(g)&&j(D)})}r(k,h)},$=k=>{var h=Uu(),y=l(ee(h),2);Se(y,{level:1,get isLoading(){return e(d)},set isLoading(w){a(d,n(w))},$$events:{click:u},children:(w,b)=>{q();var x=B("DELETE");r(w,x)},$$slots:{default:!0}}),r(k,h)};P(E,k=>{e(f).length>0?k(o):k($,!1)})}var m=l(E,2);{var T=k=>{var h=qu(),y=c(h,!0);v(h),K(()=>Y(y,e(i))),r(k,h)};P(m,k=>{e(i)&&k(T)})}v(I),r(_,I),ne()}var Ku=A('<div class="data font-mono svelte-115hohv"> </div>'),Fu=A('<div class="data svelte-115hohv"> </div>'),Vu=A('<div class="header svelte-115hohv"><!> <!></div>'),Bu=A("<div><!></div>"),Ju=A("<div><!></div>"),Yu=A("<div><!> <!></div>");function Hu(_,s){le(s,!0);let t=G(s,"provider",31,()=>n({})),d=G(s,"onSave",15),i=C(void 0);const g=["Config","Delete"];let f=C(n(g[0]));const u=200,I=u/2;ot(_,{get show(){return e(i)},set show(E){a(i,n(E))},header:E=>{var o=Vu(),$=c(o);Ze($,{text:"Provider ID",children:(T,k)=>{var h=Ku(),y=c(h,!0);v(h),K(()=>Y(y,t().id)),r(T,h)},$$slots:{default:!0}});var m=l($,2);Ze(m,{text:"Provider Name",children:(T,k)=>{var h=Fu(),y=c(h,!0);v(h),K(()=>Y(y,t().name)),r(T,h)},$$slots:{default:!0}}),v(o),r(E,o)},body:E=>{var o=Yu(),$=c(o);Dt($,{labels:g,get selected(){return e(f)},set selected(h){a(f,n(h))}});var m=l($,2);{var T=h=>{var y=Bu(),w=c(y);zu(w,{get provider(){return t()},set provider(b){t(b)},get onSave(){return d()},set onSave(b){d(b)}}),v(y),ce(1,y,()=>_e,()=>({delay:I,duration:u})),ce(2,y,()=>_e,()=>({duration:u})),r(h,y)},k=h=>{var y=me(),w=ee(y);{var b=x=>{var p=Ju(),S=c(p);Wu(S,{get provider(){return t()},set provider(L){t(L)},get onSave(){return d()},set onSave(L){d(L)}}),v(p),ce(1,p,()=>_e,()=>({delay:I,duration:u})),ce(2,p,()=>_e,()=>({duration:u})),r(x,p)};P(w,x=>{e(f)==="Delete"&&x(b)},!0)}r(h,y)};P(m,h=>{e(f)==="Config"?h(T):h(k,!1)})}v(o),r(E,o)},$$slots:{header:!0,body:!0}}),ne()}var Xu=A('<div class="svelte-a0i4pk"><!></div>'),Zu=A(' <div class="content"><!> <div id="federation" class="svelte-a0i4pk"></div> <div style="height: 20px"></div></div>',1);function Qu(_,s){le(s,!0);let t=C(""),d=C(n([]));Ne(()=>{i()});async function i(){let $=await Rr(),m=await $.json();$.ok?a(d,n([...m])):a(t,n(m.message))}function g(){i()}q();var f=Zu(),u=ee(f),I=l(u),E=c(I);Au(E,{onSave:g});var o=l(E,2);We(o,23,()=>e(d),$=>$.id,($,m,T)=>{var k=Xu(),h=c(k);Hu(h,{onSave:g,get provider(){return e(d)[e(T)]},set provider(y){e(d)[e(T)]=y}}),v(k),r($,k)}),v(o),q(2),v(I),K(()=>Y(u,`${e(t)??""} `)),r(_,f),ne()}var eh=A("<div><div><!></div></div>"),th=A("<div><!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div>"),ah=A('<main class="svelte-1a52j8o"><!> <div class="inner svelte-1a52j8o"><!> <!></div></main>');function sh(_,s){le(s,!0);let t=G(s,"selected",15,"Users"),d=C("Rauthy Admin"),i=C(!0),g=C(!0),f=C(!1),u=C(void 0);Te(()=>{e(u)&&(a(i,e(u)>1050),a(g,e(u)<1050),a(f,e(u)>1450))}),Te(()=>{if(t())switch(t()){case"Users":{window.history.pushState("Users","","/auth/v1/admin/users"),a(d,"Users");break}case"Attributes":{window.history.pushState("Attributes","","/auth/v1/admin/attributes"),a(d,"Attributes");break}case"Clients":{window.history.pushState("Clients","","/auth/v1/admin/clients"),a(d,"Clients");break}case"Roles":{window.history.pushState("Roles","","/auth/v1/admin/roles"),a(d,"Roles");break}case"Groups":{window.history.pushState("Groups","","/auth/v1/admin/groups"),a(d,"Groups");break}case"Scopes":{window.history.pushState("Scopes","","/auth/v1/admin/scopes"),a(d,"Scopes");break}case"Sessions":{window.history.pushState("Sessions","","/auth/v1/admin/sessions"),a(d,"Sessions");break}case"Events":{window.history.pushState("Sessions","","/auth/v1/admin/events"),a(d,"Events");break}case"Blacklist":{window.history.pushState("Blacklist","","/auth/v1/admin/blacklist"),a(d,"Blacklist");break}case"ApiKeys":{window.history.pushState("ApiKeys","","/auth/v1/admin/api_keys"),a(d,"ApiKeys");break}case"Providers":{window.history.pushState("Providers","","/auth/v1/admin/providers"),a(d,"Providers");break}case"Config":{window.history.pushState("Config","","/auth/v1/admin/config"),a(d,"Config");break}case"Docs":{window.history.pushState("Docs","","/auth/v1/admin/docs"),a(d,"Docs");break}case"Logout":Ms();break}}),Ne(()=>(window.addEventListener("popstate",E),I(window.innerWidth),()=>window.removeEventListener("popstate",E)));function I(b){a(i,b>1050),a(g,b<1050),a(f,b>1450)}function E(b){t(b.state)}var o=ah();Ta(b=>{K(()=>Aa.title=e(d))});var $=c(o);or($,{widthExpanded:150,widthCollapsed:70,get selected(){return t()},set selected(b){t(b)},get isExpanded(){return e(i)},set isExpanded(b){a(i,n(b))},logo:b=>{var x=eh(),p=c(x),S=c(p);Yd(S),v(p),v(x),K(()=>{oe(p,"width",e(i)?"120px":"55px"),oe(p,"margin-top",e(i)?"32px":"40px"),oe(p,"margin-bottom",e(i)?"13px":"22px")}),r(b,x)},entries:b=>{var x=th(),p=c(x);mt(p,{label:"Users",children:(W,J)=>{Pd(W,{})},$$slots:{default:!0}});var S=l(p,2);mt(S,{label:"Attributes",children:(W,J)=>{Gd(W,{})},$$slots:{default:!0}});var L=l(S,2);mt(L,{label:"Clients",children:(W,J)=>{Od(W,{})},$$slots:{default:!0}});var D=l(L,2);mt(D,{label:"Roles",children:(W,J)=>{os(W,{})},$$slots:{default:!0}});var j=l(D,2);mt(j,{label:"Groups",children:(W,J)=>{Ud(W,{})},$$slots:{default:!0}});var N=l(j,2);mt(N,{label:"Scopes",children:(W,J)=>{Bd(W,{})},$$slots:{default:!0}});var V=l(N,2);mt(V,{label:"Sessions",children:(W,J)=>{os(W,{})},$$slots:{default:!0}});var R=l(V,2);mt(R,{label:"Events",children:(W,J)=>{hu(W,{})},$$slots:{default:!0}});var F=l(R,2);mt(F,{label:"Blacklist",children:(W,J)=>{Qt(W,{width:24})},$$slots:{default:!0}});var z=l(F,2);mt(z,{label:"ApiKeys",children:(W,J)=>{Nc(W,{})},$$slots:{default:!0}});var O=l(z,2);mt(O,{label:"Providers",children:(W,J)=>{mu(W,{})},$$slots:{default:!0}});var U=l(O,2);mt(U,{label:"Config",children:(W,J)=>{Dd(W,{})},$$slots:{default:!0}});var Q=l(U,2);mt(Q,{label:"Docs",children:(W,J)=>{Qd(W,{})},$$slots:{default:!0}});var M=l(Q,2);mt(M,{label:"Logout",children:(W,J)=>{Fd(W,{})},$$slots:{default:!0}}),v(x),r(b,x)},$$slots:{logo:!0,entries:!0}});var m=l($,2),T=c(m);{var k=b=>{bt(b,{get eventsWide(){return e(f)},set eventsWide(x){a(f,n(x))},get eventsCollapsed(){return e(g)},set eventsCollapsed(x){a(g,n(x))},children:(x,p)=>{an(x,{})},$$slots:{default:!0}})},h=b=>{var x=me(),p=ee(x);{var S=D=>{bt(D,{get eventsWide(){return e(f)},set eventsWide(j){a(f,n(j))},get eventsCollapsed(){return e(g)},set eventsCollapsed(j){a(g,n(j))},children:(j,N)=>{id(j,{})},$$slots:{default:!0}})},L=D=>{var j=me(),N=ee(j);{var V=F=>{bt(F,{get eventsWide(){return e(f)},set eventsWide(z){a(f,n(z))},get eventsCollapsed(){return e(g)},set eventsCollapsed(z){a(g,n(z))},children:(z,O)=>{Av(z,{})},$$slots:{default:!0}})},R=F=>{var z=me(),O=ee(z);{var U=M=>{bt(M,{get eventsWide(){return e(f)},set eventsWide(W){a(f,n(W))},get eventsCollapsed(){return e(g)},set eventsCollapsed(W){a(g,n(W))},children:(W,J)=>{Cn(W,{})},$$slots:{default:!0}})},Q=M=>{var W=me(),J=ee(W);{var Z=ve=>{bt(ve,{get eventsWide(){return e(f)},set eventsWide(be){a(f,n(be))},get eventsCollapsed(){return e(g)},set eventsCollapsed(be){a(g,n(be))},children:(be,$e)=>{Hn(be,{})},$$slots:{default:!0}})},re=ve=>{var be=me(),$e=ee(be);{var pe=fe=>{bt(fe,{get eventsWide(){return e(f)},set eventsWide(de){a(f,n(de))},get eventsCollapsed(){return e(g)},set eventsCollapsed(de){a(g,n(de))},children:(de,ye)=>{xo(de,{})},$$slots:{default:!0}})},je=fe=>{var de=me(),ye=ee(de);{var we=Ce=>{bt(Ce,{get eventsWide(){return e(f)},set eventsWide(xe){a(f,n(xe))},get eventsCollapsed(){return e(g)},set eventsCollapsed(xe){a(g,n(xe))},children:(xe,Re)=>{Mv(xe,{})},$$slots:{default:!0}})},Pe=Ce=>{var xe=me(),Re=ee(xe);{var H=ge=>{bt(ge,{get eventsWide(){return e(f)},set eventsWide(Ue){a(f,n(Ue))},get eventsCollapsed(){return e(g)},set eventsCollapsed(Ue){a(g,n(Ue))},children:(Ue,Je)=>{cu(Ue,{})},$$slots:{default:!0}})},Ie=ge=>{var Ue=me(),Je=ee(Ue);{var rt=qe=>{bt(qe,{get eventsWide(){return e(f)},set eventsWide(Fe){a(f,n(Fe))},get eventsCollapsed(){return e(g)},set eventsCollapsed(Fe){a(g,n(Fe))},children:(Fe,lt)=>{Tc(Fe,{})},$$slots:{default:!0}})},vt=qe=>{var Fe=me(),lt=ee(Fe);{var xt=Qe=>{bt(Qe,{get eventsWide(){return e(f)},set eventsWide(et){a(f,n(et))},get eventsCollapsed(){return e(g)},set eventsCollapsed(et){a(g,n(et))},children:(et,gt)=>{ou(et,{})},$$slots:{default:!0}})},$t=Qe=>{var et=me(),gt=ee(et);{var ct=at=>{bt(at,{get eventsWide(){return e(f)},set eventsWide(st){a(f,n(st))},get eventsCollapsed(){return e(g)},set eventsCollapsed(st){a(g,n(st))},children:(st,se)=>{Qu(st,{})},$$slots:{default:!0}})},It=at=>{var st=me(),se=ee(st);{var Ae=X=>{bt(X,{get eventsWide(){return e(f)},set eventsWide(Ee){a(f,n(Ee))},get eventsCollapsed(){return e(g)},set eventsCollapsed(Ee){a(g,n(Ee))},children:(Ee,Le)=>{Nd(Ee)},$$slots:{default:!0}})},ze=X=>{var Ee=me(),Le=ee(Ee);{var St=ae=>{bt(ae,{get eventsWide(){return e(f)},set eventsWide(Ge){a(f,n(Ge))},get eventsCollapsed(){return e(g)},set eventsCollapsed(Ge){a(g,n(Ge))},children:(Ge,Oe)=>{Xd(Ge)},$$slots:{default:!0}})};P(Le,ae=>{t()==="Docs"&&ae(St)},!0)}r(X,Ee)};P(se,X=>{t()==="Config"?X(Ae):X(ze,!1)},!0)}r(at,st)};P(gt,at=>{t()==="Providers"?at(ct):at(It,!1)},!0)}r(Qe,et)};P(lt,Qe=>{t()==="ApiKeys"?Qe(xt):Qe($t,!1)},!0)}r(qe,Fe)};P(Je,qe=>{t()==="Blacklist"?qe(rt):qe(vt,!1)},!0)}r(ge,Ue)};P(Re,ge=>{t()==="Events"?ge(H):ge(Ie,!1)},!0)}r(Ce,xe)};P(ye,Ce=>{t()==="Sessions"?Ce(we):Ce(Pe,!1)},!0)}r(fe,de)};P($e,fe=>{t()==="Scopes"?fe(pe):fe(je,!1)},!0)}r(ve,be)};P(J,ve=>{t()==="Groups"?ve(Z):ve(re,!1)},!0)}r(M,W)};P(O,M=>{t()==="Roles"?M(U):M(Q,!1)},!0)}r(F,z)};P(N,F=>{t()==="Clients"?F(V):F(R,!1)},!0)}r(D,j)};P(p,D=>{t()==="Attributes"?D(S):D(L,!1)},!0)}r(b,x)};P(T,b=>{t()==="Users"?b(k):b(h,!1)})}var y=l(T,2);{var w=b=>{kc(b,{get collapsed(){return e(g)},get wide(){return e(f)}})};P(y,b=>{e(u)!==void 0&&b(w)})}v(m),v(o),Vs("innerWidth",b=>a(u,n(b))),r(_,o),ne()}var rh=A('<div class="noAdmin svelte-mia078"><div class="text svelte-mia078">A rauthy admin account must have <b>MFA enabled.</b><br> Please navigate to your <b>account</b> and activate MFA.<br> Afterwards, you need to do a logout and log back in.</div> <!></div>'),ih=A('<div class="noAdmin svelte-mia078"><div class="text svelte-mia078">You are not assigned to the <b>rauthy_admin</b> role.<br> You do not have access to the admin panel.</div> <!></div>');function lh(_,s){le(s,!0);let t=G(s,"selected",15,"Users"),d=C(void 0),i=C(!1),g=C(!1);Ne(async()=>{let o=await Us();if(o.ok){let $=await o.json(),m=await qs();m.ok?(a(d,n($)),a(i,!0)):m.status===406?(a(g,!0),a(d,n({}))):a(d,n({}))}else Oa()});var f=me();Ta(o=>{Aa.title="Admin"});var u=ee(f);{var I=o=>{ha(o,{})},E=o=>{var $=me(),m=ee($);{var T=h=>{var y=rh(),w=l(c(y),2);Se(w,{$$events:{click:()=>window.location.href="/auth/v1/account"},children:(b,x)=>{q();var p=B("ACCOUNT");r(b,p)},$$slots:{default:!0}}),v(y),r(h,y)},k=h=>{var y=me(),w=ee(y);{var b=p=>{var S=ih(),L=l(c(S),2);Se(L,{$$events:{click:()=>window.location.href="/auth/v1/"},children:(D,j)=>{q();var N=B("GO BACK");r(D,N)},$$slots:{default:!0}}),v(S),r(p,S)},x=p=>{sh(p,{get selected(){return t()},set selected(S){t(S)}})};P(w,p=>{e(i)?p(x,!1):p(b)},!0)}r(h,y)};P(m,h=>{e(g)?h(T):h(k,!1)},!0)}r(o,$)};P(u,o=>{!e(d)&&!e(g)?o(I):o(E,!1)})}r(_,f),ne()}export{lh as A};
diff --git a/static/v1/_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js.br b/static/v1/_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js.br
new file mode 100644
index 000000000..f55089937
Binary files /dev/null and b/static/v1/_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js.br differ
diff --git a/static/v1/_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js.gz b/static/v1/_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js.gz
new file mode 100644
index 000000000..b0779d2e4
Binary files /dev/null and b/static/v1/_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/AppVersion.DL5DXmu_.js b/static/v1/_app/immutable/chunks/AppVersion.DL5DXmu_.js
new file mode 100644
index 000000000..ff6b06140
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/AppVersion.DL5DXmu_.js
@@ -0,0 +1,1 @@
+import{c as w,a as o,b as d}from"./disclose-version.DZhRUPAc.js";import{p as h,o as A,j as i,a0 as $,g as t,a as x,_ as p,a3 as v,a5 as l,a2 as u}from"./index-client.CGppiJvc.js";import{s as _}from"./render.D4MwAWTL.js";import{i as B}from"./if.DUA6Hpfn.js";import{s as C}from"./Loading.FF_EHyHU.js";import{p as m}from"./proxy.DB4Km9hY.js";import{j as D}from"./dataFetching.Dto1xJW6.js";var L=d('<div class="ver upd svelte-zcqypp"><a target="_blank" class="svelte-zcqypp"> </a></div>'),M=d('<div class="ver svelte-zcqypp"> </div>');function U(y,j){h(j,!0);let e=p(""),c=p(!1),f=p("");A(()=>{q()});async function q(){let s=await D();if(s.ok){let a=await s.json();i(e,m(a.current)),a.last_check,a.latest,i(f,m(a.latest_url)),i(c,m(a.update_available))}}var n=w(),z=$(n);{var b=s=>{var a=L(),r=v(a),k=v(r);l(r),l(a),u(()=>{C(r,"href",t(f)),_(k,`v${t(e)??""}\u26A0\uFE0F`)}),o(s,a)},g=s=>{var a=M(),r=v(a);l(a),u(()=>_(r,`v${t(e)??""}`)),o(s,a)};B(z,s=>{t(c)?s(b):s(g,!1)})}o(y,n),x()}export{U as A};
diff --git a/static/v1/_app/immutable/chunks/AppVersion.DL5DXmu_.js.br b/static/v1/_app/immutable/chunks/AppVersion.DL5DXmu_.js.br
new file mode 100644
index 000000000..f131784c5
Binary files /dev/null and b/static/v1/_app/immutable/chunks/AppVersion.DL5DXmu_.js.br differ
diff --git a/static/v1/_app/immutable/chunks/AppVersion.DL5DXmu_.js.gz b/static/v1/_app/immutable/chunks/AppVersion.DL5DXmu_.js.gz
new file mode 100644
index 000000000..9458bbe26
Binary files /dev/null and b/static/v1/_app/immutable/chunks/AppVersion.DL5DXmu_.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/Button.BH2_dPry.js b/static/v1/_app/immutable/chunks/Button.BH2_dPry.js
new file mode 100644
index 000000000..a49ba78e5
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/Button.BH2_dPry.js
@@ -0,0 +1,1 @@
+import{a as v,b as k,c as J}from"./disclose-version.DZhRUPAc.js";import{p as K,_ as u,a7 as M,a2 as N,a as O,a3 as h,g as d,a5 as w,a0 as P,j as s,n as Q,h as R}from"./index-client.CGppiJvc.js";import{d as S,e as U}from"./render.D4MwAWTL.js";import{i as L}from"./if.DUA6Hpfn.js";import{s as V}from"./snippet.xhmr1ywJ.js";import{L as W,t as X,f as Y,c as Z}from"./Loading.FF_EHyHU.js";import{x as $,y as x}from"./dataFetching.Dto1xJW6.js";import{p as l}from"./props.Df_pGDSd.js";import{r as g}from"./legacy-client.CgqodnwN.js";var q=k('<div class="load svelte-103k7bs"><!></div>'),z=k('<div class="txt svelte-103k7bs"><!></div>'),A=k("<button><!></button>");function aa(T,o){K(o,!0);let _=l(o,"level",3,2),j=l(o,"width",3,"inherit"),c=l(o,"selected",15,void 0),B=l(o,"isDisabled",3,!1),r=l(o,"isLoading",11,!1),m=u(!r()),i=u("button"),b=u("white"),C=R(()=>B()||r());g(()=>{if(_())switch(_()){case 1:s(i,"font-label l1");break;case 2:s(i,"font-label l2");break;case 3:s(i,"font-label l3"),s(b,"var(--col-acnt)");break;default:s(i,"font-label l4"),s(b,"var(--col-acnt)")}}),g(()=>{r()&&setTimeout(()=>{s(m,!1)},120)}),g(()=>{r()||setTimeout(()=>{s(m,!0)},120)});const D=M();function y(){c()!==void 0&&c(!c()),D("click",!0)}var a=A();a.__click=y;var E=h(a);{var F=e=>{var t=q(),f=h(t);W(f,{background:!1,get color(){return d(b)}}),w(t),v(e,t)},G=e=>{var t=J(),f=P(t);{var H=p=>{var n=z(),I=h(n);V(I,()=>o.children??Q),w(n),X(1,n,()=>Y),v(p,n)};L(f,p=>{d(m)&&p(H)},!0)}v(e,t)};L(E,e=>{r()?e(F):e(G,!1)})}w(a),N(()=>{$(a,Z(d(i)),"svelte-103k7bs"),a.disabled=d(C),x(a,"width",j()),x(a,"box-shadow",c()?"inset 0 0 3px 2px var(--col-glow)":""),x(a,"cursor",r()?"default":"pointer")}),U("keypress",a,y),v(T,a),O()}S(["click"]);export{aa as B};
diff --git a/static/v1/_app/immutable/chunks/Button.BH2_dPry.js.br b/static/v1/_app/immutable/chunks/Button.BH2_dPry.js.br
new file mode 100644
index 000000000..0fe7dd8b5
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Button.BH2_dPry.js.br differ
diff --git a/static/v1/_app/immutable/chunks/Button.BH2_dPry.js.gz b/static/v1/_app/immutable/chunks/Button.BH2_dPry.js.gz
new file mode 100644
index 000000000..e9002e26a
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Button.BH2_dPry.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/CheckIcon.Cjxxxfsf.js b/static/v1/_app/immutable/chunks/CheckIcon.Cjxxxfsf.js
new file mode 100644
index 000000000..c0662b90b
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/CheckIcon.Cjxxxfsf.js
@@ -0,0 +1,1 @@
+import{a as c,n as p,c as k}from"./disclose-version.DZhRUPAc.js";import{a2 as v,a0 as m}from"./index-client.CGppiJvc.js";import{i as u}from"./if.DUA6Hpfn.js";import{p as t}from"./props.Df_pGDSd.js";import{s as a}from"./Loading.FF_EHyHU.js";var w=p('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path></svg>');function d(l,r){let n=t(r,"color",3,"var(--col-text)"),e=t(r,"opacity",3,.9),s=t(r,"width",3,20);var o=w();a(o,"stroke-width",2),v(()=>{a(o,"width",s()),a(o,"color",n()),a(o,"opacity",e())}),c(l,o)}var g=p('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path></svg>');function h(l,r){let n=t(r,"color",3,"var(--col-text)"),e=t(r,"opacity",3,.9),s=t(r,"width",3,20);var o=g();a(o,"stroke-width",2),v(()=>{a(o,"width",s()),a(o,"color",n()),a(o,"opacity",e())}),c(l,o)}function x(l,r){let n=t(r,"check",3,!1);var e=k(),s=m(e);{var o=i=>{d(i,{color:"var(--col-ok)"})},f=i=>{h(i,{color:"var(--col-err)"})};u(s,i=>{n()?i(o):i(f,!1)})}c(l,e)}export{x as C,d as I,h as a};
diff --git a/static/v1/_app/immutable/chunks/CheckIcon.Cjxxxfsf.js.br b/static/v1/_app/immutable/chunks/CheckIcon.Cjxxxfsf.js.br
new file mode 100644
index 000000000..5af7acbf1
Binary files /dev/null and b/static/v1/_app/immutable/chunks/CheckIcon.Cjxxxfsf.js.br differ
diff --git a/static/v1/_app/immutable/chunks/CheckIcon.Cjxxxfsf.js.gz b/static/v1/_app/immutable/chunks/CheckIcon.Cjxxxfsf.js.gz
new file mode 100644
index 000000000..ba9a29d45
Binary files /dev/null and b/static/v1/_app/immutable/chunks/CheckIcon.Cjxxxfsf.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/ContentCenter.CsjyBf2d.js b/static/v1/_app/immutable/chunks/ContentCenter.CsjyBf2d.js
new file mode 100644
index 000000000..e1905ac4d
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/ContentCenter.CsjyBf2d.js
@@ -0,0 +1,1 @@
+import{a as v,b as o}from"./disclose-version.DZhRUPAc.js";import{p as m,a as n,a3 as t,a5 as l}from"./index-client.CGppiJvc.js";import{s as c}from"./snippet.xhmr1ywJ.js";var f=o('<main class="svelte-1w3gfbz"><!></main>');function p(r,s){m(s,!0);var a=f(),i=t(a);c(i,()=>s.children),l(a),v(r,a),n()}var d=o('<div class="svelte-vtwvgl"><!></div>');function e(r,s){m(s,!0);var a=d(),i=t(a);c(i,()=>s.children),l(a),v(r,a),n()}export{e as C,p as M};
diff --git a/static/v1/_app/immutable/chunks/ContentCenter.CsjyBf2d.js.br b/static/v1/_app/immutable/chunks/ContentCenter.CsjyBf2d.js.br
new file mode 100644
index 000000000..576d4c248
Binary files /dev/null and b/static/v1/_app/immutable/chunks/ContentCenter.CsjyBf2d.js.br differ
diff --git a/static/v1/_app/immutable/chunks/ContentCenter.CsjyBf2d.js.gz b/static/v1/_app/immutable/chunks/ContentCenter.CsjyBf2d.js.gz
new file mode 100644
index 000000000..e33663b74
Binary files /dev/null and b/static/v1/_app/immutable/chunks/ContentCenter.CsjyBf2d.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/Devices.BuQD3GeY.js b/static/v1/_app/immutable/chunks/Devices.BuQD3GeY.js
new file mode 100644
index 000000000..bec0dfd38
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/Devices.BuQD3GeY.js
@@ -0,0 +1,1 @@
+import{y as ea,z as K,A as _e,I as aa,K as $e,aI as ta,aO as sa,aN as oa,C as ia,as as ra,Z as la,aZ as na,d as Ie,X as ie,W as va,ad as ca,a3 as m,a5 as u,a2 as y,g as l,p as Q,o as Ee,j as A,a_ as da,n as re,a1 as _,a as ee,_ as L,a0 as le,h as ae,a4 as ua}from"./index-client.CGppiJvc.js";import{l as Te,k as ma,w as Ce,d as q,s as I,e as U}from"./render.D4MwAWTL.js";import{d as Se,e as fa,a as k,b as C,t as Ne,c as Me,n as pa}from"./disclose-version.DZhRUPAc.js";import{e as De,i as ba}from"./OptionSelect.BCgZksOM.js";import{s as j,r as Ae,l as xa,t as Re,f as ha,b as wa}from"./Loading.FF_EHyHU.js";import{p as E,s as ne,b as ka,a as ve}from"./props.Df_pGDSd.js";import{t as Ue,y as ga,Y as ya,J as je,Z as _a,$ as $a,a0 as Ia}from"./dataFetching.Dto1xJW6.js";import{r as ce}from"./legacy-client.CgqodnwN.js";import{i as V}from"./if.DUA6Hpfn.js";import{p as H}from"./proxy.DB4Km9hY.js";import{s as de}from"./snippet.xhmr1ywJ.js";import{b as Oe}from"./this.B23tdsYu.js";import{w as Ea}from"./index.BU3V9-NS.js";import{i as Ye}from"./tweened.CQQvc4Vq.js";import{I as Ta}from"./Input.Bj_i2TLU.js";import{I as Ca,a as Sa}from"./CheckIcon.Cjxxxfsf.js";import{u as Na}from"./i18n.svelte.BTGsPiz_.js";function Pe(e,t,o,a,i){var s=e,n="",c;ea(()=>{if(n===(n=t()??"")){K&&_e();return}c!==void 0&&(la(c),c=void 0),n!==""&&(c=aa(()=>{if(K){$e.data;for(var v=_e(),f=v;v!==null&&(v.nodeType!==8||v.data!=="");)f=v,v=ta(v);if(v===null)throw sa(),oa;Se($e,f),s=ia(v);return}var $=n+"",h=fa($);Se(ra(h),h.lastChild),s.before(h)}))})}function Ma(e,t,o=t){var a=na();Te(e,"input",i=>{var s=i?e.defaultValue:e.value;if(s=ue(e)?me(s):s,o(s),a&&s!==(s=t())){var n=e.selectionStart,c=e.selectionEnd;e.value=s??"",c!==null&&(e.selectionStart=n,e.selectionEnd=Math.min(c,e.value.length))}}),(K&&e.defaultValue!==e.value||Ie(t)==null&&e.value)&&o(ue(e)?me(e.value):e.value),ie(()=>{var i=t();ue(e)&&i===me(e.value)||e.type==="date"&&!i&&!e.value||i!==e.value&&(e.value=i??"")})}function Da(e,t,o=t){Te(e,"change",a=>{var i=a?e.defaultChecked:e.checked;o(i)}),(K&&e.defaultChecked!==e.checked||Ie(t)==null)&&o(e.checked),ie(()=>{var a=t();e.checked=!!a})}function ue(e){var t=e.type;return t==="number"||t==="range"}function me(e){return e===""?null:+e}function Aa(e,t,o=t){var a=e==="x",i=()=>Ce(()=>{s=!0,clearTimeout(n),n=setTimeout(c,100),o(window[a?"scrollX":"scrollY"])});addEventListener("scroll",i,{passive:!0});var s=!1,n,c=()=>{s=!1},v=!0;ie(()=>{var f=t();v?v=!1:!s&&f!=null&&(s=!0,clearTimeout(n),scrollTo(window.scrollX,f),n=setTimeout(c,100))}),va(i),ca(()=>{removeEventListener("scroll",i)})}function Ra(e,t){ma(window,["resize"],()=>Ce(()=>t(window[e])))}var Ua=(e,t,o)=>t(l(o)),ja=C('<button class="btn font-label svelte-n2aryx"> </button>'),Oa=C('<div class="bar noselect svelte-n2aryx"></div>');function Ya(e,t){let o=E(t,"labels",19,()=>[]),a=E(t,"selected",15);var i=Oa();De(i,21,o,ba,(s,n)=>{var c=ja();c.__click=[Ua,a,n];var v=m(c,!0);u(c),y(()=>{j(c,"data-selected",a()===l(n)),I(v,l(n))}),U("keypress",c,()=>a(l(n))),k(s,c)}),u(i),k(e,i)}q(["click"]);function fe(e,t,o,a){if(typeof o=="number"||Ye(o)){const i=a-o,s=(o-t)/(e.dt||1/60),n=e.opts.stiffness*i,c=e.opts.damping*s,v=(n-c)*e.inv_mass,f=(s+v)*e.dt;return Math.abs(f)<e.opts.precision&&Math.abs(i)<e.opts.precision?a:(e.settled=!1,Ye(o)?new Date(o.getTime()+f):o+f)}else{if(Array.isArray(o))return o.map((i,s)=>fe(e,t[s],o[s],a[s]));if(typeof o=="object"){const i={};for(const s in o)i[s]=fe(e,t[s],o[s],a[s]);return i}else throw new Error(`Cannot spring ${typeof o} values`)}}function pe(e,t={}){const o=Ea(e),{stiffness:a=.15,damping:i=.8,precision:s=.01}=t;let n,c,v,f=e,$=e,h=1,M=0,N=!1;function d(b,p={}){$=b;const x=v={};return e==null||p.hard||r.stiffness>=1&&r.damping>=1?(N=!0,n=Ae.now(),f=b,o.set(e=$),Promise.resolve()):(p.soft&&(M=1/((p.soft===!0?.5:+p.soft)*60),h=0),c||(n=Ae.now(),N=!1,c=xa(w=>{if(N)return N=!1,c=null,!1;h=Math.min(h+M,1);const D={inv_mass:h,opts:r,settled:!0,dt:(w-n)*60/1e3},O=fe(D,f,e,$);return n=w,f=e,o.set(e=O),D.settled&&(c=null),!D.settled})),new Promise(w=>{c.promise.then(()=>{x===v&&w()})}))}const r={set:d,update:(b,p)=>d(b($,e),p),subscribe:o.subscribe,stiffness:a,damping:i,precision:s};return r}var Pa=C('<div class="tooltip svelte-op12yu"><!></div>'),Xa=C('<div role="none"><!> <!></div>');function be(e,t){Q(t,!0);const o=ne(),a=()=>ve(l(f),"$coords",o);let i=E(t,"xOffset",3,10),s=E(t,"yOffset",3,10),n=E(t,"text",3,""),c=E(t,"html",3,""),v=L(!1),f=L(void 0),$;Ee(()=>{ka(A(f,H(pe({x:(window==null?void 0:window.innerWidth)/2,y:window.innerHeight/2},{stiffness:.1,damping:.6}))),"$coords",o)}),da(()=>{clearTimeout($)});function h(){clearTimeout($),A(v,!0)}function M(){$=setTimeout(()=>{A(v,!1)},100)}function N(x){l(f).set({x:x.clientX+i(),y:x.clientY+s()})}var d=Xa();d.__mouseover=h,d.__mouseout=M,d.__mousemove=N;var r=m(d);de(r,()=>t.children??re);var b=_(r,2);{var p=x=>{var w=Pa(),D=m(w);{var O=S=>{var g=Ne();y(()=>I(g,n())),k(S,g)},Z=S=>{var g=Me(),R=le(g);{var J=X=>{var W=Me(),z=le(W);Pe(z,c),k(X,W)};V(R,X=>{c()&&X(J)},!0)}k(S,g)};V(D,S=>{n()?S(O):S(Z,!1)})}u(w),y(()=>j(w,"style",`top: ${`${a().y}px`??""}; left: ${`${a().x}px`??""}`)),Re(7,w,()=>ha,()=>({delay:400,duration:200})),k(x,w)};V(b,x=>{l(v)&&x(p)})}u(d),U("focus",d,h),U("blur",d,M),k(e,d),ee()}q(["mouseover","mouseout","mousemove"]);var Ha=C('<div role="switch" tabindex="0" class="outer svelte-1mo9pov"><div class="inner svelte-1mo9pov"></div></div>');function Wa(e,t){Q(t,!0);const o=ne(),a=()=>ve(n,"$margin",o);let i=E(t,"selected",15,!1);const s=11;let n=pe(0,{stiffness:.15,damping:.5});ce(()=>{n.set(i()?s:0)});function c(){i(!i())}var v=Ha();v.__click=c;var f=m(v);u(v),y(()=>{j(v,"aria-checked",i()),Ue(v,"selectedOuter",i()),j(f,"style",`margin-left: ${`${a()}px`??""}`),Ue(f,"selected",i())}),U("keypress",v,c),k(e,v),ee()}q(["click"]);var Ga=pa('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"></path></svg>');function Xe(e,t){let o=E(t,"color",3,"var(--col-text)"),a=E(t,"opacity",3,.9),i=E(t,"width",3,20);var s=Ga();j(s,"stroke-width",2),y(()=>{j(s,"width",i()),j(s,"color",o()),j(s,"opacity",a())}),k(e,s)}var La=C('<div class="body svelte-1xshgki"><!></div>'),Va=C('<div class="container svelte-1xshgki"><div class="containerHeader svelte-1xshgki"><div role="button" tabindex="0" class="expand svelte-1xshgki"><div><!></div></div> <div class="header svelte-1xshgki"><!></div></div> <!></div>');function He(e,t){Q(t,!0);const o=ne(),a=()=>ve(h,"$rotate",o);let i=E(t,"idx",11,0),s=E(t,"show",15),n=E(t,"expandedCallback",3,()=>{}),c=L(!1),v=L(void 0),f=L(void 0),$=i()%2===0?"2px solid var(--col-acnt)":"2px solid var(--col-acnta)";const h=pe(0,{stiffness:.1,damping:.4});function M(){!s()&&n()&&n()(),s(!s())}function N(){const g=l(v).offsetTop+l(f).scrollHeight+100;window.innerHeight+window.scrollY-g<0&&window.scroll({top:g,behavior:"smooth"})}ce(()=>{s()?h.set(90):h.set(0)}),ce(()=>{s()&&l(f)&&setTimeout(()=>{N()},100)});var d=Va(),r=m(d),b=m(r);b.__click=M;var p=m(b),x=m(p),w=ae(()=>l(c)?"var(--col-act2a)":"var(--col-act2)");Xe(x,{get color(){return l(w)}}),u(p),u(b);var D=_(b,2),O=m(D);de(O,()=>t.header??re),u(D),u(r);var Z=_(r,2);{var S=g=>{var R=La(),J=m(R);de(J,()=>t.body??re),u(R),Oe(R,X=>A(f,X),()=>l(f)),Re(7,R,()=>wa,()=>({duration:200})),k(g,R)};V(Z,g=>{s()&&g(S)})}u(d),Oe(d,g=>A(v,g),()=>l(v)),y(()=>{ga(d,"border-left",s()?$:"none"),j(p,"style",`rotate: ${a()??""}deg`)}),U("mouseenter",b,()=>A(c,!0)),U("mouseleave",b,()=>A(c,!1)),U("keypress",b,M),k(e,d),ee()}q(["click"]);var Za=C('<div class="device-header svelte-oumbix"><div class="device-head font-mono svelte-oumbix"> </div></div>'),Ja=(e,t,o)=>t(l(o).id),za=C('<div role="button" tabindex="0" class="icon-btn-input svelte-oumbix"><!></div>'),Ba=(e,t,o)=>t(l(o).id),Fa=C('<div role="button" tabindex="0" class="icon-btn-value svelte-oumbix"><!></div>'),qa=C('<div class="unit svelte-oumbix"><div class="label font-label svelte-oumbix"> </div> <div class="row svelte-oumbix"><div class="value svelte-oumbix"> </div> <!></div></div>'),Ka=C('<div class="device svelte-oumbix"><div class="unit svelte-oumbix"><div class="label font-label svelte-oumbix"> </div> <div class="value font-mono svelte-oumbix"> </div></div> <div class="row svelte-oumbix"><!> <!></div> <div class="unit svelte-oumbix"><div class="label font-label svelte-oumbix"> </div> <div class="value svelte-oumbix"> </div></div> <div class="unit svelte-oumbix"><div class="label font-label svelte-oumbix"> </div> <div class="value svelte-oumbix"> </div></div> <!> <div class="unit svelte-oumbix"><div class="label font-label svelte-oumbix"> </div> <div class="value svelte-oumbix"> </div></div></div>'),Qa=C('<div class="head svelte-oumbix"> </div> <div class="devices svelte-oumbix"></div>',1);function et(e,t){Q(t,!0);let o=E(t,"userId",3,""),a=Na(),i=L(H([])),s=H({}),n=H({});Ee(()=>{c()});async function c(){let d=await ya(o()),r=await d.json();if(d.ok){for(let b of r)n[b.id]=b.name;A(i,H(r))}else console.error("error fetching devices: "+r.message)}async function v(d){let r=n[d];if($a.test(r))s[d]="";else{s[d]=(a==null?void 0:a.common.invalidInput)||"Invalid Input";return}let b={device_id:d,name:r},p=await _a(o(),b);if(p.ok){s[d]="";for(let x of l(i))if(x.id===d){x.name=r;break}A(i,H([...l(i)])),n[d]=r}else{let x=await p.json();console.error(x)}}async function f(d){let r={device_id:d},b=await Ia(o(),r);if(b.ok){for(let p of l(i))if(p.id===d){p.refresh_exp=void 0;break}A(i,H([...l(i)]))}else{let p=await b.json();console.error(p)}}var $=Qa(),h=le($),M=m(h,!0);u(h);var N=_(h,2);De(N,21,()=>l(i),d=>d.id,(d,r)=>{He(d,{header:b=>{var p=Za(),x=m(p),w=m(x,!0);u(x),u(p),y(()=>I(w,l(r).name)),k(b,p)},body:b=>{var p=Ka(),x=m(p),w=m(x),D=m(w,!0);y(()=>I(D,(a==null?void 0:a.account.deviceId.toUpperCase())||"ID")),u(w);var O=_(w,2),Z=m(O,!0);u(O),u(x);var S=_(x,2),g=m(S),R=ae(()=>(a==null?void 0:a.account.deviceName.toUpperCase())||"Name");Ta(g,{autocomplete:"off",get placeholder(){return l(R)},get value(){return n[l(r).id]},set value(T){n[l(r).id]=T},get error(){return s[l(r).id]},set error(T){s[l(r).id]=T},$$events:{enter:()=>v(l(r).id)},children:(T,G)=>{ua();var Y=Ne();y(()=>I(Y,(a==null?void 0:a.account.deviceName.toUpperCase())||"NAME")),k(T,Y)},$$slots:{default:!0}});var J=_(g,2);{var X=T=>{var G=ae(()=>(a==null?void 0:a.common.save)||"Save");be(T,{get text(){return l(G)},children:(Y,ye)=>{var P=za();P.__click=[Ja,v,r];var B=m(P);Ca(B,{color:"var(--col-ok)",width:24}),u(P),U("keypress",P,()=>v(l(r).id)),k(Y,P)},$$slots:{default:!0}})};V(J,T=>{n[l(r).id]!=l(r).name&&T(X)})}u(S);var W=_(S,2),z=m(W),We=m(z,!0);y(()=>I(We,(a==null?void 0:a.account.regDate.toUpperCase())||"REGISTRATION DATE")),u(z);var xe=_(z,2),Ge=m(xe,!0);u(xe),u(W);var te=_(W,2),se=m(te),Le=m(se,!0);y(()=>I(Le,(a==null?void 0:a.account.accessExp.toUpperCase())||"ACCESS EXPIRES")),u(se);var he=_(se,2),Ve=m(he,!0);y(()=>I(Ve,je(l(r).access_exp))),u(he),u(te);var we=_(te,2);{var Ze=T=>{var G=qa(),Y=m(G),ye=m(Y,!0);y(()=>I(ye,(a==null?void 0:a.account.accessRenew.toUpperCase())||"ACCESS RENEW UNTIL")),u(Y);var P=_(Y,2),B=m(P),Be=m(B,!0);y(()=>I(Be,je(l(r).refresh_exp))),u(B);var Fe=_(B,2),qe=ae(()=>(a==null?void 0:a.account.accessRenewDelete)||"Delete the possibility to renew");be(Fe,{get text(){return l(qe)},children:(Ke,at)=>{var F=Fa();F.__click=[Ba,f,r];var Qe=m(F);Sa(Qe,{color:"var(--col-err)",width:24}),u(F),U("keypress",F,()=>f(l(r).id)),k(Ke,F)},$$slots:{default:!0}}),u(P),u(G),k(T,G)};V(we,T=>{l(r).refresh_exp&&T(Ze)})}var ke=_(we,2),oe=m(ke),Je=m(oe,!0);y(()=>I(Je,(a==null?void 0:a.account.regIp.toUpperCase())||"REGISTRATION FROM IP")),u(oe);var ge=_(oe,2),ze=m(ge,!0);u(ge),u(ke),u(p),y(()=>{I(Z,l(r).id),I(Ge,l(r).created),I(ze,l(r).peer_ip)}),k(b,p)},$$slots:{header:!0,body:!0}})}),u(N),y(()=>I(M,(a==null?void 0:a.account.devicesDesc)||"Devices linked to this account")),k(e,$),ee()}q(["click"]);export{et as D,He as E,Xe as I,Wa as S,Ya as T,be as a,Ma as b,Ra as c,Aa as d,Da as e,Pe as h};
diff --git a/static/v1/_app/immutable/chunks/Devices.BuQD3GeY.js.br b/static/v1/_app/immutable/chunks/Devices.BuQD3GeY.js.br
new file mode 100644
index 000000000..aca356e93
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Devices.BuQD3GeY.js.br differ
diff --git a/static/v1/_app/immutable/chunks/Devices.BuQD3GeY.js.gz b/static/v1/_app/immutable/chunks/Devices.BuQD3GeY.js.gz
new file mode 100644
index 000000000..db3f3e062
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Devices.BuQD3GeY.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/Error.CsY9Wg-p.js b/static/v1/_app/immutable/chunks/Error.CsY9Wg-p.js
new file mode 100644
index 000000000..c1759953d
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/Error.CsY9Wg-p.js
@@ -0,0 +1,1 @@
+import{a as y,b as h}from"./disclose-version.DZhRUPAc.js";import{p as j,o as M,a as w,a0 as B,g as s,j as x,a1 as i,a2 as G,_ as g,a3 as u,a5 as m}from"./index-client.CGppiJvc.js";import{d as H,s as b}from"./render.D4MwAWTL.js";import{i as I}from"./if.DUA6Hpfn.js";import{p as $}from"./proxy.DB4Km9hY.js";import{L as J}from"./LangSelector.mSh8cV6Q.js";import{M as N,C as O}from"./ContentCenter.CsjyBf2d.js";import{p as S}from"./props.Df_pGDSd.js";import{u as W}from"./is_dev.svelte.sP_MjoCE.js";import{W as X,X as q}from"./dataFetching.Dto1xJW6.js";function z(t,o){let a;return o==="json"?a={"Content-Type":"application/json",Accept:"application/json"}:a={"Content-type":"application/x-www-form-urlencoded",Accept:"application/json"},a}async function D(t,o="json"){return F("GET",t,o)}async function F(t,o,a){let r=await fetch(o,{method:t,headers:z(t,a),redirect:"manual"});return await K(r)}async function K(t,o){let a={body:void 0,text:void 0,error:void 0};return t.ok?t.headers.get("content-type")==="application/json"?a.body=await t.json():a.text=await t.text():a.error=await t.json(),a}function C(t,o){j(o,!0);let a=S(o,"value",15);M(async()=>{if(W()){let e=await D(`/auth/v1/template/${o.id}`);e.error?console.error(e.error):e.text&&r(e.text)}else{let e=document.getElementById(o.id);e&&r(e.innerHTML)}});function r(e){typeof a()=="boolean"?a(e==="true"):typeof a()=="string"?a(e):a(JSON.parse(e))}w()}var P=h('<div class="flex-col"><h1> </h1> <br> <p> </p> <!> <!></div>'),Q=h("<!> <!> <!>",1);function R(t,o){j(o,!0);let a=g(""),r=g("");var e=Q(),f=B(e);C(f,{id:X,get value(){return s(a)},set value(n){x(a,$(n))}});var d=i(f,2);C(d,{id:q,get value(){return s(r)},set value(n){x(r,$(n))}});var T=i(d,2);N(T,{children:(n,U)=>{O(n,{children:(k,_)=>{var l=P(),p=u(l),A=u(p,!0);m(p);var c=i(p,4),E=u(c,!0);m(c);var v=i(c,2);I(v,V=>{});var L=i(v,2);J(L,{absolute:!0}),m(l),G(()=>{b(A,s(a)),b(E,s(r))}),y(k,l)},$$slots:{default:!0}})},$$slots:{default:!0}}),y(t,e),w()}H(["click"]);export{R as E};
diff --git a/static/v1/_app/immutable/chunks/Error.CsY9Wg-p.js.br b/static/v1/_app/immutable/chunks/Error.CsY9Wg-p.js.br
new file mode 100644
index 000000000..43c35bb02
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Error.CsY9Wg-p.js.br differ
diff --git a/static/v1/_app/immutable/chunks/Error.CsY9Wg-p.js.gz b/static/v1/_app/immutable/chunks/Error.CsY9Wg-p.js.gz
new file mode 100644
index 000000000..9c552cfc6
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Error.CsY9Wg-p.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/Input.Bj_i2TLU.js b/static/v1/_app/immutable/chunks/Input.Bj_i2TLU.js
new file mode 100644
index 000000000..df6744965
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/Input.Bj_i2TLU.js
@@ -0,0 +1,4 @@
+import{a as Ee,b as Oe}from"./disclose-version.DZhRUPAc.js";import{p as tt,a7 as st,n as rt,a1 as Se,a2 as Ae,a as nt,a3 as I,a5 as U,a6 as it}from"./index-client.CGppiJvc.js";import{s as at}from"./render.D4MwAWTL.js";import{i as ot}from"./if.DUA6Hpfn.js";import{s as ut}from"./snippet.xhmr1ywJ.js";import{e as lt,t as ct,b as ht,s as pt,g as ft}from"./Loading.FF_EHyHU.js";import{y as Y}from"./dataFetching.Dto1xJW6.js";import{p as q,r as dt}from"./props.Df_pGDSd.js";import{g as mt}from"./helpers.DVmWh-6p.js";function vt(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function j(r){this._maxSize=r,this.clear()}j.prototype.clear=function(){this._size=0,this._values=Object.create(null)},j.prototype.get=function(r){return this._values[r]},j.prototype.set=function(r,e){return this._size>=this._maxSize&&this.clear(),r in this._values||this._size++,this._values[r]=e};var yt=/[^.^\]^[]+|(?=\[\]|\.\.)/g,je=/^\d+$/,gt=/^\d/,bt=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,xt=/^\s*(['"]?)(.*?)(\1)\s*$/,te=512,De=new j(te),Ce=new j(te),ze=new j(te),D={Cache:j,split:re,normalizePath:se,setter:function(r){var e=se(r);return Ce.get(r)||Ce.set(r,function(t,s){for(var n=0,i=e.length,a=t;n<i-1;){var o=e[n];if(o==="__proto__"||o==="constructor"||o==="prototype")return t;a=a[e[n++]]}a[e[n]]=s})},getter:function(r,e){var t=se(r);return ze.get(r)||ze.set(r,function(s){for(var n=0,i=t.length;n<i;)if(s!=null||!e)s=s[t[n++]];else return;return s})},join:function(r){return r.reduce(function(e,t){return e+(ne(t)||je.test(t)?"["+t+"]":(e?".":"")+t)},"")},forEach:function(r,e,t){wt(Array.isArray(r)?r:re(r),e,t)}};function se(r){return De.get(r)||De.set(r,re(r).map(function(e){return e.replace(xt,"$2")}))}function re(r){return r.match(yt)||[""]}function wt(r,e,t){var s=r.length,n,i,a,o;for(i=0;i<s;i++)n=r[i],n&&(Tt(n)&&(n='"'+n+'"'),o=ne(n),a=!o&&/^\d+$/.test(n),e.call(t,n,o,a,i,r))}function ne(r){return typeof r=="string"&&r&&["'",'"'].indexOf(r.charAt(0))!==-1}function _t(r){return r.match(gt)&&!r.match(je)}function Ft(r){return bt.test(r)}function Tt(r){return!ne(r)&&(_t(r)||Ft(r))}const $t=/[A-Z\xc0-\xd6\xd8-\xde]?[a-z\xdf-\xf6\xf8-\xff]+(?:['’](?:d|ll|m|re|s|t|ve))?(?=[\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000]|[A-Z\xc0-\xd6\xd8-\xde]|$)|(?:[A-Z\xc0-\xd6\xd8-\xde]|[^\ud800-\udfff\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\d+\u2700-\u27bfa-z\xdf-\xf6\xf8-\xffA-Z\xc0-\xd6\xd8-\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=[\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000]|[A-Z\xc0-\xd6\xd8-\xde](?:[a-z\xdf-\xf6\xf8-\xff]|[^\ud800-\udfff\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\d+\u2700-\u27bfa-z\xdf-\xf6\xf8-\xffA-Z\xc0-\xd6\xd8-\xde])|$)|[A-Z\xc0-\xd6\xd8-\xde]?(?:[a-z\xdf-\xf6\xf8-\xff]|[^\ud800-\udfff\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\d+\u2700-\u27bfa-z\xdf-\xf6\xf8-\xffA-Z\xc0-\xd6\xd8-\xde])+(?:['’](?:d|ll|m|re|s|t|ve))?|[A-Z\xc0-\xd6\xd8-\xde]+(?:['’](?:D|LL|M|RE|S|T|VE))?|\d*(?:1ST|2ND|3RD|(?![123])\dTH)(?=\b|[a-z_])|\d*(?:1st|2nd|3rd|(?![123])\dth)(?=\b|[A-Z_])|\d+|(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff]|\ud83c[\udffb-\udfff])?)*/g,K=r=>r.match($t)||[],J=r=>r[0].toUpperCase()+r.slice(1),ie=(r,e)=>K(r).join(e).toLowerCase(),Ve=r=>K(r).reduce((e,t)=>`${e}${e?t[0].toUpperCase()+t.slice(1).toLowerCase():t.toLowerCase()}`,""),kt=r=>J(Ve(r)),Et=r=>ie(r,"_"),Ot=r=>ie(r,"-"),St=r=>J(ie(r," ")),At=r=>K(r).map(J).join(" ");var ae={words:K,upperFirst:J,camelCase:Ve,pascalCase:kt,snakeCase:Et,kebabCase:Ot,sentenceCase:St,titleCase:At},oe={exports:{}};oe.exports=function(r){return Ne(jt(r),r)},oe.exports.array=Ne;function Ne(r,e){var t=r.length,s=new Array(t),n={},i=t,a=Dt(e),o=Ct(r);for(e.forEach(function(l){if(!o.has(l[0])||!o.has(l[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});i--;)n[i]||u(r[i],i,new Set);return s;function u(l,c,h){if(h.has(l)){var p;try{p=", node was:"+JSON.stringify(l)}catch{p=""}throw new Error("Cyclic dependency"+p)}if(!o.has(l))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(l));if(!n[c]){n[c]=!0;var f=a.get(l)||new Set;if(f=Array.from(f),c=f.length){h.add(l);do{var y=f[--c];u(y,o.get(y),h)}while(c);h.delete(l)}s[--t]=l}}}function jt(r){for(var e=new Set,t=0,s=r.length;t<s;t++){var n=r[t];e.add(n[0]),e.add(n[1])}return Array.from(e)}function Dt(r){for(var e=new Map,t=0,s=r.length;t<s;t++){var n=r[t];e.has(n[0])||e.set(n[0],new Set),e.has(n[1])||e.set(n[1],new Set),e.get(n[0]).add(n[1])}return e}function Ct(r){for(var e=new Map,t=0,s=r.length;t<s;t++)e.set(r[t],t);return e}var zt=oe.exports;const Vt=vt(zt),Nt=Object.prototype.toString,Mt=Error.prototype.toString,Pt=RegExp.prototype.toString,It=typeof Symbol<"u"?Symbol.prototype.toString:()=>"",Ut=/^Symbol\((.*)\)(.*)$/;function qt(r){return r!=+r?"NaN":r===0&&1/r<0?"-0":""+r}function Me(r,e=!1){if(r==null||r===!0||r===!1)return""+r;const t=typeof r;if(t==="number")return qt(r);if(t==="string")return e?`"${r}"`:r;if(t==="function")return"[Function "+(r.name||"anonymous")+"]";if(t==="symbol")return It.call(r).replace(Ut,"Symbol($1)");const s=Nt.call(r).slice(8,-1);return s==="Date"?isNaN(r.getTime())?""+r:r.toISOString(r):s==="Error"||r instanceof Error?"["+Mt.call(r)+"]":s==="RegExp"?Pt.call(r):null}function T(r,e){let t=Me(r,e);return t!==null?t:JSON.stringify(r,function(s,n){let i=Me(this[s],e);return i!==null?i:n},2)}function Pe(r){return r==null?[]:[].concat(r)}let Ie,Ue,qe,Rt=/\$\{\s*(\w+)\s*\}/g;Ie=Symbol.toStringTag;class Re{constructor(e,t,s,n){this.name=void 0,this.message=void 0,this.value=void 0,this.path=void 0,this.type=void 0,this.params=void 0,this.errors=void 0,this.inner=void 0,this[Ie]="Error",this.name="ValidationError",this.value=t,this.path=s,this.type=n,this.errors=[],this.inner=[],Pe(e).forEach(i=>{if(m.isError(i)){this.errors.push(...i.errors);const a=i.inner.length?i.inner:[i];this.inner.push(...a)}else this.errors.push(i)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0]}}Ue=Symbol.hasInstance,qe=Symbol.toStringTag;class m extends Error{static formatError(e,t){const s=t.label||t.path||"this";return t=Object.assign({},t,{path:s,originalPath:t.path}),typeof e=="string"?e.replace(Rt,(n,i)=>T(t[i])):typeof e=="function"?e(t):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,t,s,n,i){const a=new Re(e,t,s,n);if(i)return a;super(),this.value=void 0,this.path=void 0,this.type=void 0,this.params=void 0,this.errors=[],this.inner=[],this[qe]="Error",this.name=a.name,this.message=a.message,this.type=a.type,this.value=a.value,this.path=a.path,this.errors=a.errors,this.inner=a.inner,Error.captureStackTrace&&Error.captureStackTrace(this,m)}static[Ue](e){return Re[Symbol.hasInstance](e)||super[Symbol.hasInstance](e)}}let $={default:"${path} is invalid",required:"${path} is a required field",defined:"${path} must be defined",notNull:"${path} cannot be null",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:r,type:e,value:t,originalValue:s})=>{const n=s!=null&&s!==t?` (cast from the value \`${T(s,!0)}\`).`:".";return e!=="mixed"?`${r} must be a \`${e}\` type, but the final value was: \`${T(t,!0)}\``+n:`${r} must match the configured type. The validated value was: \`${T(t,!0)}\``+n}},b={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",datetime:"${path} must be a valid ISO date-time",datetime_precision:"${path} must be a valid ISO date-time with a sub-second precision of exactly ${precision} digits",datetime_offset:'${path} must be a valid ISO date-time with UTC "Z" timezone',trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"},O={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"},ue={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"},le={isValue:"${path} field must be ${value}"},B={noUnknown:"${path} field has unspecified keys: ${unknown}",exact:"${path} object contains unknown properties: ${properties}"},G={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must have ${length} items"},Ze={notType:r=>{const{path:e,value:t,spec:s}=r,n=s.types.length;if(Array.isArray(t)){if(t.length<n)return`${e} tuple value has too few items, expected a length of ${n} but got ${t.length} for value: \`${T(t,!0)}\``;if(t.length>n)return`${e} tuple value has too many items, expected a length of ${n} but got ${t.length} for value: \`${T(t,!0)}\``}return m.formatError($.notType,r)}};var Le=Object.assign(Object.create(null),{mixed:$,string:b,number:O,date:ue,object:B,array:G,boolean:le,tuple:Ze});const C=r=>r&&r.__isYupSchema__;class W{static fromOptions(e,t){if(!t.then&&!t.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:s,then:n,otherwise:i}=t,a=typeof s=="function"?s:(...o)=>o.every(u=>u===s);return new W(e,(o,u)=>{var l;let c=a(...o)?n:i;return(l=c==null?void 0:c(u))!=null?l:u})}constructor(e,t){this.fn=void 0,this.refs=e,this.refs=e,this.fn=t}resolve(e,t){let s=this.refs.map(i=>i.getValue(t==null?void 0:t.value,t==null?void 0:t.parent,t==null?void 0:t.context)),n=this.fn(s,e,t);if(n===void 0||n===e)return e;if(!C(n))throw new TypeError("conditions must return a schema object");return n.resolve(t)}}const H={context:"$",value:"."};function Zt(r,e){return new S(r,e)}class S{constructor(e,t={}){if(this.key=void 0,this.isContext=void 0,this.isValue=void 0,this.isSibling=void 0,this.path=void 0,this.getter=void 0,this.map=void 0,typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===H.context,this.isValue=this.key[0]===H.value,this.isSibling=!this.isContext&&!this.isValue;let s=this.isContext?H.context:this.isValue?H.value:"";this.path=this.key.slice(s.length),this.getter=this.path&&D.getter(this.path,!0),this.map=t.map}getValue(e,t,s){let n=this.isContext?s:this.isValue?e:t;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,t){return this.getValue(e,t==null?void 0:t.parent,t==null?void 0:t.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}}S.prototype.__isYupRef=!0;const F=r=>r==null;function z(r){function e({value:t,path:s="",options:n,originalValue:i,schema:a},o,u){const{name:l,test:c,params:h,message:p,skipAbsent:f}=r;let{parent:y,context:g,abortEarly:_=a.spec.abortEarly,disableStackTrace:x=a.spec.disableStackTrace}=n;function M(d){return S.isRef(d)?d.getValue(t,y,g):d}function R(d={}){const A=Object.assign({value:t,originalValue:i,label:a.spec.label,path:d.path||s,spec:a.spec,disableStackTrace:d.disableStackTrace||x},h,d.params);for(const ke of Object.keys(A))A[ke]=M(A[ke]);const $e=new m(m.formatError(d.message||p,A),t,A.path,d.type||l,A.disableStackTrace);return $e.params=A,$e}const P=_?o:u;let w={path:s,parent:y,type:l,from:n.from,createError:R,resolve:M,options:n,originalValue:i,schema:a};const k=d=>{m.isError(d)?P(d):d?u(null):P(R())},Z=d=>{m.isError(d)?P(d):o(d)};if(f&&F(t))return k(!0);let L;try{var Te;if(L=c.call(w,t,w),typeof((Te=L)==null?void 0:Te.then)=="function"){if(n.sync)throw new Error(`Validation test of type: "${w.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`);return Promise.resolve(L).then(k,Z)}}catch(d){Z(d);return}k(L)}return e.OPTIONS=r,e}function ce(r,e,t,s=t){let n,i,a;return e?(D.forEach(e,(o,u,l)=>{let c=u?o.slice(1,o.length-1):o;r=r.resolve({context:s,parent:n,value:t});let h=r.type==="tuple",p=l?parseInt(c,10):0;if(r.innerType||h){if(h&&!l)throw new Error(`Yup.reach cannot implicitly index into a tuple type. the path part "${a}" must contain an index to the tuple element, e.g. "${a}[0]"`);if(t&&p>=t.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${o}, in the path: ${e}. because there is no value at that index. `);n=t,t=t&&t[p],r=h?r.spec.types[p]:r.innerType}if(!l){if(!r.fields||!r.fields[c])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${a} which is a type: "${r.type}")`);n=t,t=t&&t[c],r=r.fields[c]}i=c,a=u?"["+o+"]":"."+o}),{schema:r,parent:n,parentPath:i}):{parent:n,parentPath:e,schema:r}}function Lt(r,e,t,s){return ce(r,e,t,s).schema}class X extends Set{describe(){const e=[];for(const t of this.values())e.push(S.isRef(t)?t.describe():t);return e}resolveAll(e){let t=[];for(const s of this.values())t.push(e(s));return t}clone(){return new X(this.values())}merge(e,t){const s=this.clone();return e.forEach(n=>s.add(n)),t.forEach(n=>s.delete(n)),s}}function V(r,e=new Map){if(C(r)||!r||typeof r!="object")return r;if(e.has(r))return e.get(r);let t;if(r instanceof Date)t=new Date(r.getTime()),e.set(r,t);else if(r instanceof RegExp)t=new RegExp(r),e.set(r,t);else if(Array.isArray(r)){t=new Array(r.length),e.set(r,t);for(let s=0;s<r.length;s++)t[s]=V(r[s],e)}else if(r instanceof Map){t=new Map,e.set(r,t);for(const[s,n]of r.entries())t.set(s,V(n,e))}else if(r instanceof Set){t=new Set,e.set(r,t);for(const s of r)t.add(V(s,e))}else if(r instanceof Object){t={},e.set(r,t);for(const[s,n]of Object.entries(r))t[s]=V(n,e)}else throw Error(`Unable to clone ${r}`);return t}class v{constructor(e){this.type=void 0,this.deps=[],this.tests=void 0,this.transforms=void 0,this.conditions=[],this._mutate=void 0,this.internalTests={},this._whitelist=new X,this._blacklist=new X,this.exclusiveTests=Object.create(null),this._typeCheck=void 0,this.spec=void 0,this.tests=[],this.transforms=[],this.withMutation(()=>{this.typeError($.notType)}),this.type=e.type,this._typeCheck=e.check,this.spec=Object.assign({strip:!1,strict:!1,abortEarly:!0,recursive:!0,disableStackTrace:!1,nullable:!1,optional:!0,coerce:!0},e==null?void 0:e.spec),this.withMutation(t=>{t.nonNullable()})}get _type(){return this.type}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;const t=Object.create(Object.getPrototypeOf(this));return t.type=this.type,t._typeCheck=this._typeCheck,t._whitelist=this._whitelist.clone(),t._blacklist=this._blacklist.clone(),t.internalTests=Object.assign({},this.internalTests),t.exclusiveTests=Object.assign({},this.exclusiveTests),t.deps=[...this.deps],t.conditions=[...this.conditions],t.tests=[...this.tests],t.transforms=[...this.transforms],t.spec=V(Object.assign({},this.spec,e)),t}label(e){let t=this.clone();return t.spec.label=e,t}meta(...e){if(e.length===0)return this.spec.meta;let t=this.clone();return t.spec.meta=Object.assign(t.spec.meta||{},e[0]),t}withMutation(e){let t=this._mutate;this._mutate=!0;let s=e(this);return this._mutate=t,s}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let t=this,s=e.clone();const n=Object.assign({},t.spec,s.spec);return s.spec=n,s.internalTests=Object.assign({},t.internalTests,s.internalTests),s._whitelist=t._whitelist.merge(e._whitelist,e._blacklist),s._blacklist=t._blacklist.merge(e._blacklist,e._whitelist),s.tests=t.tests,s.exclusiveTests=t.exclusiveTests,s.withMutation(i=>{e.tests.forEach(a=>{i.test(a.OPTIONS)})}),s.transforms=[...t.transforms,...s.transforms],s}isType(e){return e==null?!!(this.spec.nullable&&e===null||this.spec.optional&&e===void 0):this._typeCheck(e)}resolve(e){let t=this;if(t.conditions.length){let s=t.conditions;t=t.clone(),t.conditions=[],t=s.reduce((n,i)=>i.resolve(n,e),t),t=t.resolve(e)}return t}resolveOptions(e){var t,s,n,i;return Object.assign({},e,{from:e.from||[],strict:(t=e.strict)!=null?t:this.spec.strict,abortEarly:(s=e.abortEarly)!=null?s:this.spec.abortEarly,recursive:(n=e.recursive)!=null?n:this.spec.recursive,disableStackTrace:(i=e.disableStackTrace)!=null?i:this.spec.disableStackTrace})}cast(e,t={}){let s=this.resolve(Object.assign({value:e},t)),n=t.assert==="ignore-optionality",i=s._cast(e,t);if(t.assert!==!1&&!s.isType(i)){if(n&&F(i))return i;let a=T(e),o=T(i);throw new TypeError(`The value of ${t.path||"field"} could not be cast to a value that satisfies the schema type: "${s.type}". 
+
+attempted value: ${a} 
+`+(o!==a?`result of cast: ${o}`:""))}return i}_cast(e,t){let s=e===void 0?e:this.transforms.reduce((n,i)=>i.call(this,n,e,this),e);return s===void 0&&(s=this.getDefault(t)),s}_validate(e,t={},s,n){let{path:i,originalValue:a=e,strict:o=this.spec.strict}=t,u=e;o||(u=this._cast(u,Object.assign({assert:!1},t)));let l=[];for(let c of Object.values(this.internalTests))c&&l.push(c);this.runTests({path:i,value:u,originalValue:a,options:t,tests:l},s,c=>{if(c.length)return n(c,u);this.runTests({path:i,value:u,originalValue:a,options:t,tests:this.tests},s,n)})}runTests(e,t,s){let n=!1,{tests:i,value:a,originalValue:o,path:u,options:l}=e,c=g=>{n||(n=!0,t(g,a))},h=g=>{n||(n=!0,s(g,a))},p=i.length,f=[];if(!p)return h([]);let y={value:a,originalValue:o,path:u,options:l,schema:this};for(let g=0;g<i.length;g++){const _=i[g];_(y,c,function(x){x&&(Array.isArray(x)?f.push(...x):f.push(x)),--p<=0&&h(f)})}}asNestedTest({key:e,index:t,parent:s,parentPath:n,originalParent:i,options:a}){const o=e??t;if(o==null)throw TypeError("Must include `key` or `index` for nested validations");const u=typeof o=="number";let l=s[o];const c=Object.assign({},a,{strict:!0,parent:s,value:l,originalValue:i[o],key:void 0,[u?"index":"key"]:o,path:u||o.includes(".")?`${n||""}[${u?o:`"${o}"`}]`:(n?`${n}.`:"")+e});return(h,p,f)=>this.resolve(c)._validate(l,c,p,f)}validate(e,t){var s;let n=this.resolve(Object.assign({},t,{value:e})),i=(s=t==null?void 0:t.disableStackTrace)!=null?s:n.spec.disableStackTrace;return new Promise((a,o)=>n._validate(e,t,(u,l)=>{m.isError(u)&&(u.value=l),o(u)},(u,l)=>{u.length?o(new m(u,l,void 0,void 0,i)):a(l)}))}validateSync(e,t){var s;let n=this.resolve(Object.assign({},t,{value:e})),i,a=(s=t==null?void 0:t.disableStackTrace)!=null?s:n.spec.disableStackTrace;return n._validate(e,Object.assign({},t,{sync:!0}),(o,u)=>{throw m.isError(o)&&(o.value=u),o},(o,u)=>{if(o.length)throw new m(o,e,void 0,void 0,a);i=u}),i}isValid(e,t){return this.validate(e,t).then(()=>!0,s=>{if(m.isError(s))return!1;throw s})}isValidSync(e,t){try{return this.validateSync(e,t),!0}catch(s){if(m.isError(s))return!1;throw s}}_getDefault(e){let t=this.spec.default;return t==null?t:typeof t=="function"?t.call(this,e):V(t)}getDefault(e){return this.resolve(e||{})._getDefault(e)}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){return this.clone({strict:e})}nullability(e,t){const s=this.clone({nullable:e});return s.internalTests.nullable=z({message:t,name:"nullable",test(n){return n===null?this.schema.spec.nullable:!0}}),s}optionality(e,t){const s=this.clone({optional:e});return s.internalTests.optionality=z({message:t,name:"optionality",test(n){return n===void 0?this.schema.spec.optional:!0}}),s}optional(){return this.optionality(!0)}defined(e=$.defined){return this.optionality(!1,e)}nullable(){return this.nullability(!0)}nonNullable(e=$.notNull){return this.nullability(!1,e)}required(e=$.required){return this.clone().withMutation(t=>t.nonNullable(e).defined(e))}notRequired(){return this.clone().withMutation(e=>e.nullable().optional())}transform(e){let t=this.clone();return t.transforms.push(e),t}test(...e){let t;if(e.length===1?typeof e[0]=="function"?t={test:e[0]}:t=e[0]:e.length===2?t={name:e[0],test:e[1]}:t={name:e[0],message:e[1],test:e[2]},t.message===void 0&&(t.message=$.default),typeof t.test!="function")throw new TypeError("`test` is a required parameters");let s=this.clone(),n=z(t),i=t.exclusive||t.name&&s.exclusiveTests[t.name]===!0;if(t.exclusive&&!t.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return t.name&&(s.exclusiveTests[t.name]=!!t.exclusive),s.tests=s.tests.filter(a=>!(a.OPTIONS.name===t.name&&(i||a.OPTIONS.test===n.OPTIONS.test))),s.tests.push(n),s}when(e,t){!Array.isArray(e)&&typeof e!="string"&&(t=e,e=".");let s=this.clone(),n=Pe(e).map(i=>new S(i));return n.forEach(i=>{i.isSibling&&s.deps.push(i.key)}),s.conditions.push(typeof t=="function"?new W(n,t):W.fromOptions(n,t)),s}typeError(e){let t=this.clone();return t.internalTests.typeError=z({message:e,name:"typeError",skipAbsent:!0,test(s){return this.schema._typeCheck(s)?!0:this.createError({params:{type:this.schema.type}})}}),t}oneOf(e,t=$.oneOf){let s=this.clone();return e.forEach(n=>{s._whitelist.add(n),s._blacklist.delete(n)}),s.internalTests.whiteList=z({message:t,name:"oneOf",skipAbsent:!0,test(n){let i=this.schema._whitelist,a=i.resolveAll(this.resolve);return a.includes(n)?!0:this.createError({params:{values:Array.from(i).join(", "),resolved:a}})}}),s}notOneOf(e,t=$.notOneOf){let s=this.clone();return e.forEach(n=>{s._blacklist.add(n),s._whitelist.delete(n)}),s.internalTests.blacklist=z({message:t,name:"notOneOf",test(n){let i=this.schema._blacklist,a=i.resolveAll(this.resolve);return a.includes(n)?this.createError({params:{values:Array.from(i).join(", "),resolved:a}}):!0}}),s}strip(e=!0){let t=this.clone();return t.spec.strip=e,t}describe(e){const t=(e?this.resolve(e):this).clone(),{label:s,meta:n,optional:i,nullable:a}=t.spec;return{meta:n,label:s,optional:i,nullable:a,default:t.getDefault(e),type:t.type,oneOf:t._whitelist.describe(),notOneOf:t._blacklist.describe(),tests:t.tests.map(o=>({name:o.OPTIONS.name,params:o.OPTIONS.params})).filter((o,u,l)=>l.findIndex(c=>c.name===o.name)===u)}}}v.prototype.__isYupSchema__=!0;for(const r of["validate","validateSync"])v.prototype[`${r}At`]=function(e,t,s={}){const{parent:n,parentPath:i,schema:a}=ce(this,e,t,s.context);return a[r](n&&n[i],Object.assign({},s,{parent:n,path:e}))};for(const r of["equals","is"])v.prototype[r]=v.prototype.oneOf;for(const r of["not","nope"])v.prototype[r]=v.prototype.notOneOf;const Yt=()=>!0;function Ye(r){return new he(r)}class he extends v{constructor(e){super(typeof e=="function"?{type:"mixed",check:e}:Object.assign({type:"mixed",check:Yt},e))}}Ye.prototype=he.prototype;function pe(){return new fe}class fe extends v{constructor(){super({type:"boolean",check(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}}),this.withMutation(()=>{this.transform((e,t,s)=>{if(s.spec.coerce&&!s.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}isTrue(e=le.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(t){return F(t)||t===!0}})}isFalse(e=le.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(t){return F(t)||t===!1}})}default(e){return super.default(e)}defined(e){return super.defined(e)}optional(){return super.optional()}required(e){return super.required(e)}notRequired(){return super.notRequired()}nullable(){return super.nullable()}nonNullable(e){return super.nonNullable(e)}strip(e){return super.strip(e)}}pe.prototype=fe.prototype;const Kt=/^(\d{4}|[+-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,.](\d{1,}))?)?(?:(Z)|([+-])(\d{2})(?::?(\d{2}))?)?)?$/;function Jt(r){const e=de(r);if(!e)return Date.parse?Date.parse(r):Number.NaN;if(e.z===void 0&&e.plusMinus===void 0)return new Date(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond).valueOf();let t=0;return e.z!=="Z"&&e.plusMinus!==void 0&&(t=e.hourOffset*60+e.minuteOffset,e.plusMinus==="+"&&(t=0-t)),Date.UTC(e.year,e.month,e.day,e.hour,e.minute+t,e.second,e.millisecond)}function de(r){var e,t;const s=Kt.exec(r);return s?{year:E(s[1]),month:E(s[2],1)-1,day:E(s[3],1),hour:E(s[4]),minute:E(s[5]),second:E(s[6]),millisecond:s[7]?E(s[7].substring(0,3)):0,precision:(e=(t=s[7])==null?void 0:t.length)!=null?e:void 0,z:s[8]||void 0,plusMinus:s[9]||void 0,hourOffset:E(s[10]),minuteOffset:E(s[11])}:null}function E(r,e=0){return Number(r)||e}let Bt=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Gt=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,Ht=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,Qt="^\\d{4}-\\d{2}-\\d{2}",Wt="\\d{2}:\\d{2}:\\d{2}",Xt="(([+-]\\d{2}(:?\\d{2})?)|Z)",es=new RegExp(`${Qt}T${Wt}(\\.\\d+)?${Xt}$`),ts=r=>F(r)||r===r.trim(),ss={}.toString();function me(){return new ve}class ve extends v{constructor(){super({type:"string",check(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}}),this.withMutation(()=>{this.transform((e,t,s)=>{if(!s.spec.coerce||s.isType(e)||Array.isArray(e))return e;const n=e!=null&&e.toString?e.toString():e;return n===ss?e:n})})}required(e){return super.required(e).withMutation(t=>t.test({message:e||$.required,name:"required",skipAbsent:!0,test:s=>!!s.length}))}notRequired(){return super.notRequired().withMutation(e=>(e.tests=e.tests.filter(t=>t.OPTIONS.name!=="required"),e))}length(e,t=b.length){return this.test({message:t,name:"length",exclusive:!0,params:{length:e},skipAbsent:!0,test(s){return s.length===this.resolve(e)}})}min(e,t=b.min){return this.test({message:t,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(s){return s.length>=this.resolve(e)}})}max(e,t=b.max){return this.test({name:"max",exclusive:!0,message:t,params:{max:e},skipAbsent:!0,test(s){return s.length<=this.resolve(e)}})}matches(e,t){let s=!1,n,i;return t&&(typeof t=="object"?{excludeEmptyString:s=!1,message:n,name:i}=t:n=t),this.test({name:i||"matches",message:n||b.matches,params:{regex:e},skipAbsent:!0,test:a=>a===""&&s||a.search(e)!==-1})}email(e=b.email){return this.matches(Bt,{name:"email",message:e,excludeEmptyString:!0})}url(e=b.url){return this.matches(Gt,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=b.uuid){return this.matches(Ht,{name:"uuid",message:e,excludeEmptyString:!1})}datetime(e){let t="",s,n;return e&&(typeof e=="object"?{message:t="",allowOffset:s=!1,precision:n=void 0}=e:t=e),this.matches(es,{name:"datetime",message:t||b.datetime,excludeEmptyString:!0}).test({name:"datetime_offset",message:t||b.datetime_offset,params:{allowOffset:s},skipAbsent:!0,test:i=>{if(!i||s)return!0;const a=de(i);return a?!!a.z:!1}}).test({name:"datetime_precision",message:t||b.datetime_precision,params:{precision:n},skipAbsent:!0,test:i=>{if(!i||n==null)return!0;const a=de(i);return a?a.precision===n:!1}})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=b.trim){return this.transform(t=>t!=null?t.trim():t).test({message:e,name:"trim",test:ts})}lowercase(e=b.lowercase){return this.transform(t=>F(t)?t:t.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,skipAbsent:!0,test:t=>F(t)||t===t.toLowerCase()})}uppercase(e=b.uppercase){return this.transform(t=>F(t)?t:t.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,skipAbsent:!0,test:t=>F(t)||t===t.toUpperCase()})}}me.prototype=ve.prototype;let rs=r=>r!=+r;function ye(){return new ge}class ge extends v{constructor(){super({type:"number",check(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!rs(e)}}),this.withMutation(()=>{this.transform((e,t,s)=>{if(!s.spec.coerce)return e;let n=e;if(typeof n=="string"){if(n=n.replace(/\s/g,""),n==="")return NaN;n=+n}return s.isType(n)||n===null?n:parseFloat(n)})})}min(e,t=O.min){return this.test({message:t,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(s){return s>=this.resolve(e)}})}max(e,t=O.max){return this.test({message:t,name:"max",exclusive:!0,params:{max:e},skipAbsent:!0,test(s){return s<=this.resolve(e)}})}lessThan(e,t=O.lessThan){return this.test({message:t,name:"max",exclusive:!0,params:{less:e},skipAbsent:!0,test(s){return s<this.resolve(e)}})}moreThan(e,t=O.moreThan){return this.test({message:t,name:"min",exclusive:!0,params:{more:e},skipAbsent:!0,test(s){return s>this.resolve(e)}})}positive(e=O.positive){return this.moreThan(0,e)}negative(e=O.negative){return this.lessThan(0,e)}integer(e=O.integer){return this.test({name:"integer",message:e,skipAbsent:!0,test:t=>Number.isInteger(t)})}truncate(){return this.transform(e=>F(e)?e:e|0)}round(e){var t;let s=["ceil","floor","round","trunc"];if(e=((t=e)==null?void 0:t.toLowerCase())||"round",e==="trunc")return this.truncate();if(s.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+s.join(", "));return this.transform(n=>F(n)?n:Math[e](n))}}ye.prototype=ge.prototype;let Ke=new Date(""),ns=r=>Object.prototype.toString.call(r)==="[object Date]";function be(){return new N}class N extends v{constructor(){super({type:"date",check(e){return ns(e)&&!isNaN(e.getTime())}}),this.withMutation(()=>{this.transform((e,t,s)=>!s.spec.coerce||s.isType(e)||e===null?e:(e=Jt(e),isNaN(e)?N.INVALID_DATE:new Date(e)))})}prepareParam(e,t){let s;if(S.isRef(e))s=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${t}\` must be a Date or a value that can be \`cast()\` to a Date`);s=n}return s}min(e,t=ue.min){let s=this.prepareParam(e,"min");return this.test({message:t,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(n){return n>=this.resolve(s)}})}max(e,t=ue.max){let s=this.prepareParam(e,"max");return this.test({message:t,name:"max",exclusive:!0,params:{max:e},skipAbsent:!0,test(n){return n<=this.resolve(s)}})}}N.INVALID_DATE=Ke,be.prototype=N.prototype,be.INVALID_DATE=Ke;function is(r,e=[]){let t=[],s=new Set,n=new Set(e.map(([a,o])=>`${a}-${o}`));function i(a,o){let u=D.split(a)[0];s.add(u),n.has(`${o}-${u}`)||t.push([o,u])}for(const a of Object.keys(r)){let o=r[a];s.add(a),S.isRef(o)&&o.isSibling?i(o.path,a):C(o)&&"deps"in o&&o.deps.forEach(u=>i(u,a))}return Vt.array(Array.from(s),t).reverse()}function Je(r,e){let t=1/0;return r.some((s,n)=>{var i;if((i=e.path)!=null&&i.includes(s))return t=n,!0}),t}function Be(r){return(e,t)=>Je(r,e)-Je(r,t)}const Ge=(r,e,t)=>{if(typeof r!="string")return r;let s=r;try{s=JSON.parse(r)}catch{}return t.isType(s)?s:r};function Q(r){if("fields"in r){const e={};for(const[t,s]of Object.entries(r.fields))e[t]=Q(s);return r.setFields(e)}if(r.type==="array"){const e=r.optional();return e.innerType&&(e.innerType=Q(e.innerType)),e}return r.type==="tuple"?r.optional().clone({types:r.spec.types.map(Q)}):"optional"in r?r.optional():r}const as=(r,e)=>{const t=[...D.normalizePath(e)];if(t.length===1)return t[0]in r;let s=t.pop(),n=D.getter(D.join(t),!0)(r);return!!(n&&s in n)};let He=r=>Object.prototype.toString.call(r)==="[object Object]";function Qe(r,e){let t=Object.keys(r.fields);return Object.keys(e).filter(s=>t.indexOf(s)===-1)}const os=Be([]);function xe(r){return new we(r)}class we extends v{constructor(e){super({type:"object",check(t){return He(t)||typeof t=="function"}}),this.fields=Object.create(null),this._sortErrors=os,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{e&&this.shape(e)})}_cast(e,t={}){var s;let n=super._cast(e,t);if(n===void 0)return this.getDefault(t);if(!this._typeCheck(n))return n;let i=this.fields,a=(s=t.stripUnknown)!=null?s:this.spec.noUnknown,o=[].concat(this._nodes,Object.keys(n).filter(h=>!this._nodes.includes(h))),u={},l=Object.assign({},t,{parent:u,__validating:t.__validating||!1}),c=!1;for(const h of o){let p=i[h],f=h in n;if(p){let y,g=n[h];l.path=(t.path?`${t.path}.`:"")+h,p=p.resolve({value:g,context:t.context,parent:u});let _=p instanceof v?p.spec:void 0,x=_==null?void 0:_.strict;if(_!=null&&_.strip){c=c||h in n;continue}y=!t.__validating||!x?p.cast(n[h],l):n[h],y!==void 0&&(u[h]=y)}else f&&!a&&(u[h]=n[h]);(f!==h in u||u[h]!==n[h])&&(c=!0)}return c?u:n}_validate(e,t={},s,n){let{from:i=[],originalValue:a=e,recursive:o=this.spec.recursive}=t;t.from=[{schema:this,value:a},...i],t.__validating=!0,t.originalValue=a,super._validate(e,t,s,(u,l)=>{if(!o||!He(l)){n(u,l);return}a=a||l;let c=[];for(let h of this._nodes){let p=this.fields[h];!p||S.isRef(p)||c.push(p.asNestedTest({options:t,key:h,parent:l,parentPath:t.path,originalParent:a}))}this.runTests({tests:c,value:l,originalValue:a,options:t},s,h=>{n(h.sort(this._sortErrors).concat(u),l)})})}clone(e){const t=super.clone(e);return t.fields=Object.assign({},this.fields),t._nodes=this._nodes,t._excludedEdges=this._excludedEdges,t._sortErrors=this._sortErrors,t}concat(e){let t=super.concat(e),s=t.fields;for(let[n,i]of Object.entries(this.fields)){const a=s[n];s[n]=a===void 0?i:a}return t.withMutation(n=>n.setFields(s,[...this._excludedEdges,...e._excludedEdges]))}_getDefault(e){if("default"in this.spec)return super._getDefault(e);if(!this._nodes.length)return;let t={};return this._nodes.forEach(s=>{var n;const i=this.fields[s];let a=e;(n=a)!=null&&n.value&&(a=Object.assign({},a,{parent:a.value,value:a.value[s]})),t[s]=i&&"getDefault"in i?i.getDefault(a):void 0}),t}setFields(e,t){let s=this.clone();return s.fields=e,s._nodes=is(e,t),s._sortErrors=Be(Object.keys(e)),t&&(s._excludedEdges=t),s}shape(e,t=[]){return this.clone().withMutation(s=>{let n=s._excludedEdges;return t.length&&(Array.isArray(t[0])||(t=[t]),n=[...s._excludedEdges,...t]),s.setFields(Object.assign(s.fields,e),n)})}partial(){const e={};for(const[t,s]of Object.entries(this.fields))e[t]="optional"in s&&s.optional instanceof Function?s.optional():s;return this.setFields(e)}deepPartial(){return Q(this)}pick(e){const t={};for(const s of e)this.fields[s]&&(t[s]=this.fields[s]);return this.setFields(t,this._excludedEdges.filter(([s,n])=>e.includes(s)&&e.includes(n)))}omit(e){const t=[];for(const s of Object.keys(this.fields))e.includes(s)||t.push(s);return this.pick(t)}from(e,t,s){let n=D.getter(e,!0);return this.transform(i=>{if(!i)return i;let a=i;return as(i,e)&&(a=Object.assign({},i),s||delete a[e],a[t]=n(i)),a})}json(){return this.transform(Ge)}exact(e){return this.test({name:"exact",exclusive:!0,message:e||B.exact,test(t){if(t==null)return!0;const s=Qe(this.schema,t);return s.length===0||this.createError({params:{properties:s.join(", ")}})}})}stripUnknown(){return this.clone({noUnknown:!0})}noUnknown(e=!0,t=B.noUnknown){typeof e!="boolean"&&(t=e,e=!0);let s=this.test({name:"noUnknown",exclusive:!0,message:t,test(n){if(n==null)return!0;const i=Qe(this.schema,n);return!e||i.length===0||this.createError({params:{unknown:i.join(", ")}})}});return s.spec.noUnknown=e,s}unknown(e=!0,t=B.noUnknown){return this.noUnknown(!e,t)}transformKeys(e){return this.transform(t=>{if(!t)return t;const s={};for(const n of Object.keys(t))s[e(n)]=t[n];return s})}camelCase(){return this.transformKeys(ae.camelCase)}snakeCase(){return this.transformKeys(ae.snakeCase)}constantCase(){return this.transformKeys(e=>ae.snakeCase(e).toUpperCase())}describe(e){const t=(e?this.resolve(e):this).clone(),s=super.describe(e);s.fields={};for(const[i,a]of Object.entries(t.fields)){var n;let o=e;(n=o)!=null&&n.value&&(o=Object.assign({},o,{parent:o.value,value:o.value[i]})),s.fields[i]=a.describe(o)}return s}}xe.prototype=we.prototype;function We(r){return new _e(r)}class _e extends v{constructor(e){super({type:"array",spec:{types:e},check(t){return Array.isArray(t)}}),this.innerType=void 0,this.innerType=e}_cast(e,t){const s=super._cast(e,t);if(!this._typeCheck(s)||!this.innerType)return s;let n=!1;const i=s.map((a,o)=>{const u=this.innerType.cast(a,Object.assign({},t,{path:`${t.path||""}[${o}]`}));return u!==a&&(n=!0),u});return n?i:s}_validate(e,t={},s,n){var i;let a=this.innerType,o=(i=t.recursive)!=null?i:this.spec.recursive;t.originalValue!=null&&t.originalValue,super._validate(e,t,s,(u,l)=>{var c;if(!o||!a||!this._typeCheck(l)){n(u,l);return}let h=new Array(l.length);for(let f=0;f<l.length;f++){var p;h[f]=a.asNestedTest({options:t,index:f,parent:l,parentPath:t.path,originalParent:(p=t.originalValue)!=null?p:e})}this.runTests({value:l,tests:h,originalValue:(c=t.originalValue)!=null?c:e,options:t},s,f=>n(f.concat(u),l))})}clone(e){const t=super.clone(e);return t.innerType=this.innerType,t}json(){return this.transform(Ge)}concat(e){let t=super.concat(e);return t.innerType=this.innerType,e.innerType&&(t.innerType=t.innerType?t.innerType.concat(e.innerType):e.innerType),t}of(e){let t=this.clone();if(!C(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+T(e));return t.innerType=e,t.spec=Object.assign({},t.spec,{types:e}),t}length(e,t=G.length){return this.test({message:t,name:"length",exclusive:!0,params:{length:e},skipAbsent:!0,test(s){return s.length===this.resolve(e)}})}min(e,t){return t=t||G.min,this.test({message:t,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(s){return s.length>=this.resolve(e)}})}max(e,t){return t=t||G.max,this.test({message:t,name:"max",exclusive:!0,params:{max:e},skipAbsent:!0,test(s){return s.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,t)=>this._typeCheck(e)?e:t==null?[]:[].concat(t))}compact(e){let t=e?(s,n,i)=>!e(s,n,i):s=>!!s;return this.transform(s=>s!=null?s.filter(t):s)}describe(e){const t=(e?this.resolve(e):this).clone(),s=super.describe(e);if(t.innerType){var n;let i=e;(n=i)!=null&&n.value&&(i=Object.assign({},i,{parent:i.value,value:i.value[0]})),s.innerType=t.innerType.describe(i)}return s}}We.prototype=_e.prototype;function Xe(r){return new Fe(r)}class Fe extends v{constructor(e){super({type:"tuple",spec:{types:e},check(t){const s=this.spec.types;return Array.isArray(t)&&t.length===s.length}}),this.withMutation(()=>{this.typeError(Ze.notType)})}_cast(e,t){const{types:s}=this.spec,n=super._cast(e,t);if(!this._typeCheck(n))return n;let i=!1;const a=s.map((o,u)=>{const l=o.cast(n[u],Object.assign({},t,{path:`${t.path||""}[${u}]`}));return l!==n[u]&&(i=!0),l});return i?a:n}_validate(e,t={},s,n){let i=this.spec.types;super._validate(e,t,s,(a,o)=>{var u;if(!this._typeCheck(o)){n(a,o);return}let l=[];for(let[h,p]of i.entries()){var c;l[h]=p.asNestedTest({options:t,index:h,parent:o,parentPath:t.path,originalParent:(c=t.originalValue)!=null?c:e})}this.runTests({value:o,tests:l,originalValue:(u=t.originalValue)!=null?u:e,options:t},s,h=>n(h.concat(a),o))})}describe(e){const t=(e?this.resolve(e):this).clone(),s=super.describe(e);return s.innerType=t.spec.types.map((n,i)=>{var a;let o=e;return(a=o)!=null&&a.value&&(o=Object.assign({},o,{parent:o.value,value:o.value[i]})),n.describe(o)}),s}}Xe.prototype=Fe.prototype;function us(r){return new ee(r)}function et(r){try{return r()}catch(e){if(m.isError(e))return Promise.reject(e);throw e}}class ee{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this.spec=void 0,this._resolve=(t,s={})=>{let n=this.builder(t,s);if(!C(n))throw new TypeError("lazy() functions must return a valid schema");return this.spec.optional&&(n=n.optional()),n.resolve(s)},this.builder=e,this.spec={meta:void 0,optional:!1}}clone(e){const t=new ee(this.builder);return t.spec=Object.assign({},this.spec,e),t}optionality(e){return this.clone({optional:e})}optional(){return this.optionality(!0)}resolve(e){return this._resolve(e.value,e)}cast(e,t){return this._resolve(e,t).cast(e,t)}asNestedTest(e){let{key:t,index:s,parent:n,options:i}=e,a=n[s??t];return this._resolve(a,Object.assign({},i,{value:a,parent:n})).asNestedTest(e)}validate(e,t){return et(()=>this._resolve(e,t).validate(e,t))}validateSync(e,t){return this._resolve(e,t).validateSync(e,t)}validateAt(e,t,s){return et(()=>this._resolve(t,s).validateAt(e,t,s))}validateSyncAt(e,t,s){return this._resolve(t,s).validateSyncAt(e,t,s)}isValid(e,t){try{return this._resolve(e,t).isValid(e,t)}catch(s){if(m.isError(s))return Promise.resolve(!1);throw s}}isValidSync(e,t){return this._resolve(e,t).isValidSync(e,t)}describe(e){return e?this.resolve(e).describe(e):{type:"lazy",meta:this.spec.meta,label:void 0}}meta(...e){if(e.length===0)return this.spec.meta;let t=this.clone();return t.spec.meta=Object.assign(t.spec.meta||{},e[0]),t}}function ls(r){Object.keys(r).forEach(e=>{Object.keys(r[e]).forEach(t=>{Le[e][t]=r[e][t]})})}function cs(r,e,t){if(!r||!C(r.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof t!="function")throw new TypeError("Method function must be provided");r.prototype[e]=t}const hs=Object.freeze(Object.defineProperty({__proto__:null,ArraySchema:_e,BooleanSchema:fe,DateSchema:N,LazySchema:ee,MixedSchema:he,NumberSchema:ge,ObjectSchema:we,Schema:v,StringSchema:ve,TupleSchema:Fe,ValidationError:m,addMethod:cs,array:We,bool:pe,boolean:pe,date:be,defaultLocale:Le,getIn:ce,isSchema:C,lazy:us,mixed:Ye,number:ye,object:xe,printValue:T,reach:Lt,ref:Zt,setLocale:ls,string:me,tuple:Xe},Symbol.toStringTag,{value:"Module"}));var ps=Oe('<div class="err font-label svelte-x8kgzj"> </div>'),fs=Oe('<div class="container svelte-x8kgzj"><div class="label svelte-x8kgzj"><div class="labelInner font-label noselect svelte-x8kgzj"><label><!></label></div></div> <input> <!></div>');function ds(r,e){tt(e,!0);let t=q(e,"name",19,mt),s=q(e,"disabled",3,!1),n=q(e,"value",15),i=q(e,"width",3,"250px"),a=q(e,"autocomplete",3,"on"),o=dt(e,["$$slots","$$events","$$legacy","name","disabled","error","value","width","autocomplete","children"]);const u=st();function l(w){u("keypress",w),w.code==="Enter"&&u("enter",w)}u("blur",!0);function c(){u("blur",!0)}async function h(w){await it(),n(w.target.value),u("input",!0)}var p=fs(),f=I(p),y=I(f),g=I(y),_=I(g);ut(_,()=>e.children??rt),U(g),U(y),U(f);var x=Se(f,2);lt(x);let M;var R=Se(x,2);{var P=w=>{var k=ps(),Z=I(k,!0);U(k),Ae(()=>{Y(k,"width",i()),at(Z,e.error)}),ct(7,k,()=>ht,()=>({duration:250})),Ee(w,k)};ot(R,w=>{e.error&&w(P)})}U(p),Ae(()=>{Y(p,"width",`calc(${i()??""} + 12px)`),Y(y,"background",s()?"var(--col-gmid)":"var(--col-bg)"),pt(g,"for",t()),M=ft(x,M,{name:t(),disabled:s(),value:n(),autocomplete:a(),...o,oninput:h,onkeypress:l,onblur:c},"svelte-x8kgzj"),Y(x,"width",i())}),Ee(r,p),nt()}export{ds as I,me as a,ye as b,xe as c,hs as y};
diff --git a/static/v1/_app/immutable/chunks/Input.Bj_i2TLU.js.br b/static/v1/_app/immutable/chunks/Input.Bj_i2TLU.js.br
new file mode 100644
index 000000000..d45056b1f
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Input.Bj_i2TLU.js.br differ
diff --git a/static/v1/_app/immutable/chunks/Input.Bj_i2TLU.js.gz b/static/v1/_app/immutable/chunks/Input.Bj_i2TLU.js.gz
new file mode 100644
index 000000000..ead49296b
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Input.Bj_i2TLU.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/LangSelector.mSh8cV6Q.js b/static/v1/_app/immutable/chunks/LangSelector.mSh8cV6Q.js
new file mode 100644
index 000000000..30c3706a4
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/LangSelector.mSh8cV6Q.js
@@ -0,0 +1,1 @@
+import{a as k,b as x}from"./disclose-version.DZhRUPAc.js";import{p as R,_ as S,d as p,b as c,a2 as y,a as z,g as i,j as f,a3 as A,a5 as B}from"./index-client.CGppiJvc.js";import{L as d,z as C,t as l}from"./dataFetching.Dto1xJW6.js";import{p as m}from"./proxy.DB4Km9hY.js";import{p as n}from"./props.Df_pGDSd.js";import{O}from"./OptionSelect.BCgZksOM.js";import{u as _}from"./language.svelte.n4n5oz7-.js";import{a as G}from"./helpers.DVmWh-6p.js";var I=x('<div class="svelte-s2vujs"><!></div>');function M(v,s){R(s,!0);let b=n(s,"absolute",3,!1),u=n(s,"absoluteRight",3,!1),w=n(s,"updateBackend",3,!1);const L=";Path=/;SameSite=Lax;Max-Age=315360000";let e=_(),t=S(m(p(()=>e)));c(()=>{let a=G("locale"),r=p(()=>e);a!==r&&d.includes(a)&&(e=a,f(t,m(a)))}),c(()=>{i(t)&&i(t)!==e&&g(i(t))});async function g(a){if(document.cookie="locale="+a.toLowerCase()+L,w()){let r=await C();if(!r.ok){let j=await r.json();console.error(j);return}}window.location.reload()}var o=I(),h=A(o);O(h,{options:d,get value(){return i(t)},set value(a){f(t,m(a))}}),B(o),y(()=>{l(o,"absolute",b()),l(o,"absoluteLeft",!u()),l(o,"absoluteRight",u())}),k(v,o),z()}export{M as L};
diff --git a/static/v1/_app/immutable/chunks/LangSelector.mSh8cV6Q.js.br b/static/v1/_app/immutable/chunks/LangSelector.mSh8cV6Q.js.br
new file mode 100644
index 000000000..95e3e8849
Binary files /dev/null and b/static/v1/_app/immutable/chunks/LangSelector.mSh8cV6Q.js.br differ
diff --git a/static/v1/_app/immutable/chunks/LangSelector.mSh8cV6Q.js.gz b/static/v1/_app/immutable/chunks/LangSelector.mSh8cV6Q.js.gz
new file mode 100644
index 000000000..59753bd91
Binary files /dev/null and b/static/v1/_app/immutable/chunks/LangSelector.mSh8cV6Q.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/Loading.FF_EHyHU.js b/static/v1/_app/immutable/chunks/Loading.FF_EHyHU.js
new file mode 100644
index 000000000..5f3e73c57
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/Loading.FF_EHyHU.js
@@ -0,0 +1,4 @@
+import{a as D,b as H}from"./disclose-version.DZhRUPAc.js";import{z as N,aR as Q,V as Z,aS as ee,aT as te,E as ae,aU as ie,aV as ne,W as se,v as j,d as re,aq as oe,Y as le,n as w,aW as ue,aJ as M,ak as z,aX as ce,aY as fe,aC as de,a2 as ve,a1 as O,a3 as P,a5 as q}from"./index-client.CGppiJvc.js";import{b as pe,i as ge,c as me,d as be,f as ye,n as he,g as $e,j as ke}from"./render.D4MwAWTL.js";import{t as T,y as V}from"./dataFetching.Dto1xJW6.js";import{p as F}from"./props.Df_pGDSd.js";function L(e){var t,a,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(a=L(e[t]))&&(i&&(i+=" "),i+=a)}else for(a in e)e[a]&&(i&&(i+=" "),i+=a);return i}function _e(){for(var e,t,a=0,i="",s=arguments.length;a<s;a++)(e=arguments[a])&&(t=L(e))&&(i&&(i+=" "),i+=t);return i}function R(e){return typeof e=="object"?_e(e):e??""}function we(e){if(N){var t=!1,a=()=>{if(!t){if(t=!0,e.hasAttribute("value")){var i=e.value;A(e,"value",null),e.value=i}if(e.hasAttribute("checked")){var s=e.checked;A(e,"checked",null),e.checked=s}}};e.__on_r=a,Q(a),pe()}}function Ae(e,t){var a=e.__attributes??(e.__attributes={});a.value===(a.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!=="PROGRESS")||(e.value=t)}function xe(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function A(e,t,a,i){var s=e.__attributes??(e.__attributes={});N&&(s[t]=e.getAttribute(t),t==="src"||t==="srcset"||t==="href"&&e.nodeName==="LINK")||s[t]!==(s[t]=a)&&(t==="style"&&"__styles"in e&&(e.__styles={}),t==="loading"&&(e[ee]=a),a==null?e.removeAttribute(t):typeof a!="string"&&I(e).includes(t)?e[t]=a:e.setAttribute(t,a))}function Ce(e,t,a,i,s=!1,o=!1,u=!1){var c=t||{},g=e.tagName==="OPTION";for(var d in t)d in a||(a[d]=null);a.class&&(a.class=R(a.class)),i!==void 0&&(a.class=a.class?a.class+" "+i:i);var f=I(e),p=e.__attributes??(e.__attributes={});for(const n in a){let r=a[n];if(g&&n==="value"&&r==null){e.value=e.__value="",c[n]=r;continue}var v=c[n];if(r!==v){c[n]=r;var y=n[0]+n[1];if(y!=="$$"){if(y==="on"){const m={},k="$$"+n;let $=n.slice(2);var h=$e($);if(ge($)&&($=$.slice(0,-7),m.capture=!0),!h&&v){if(r!=null)continue;e.removeEventListener($,c[k],m),c[k]=null}if(r!=null)if(h)e[`__${$}`]=r,be([$]);else{let x=function(E){c[n].call(this,E)};c[k]=me($,e,x,m)}else h&&(e[`__${$}`]=void 0)}else if(n==="style"&&r!=null)e.style.cssText=r+"";else if(n==="autofocus")ye(e,!!r);else if(n==="__value"||n==="value"&&r!=null)e.value=e[n]=e.__value=r;else if(n==="selected"&&g)xe(e,r);else{var l=n;s||(l=he(l));var b=l==="defaultValue"||l==="defaultChecked";if(r==null&&!o&&!b)if(p[n]=null,l==="value"||l==="checked"){let m=e;if(l==="value"){let k=m.defaultValue;m.removeAttribute(l),m.defaultValue=k}else{let k=m.defaultChecked;m.removeAttribute(l),m.defaultChecked=k}}else e.removeAttribute(n);else b||f.includes(l)&&(o||typeof r!="string")?e[l]=r:typeof r!="function"&&(N&&(l==="src"||l==="href"||l==="srcset")||A(e,l,r))}n==="style"&&"__styles"in e&&(e.__styles={})}}}return c}var U=new Map;function I(e){var t=U.get(e.nodeName);if(t)return t;U.set(e.nodeName,t=[]);for(var a,i=e,s=Element.prototype;s!==i;){a=te(i);for(var o in a)a[o].set&&t.push(o);i=Z(i)}return t}const Fe=()=>performance.now(),_={tick:e=>requestAnimationFrame(e),now:()=>Fe(),tasks:new Set};function Y(){const e=_.now();_.tasks.forEach(t=>{t.c(e)||(_.tasks.delete(t),t.f())}),_.tasks.size!==0&&_.tick(Y)}function B(e){let t;return _.tasks.size===0&&_.tick(Y),{promise:new Promise(a=>{_.tasks.add(t={c:e,f:a})}),abort(){_.tasks.delete(t)}}}function S(e,t){e.dispatchEvent(new CustomEvent(t))}function Se(e){if(e==="float")return"cssFloat";if(e==="offset")return"cssOffset";if(e.startsWith("--"))return e;const t=e.split("-");return t.length===1?t[0]:t[0]+t.slice(1).map(a=>a[0].toUpperCase()+a.slice(1)).join("")}function G(e){const t={},a=e.split(";");for(const i of a){const[s,o]=i.split(":");if(!s||o===void 0)break;const u=Se(s.trim());t[u]=o.trim()}return t}const Ee=e=>e;function J(e,t,a,i){var s=(e&ce)!==0,o=(e&fe)!==0,u=s&&o,c=(e&ue)!==0,g=u?"both":s?"in":"out",d,f=t.inert,p,v;function y(){var r=de,m=j;M(null),z(null);try{return d??(d=a()(t,(i==null?void 0:i())??{},{direction:g}))}finally{M(r),z(m)}}var h={is_global:c,in(){var r;if(t.inert=f,!s){v==null||v.abort(),(r=v==null?void 0:v.reset)==null||r.call(v);return}o||(p==null||p.abort()),S(t,"introstart"),p=W(t,y(),v,1,()=>{S(t,"introend"),p==null||p.abort(),p=d=void 0})},out(r){if(!o){r==null||r(),d=void 0;return}t.inert=!0,S(t,"outrostart"),v=W(t,y(),p,0,()=>{S(t,"outroend"),r==null||r()})},stop:()=>{p==null||p.abort(),v==null||v.abort()}},l=j;if((l.transitions??(l.transitions=[])).push(h),s&&ke){var b=c;if(!b){for(var n=l.parent;n&&n.f&ae;)for(;(n=n.parent)&&!(n.f&ie););b=!n||(n.f&ne)!==0}b&&se(()=>{re(()=>h.in())})}}function W(e,t,a,i,s){var o=i===1;if(oe(t)){var u,c=!1;return le(()=>{if(!c){var b=t({direction:o?"in":"out"});u=W(e,b,a,i,s)}}),{abort:()=>{c=!0,u==null||u.abort()},deactivate:()=>u.deactivate(),reset:()=>u.reset(),t:()=>u.t()}}if(a==null||a.deactivate(),!(t!=null&&t.duration))return s(),{abort:w,deactivate:w,reset:w,t:()=>i};const{delay:g=0,css:d,tick:f,easing:p=Ee}=t;var v=[];if(o&&a===void 0&&(f&&f(0,1),d)){var y=G(d(0,1));v.push(y,y)}var h=()=>1-i,l=e.animate(v,{duration:g});return l.onfinish=()=>{var b=(a==null?void 0:a.t())??1-i;a==null||a.abort();var n=i-b,r=t.duration*Math.abs(n),m=[];if(r>0){if(d)for(var k=Math.ceil(r/16.666666666666668),$=0;$<=k;$+=1){var x=b+n*p($/k),E=d(x,1-x);m.push(G(E))}h=()=>{var C=l.currentTime;return b+n*p(C/r)},f&&B(()=>{if(l.playState!=="running")return!1;var C=h();return f(C,1-C),!0})}l=e.animate(m,{duration:r,fill:"forwards"}),l.onfinish=()=>{h=()=>i,f==null||f(i,1-i),s()}},{abort:()=>{l&&(l.cancel(),l.effect=null,l.onfinish=w)},deactivate:()=>{s=w},reset:()=>{i===0&&(f==null||f(1,0))},t:()=>h()}}const Ne=e=>e;function K(e){const t=e-1;return t*t*t+1}function Te(e){return e<.5?4*e*e*e:.5*Math.pow(2*e-2,3)+1}function Ve(e){const t=typeof e=="string"&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||"px"]:[e,"px"]}function We(e,{delay:t=0,duration:a=400,easing:i=Te,amount:s=5,opacity:o=0}={}){const u=getComputedStyle(e),c=+u.opacity,g=u.filter==="none"?"":u.filter,d=c*(1-o),[f,p]=Ve(s);return{delay:t,duration:a,easing:i,css:(v,y)=>`opacity: ${c-d*y}; filter: ${g} blur(${y*f}${p});`}}function X(e,{delay:t=0,duration:a=400,easing:i=Ne}={}){const s=+getComputedStyle(e).opacity;return{delay:t,duration:a,easing:i,css:o=>`opacity: ${o*s}`}}function je(e,{delay:t=0,duration:a=400,easing:i=K,axis:s="y"}={}){const o=getComputedStyle(e),u=+o.opacity,c=s==="y"?"height":"width",g=parseFloat(o[c]),d=s==="y"?["top","bottom"]:["left","right"],f=d.map(n=>`${n[0].toUpperCase()}${n.slice(1)}`),p=parseFloat(o[`padding${f[0]}`]),v=parseFloat(o[`padding${f[1]}`]),y=parseFloat(o[`margin${f[0]}`]),h=parseFloat(o[`margin${f[1]}`]),l=parseFloat(o[`border${f[0]}Width`]),b=parseFloat(o[`border${f[1]}Width`]);return{delay:t,duration:a,easing:i,css:n=>`overflow: hidden;opacity: ${Math.min(n*20,1)*u};${c}: ${n*g}px;padding-${d[0]}: ${n*p}px;padding-${d[1]}: ${n*v}px;margin-${d[0]}: ${n*y}px;margin-${d[1]}: ${n*h}px;border-${d[0]}-width: ${n*l}px;border-${d[1]}-width: ${n*b}px;`}}function Me(e,{delay:t=0,duration:a=400,easing:i=K,start:s=0,opacity:o=0}={}){const u=getComputedStyle(e),c=+u.opacity,g=u.transform==="none"?"":u.transform,d=1-s,f=c*(1-o);return{delay:t,duration:a,easing:i,css:(p,v)=>`
+			transform: ${g} scale(${1-d*v});
+			opacity: ${c-f*v}
+		`}}var ze=H('<div class="container svelte-2cwfk8"><div class="loading svelte-2cwfk8"><div class="loading-1 svelte-2cwfk8"></div> <div class="loading-2 svelte-2cwfk8"></div> <div class="loading-3 svelte-2cwfk8"></div></div></div>');function Oe(e,t){let a=F(t,"offset",3,0),i=F(t,"background",3,!1),s=F(t,"global",3,!1),o=F(t,"color",3,"var(--col-acnt)");var u=ze(),c=P(u),g=P(c),d=O(g,2),f=O(d,2);q(c),q(u),ve(()=>{T(u,"global",s()),T(u,"local",!s()),T(u,"background",i()),A(c,"style",`margin-top: ${a()??""}px;`),V(g,"background",o()),V(d,"background",o()),V(f,"background",o())}),J(3,u,()=>X,()=>({duration:100})),D(e,u)}export{Oe as L,Me as a,je as b,R as c,Ae as d,we as e,X as f,Ce as g,We as h,B as l,_ as r,A as s,J as t};
diff --git a/static/v1/_app/immutable/chunks/Loading.FF_EHyHU.js.br b/static/v1/_app/immutable/chunks/Loading.FF_EHyHU.js.br
new file mode 100644
index 000000000..1b7bb835a
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Loading.FF_EHyHU.js.br differ
diff --git a/static/v1/_app/immutable/chunks/Loading.FF_EHyHU.js.gz b/static/v1/_app/immutable/chunks/Loading.FF_EHyHU.js.gz
new file mode 100644
index 000000000..55429193a
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Loading.FF_EHyHU.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/Loading.wZ55XKP1.js b/static/v1/_app/immutable/chunks/Loading.wZ55XKP1.js
new file mode 100644
index 000000000..82c1e7eaf
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/Loading.wZ55XKP1.js
@@ -0,0 +1,1 @@
+import{a as l,b as f}from"./disclose-version.DZhRUPAc.js";import{j as o,a3 as L,g as m,a1 as _,a5 as $,a2 as G,_ as p}from"./index-client.CGppiJvc.js";import{e as t}from"./render.D4MwAWTL.js";import{i as u}from"./if.DUA6Hpfn.js";import{t as e,a as x,s as H,f as h}from"./Loading.FF_EHyHU.js";import{t as g}from"./dataFetching.Dto1xJW6.js";import{p as b}from"./props.Df_pGDSd.js";var I=f('<div class="circle svelte-10pff2x"></div>'),J=f('<div class="circle svelte-10pff2x"></div>'),S=f('<div class="circle svelte-10pff2x"></div>'),A=f('<div class="container svelte-10pff2x"><div class="inner svelte-10pff2x"><!> <!> <!></div></div>');function B(j,n){let q=b(n,"offset",3,0),w=b(n,"background",3,!0),y=b(n,"local",3,!1),c=p(!0),i=p(!1),d=p(!1);setTimeout(()=>{o(i,!0)},300),setTimeout(()=>{o(d,!0)},600);var s=A(),v=L(s),k=L(v);{var z=r=>{var a=I();t("introend",a,()=>o(c,!1)),t("outroend",a,()=>o(c,!0)),e(7,a,()=>x,()=>({delay:600,duration:1e3})),l(r,a)};u(k,r=>{m(c)&&r(z)})}var T=_(k,2);{var C=r=>{var a=J();t("introend",a,()=>o(i,!1)),t("outroend",a,()=>o(i,!0)),e(7,a,()=>x,()=>({delay:600,duration:1e3})),l(r,a)};u(T,r=>{m(i)&&r(C)})}var E=_(T,2);{var F=r=>{var a=S();t("introend",a,()=>o(d,!1)),t("outroend",a,()=>o(d,!0)),e(7,a,()=>x,()=>({delay:600,duration:1e3})),l(r,a)};u(E,r=>{m(d)&&r(F)})}$(v),$(s),G(()=>{g(s,"global",!y()),g(s,"local",y()),g(s,"background",w()),H(v,"style",`margin-top: ${`${q()}px`??""}`)}),e(3,v,()=>h,()=>({duration:100})),e(7,s,()=>h,()=>({duration:100})),l(j,s)}export{B as L};
diff --git a/static/v1/_app/immutable/chunks/Loading.wZ55XKP1.js.br b/static/v1/_app/immutable/chunks/Loading.wZ55XKP1.js.br
new file mode 100644
index 000000000..49166cc50
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Loading.wZ55XKP1.js.br differ
diff --git a/static/v1/_app/immutable/chunks/Loading.wZ55XKP1.js.gz b/static/v1/_app/immutable/chunks/Loading.wZ55XKP1.js.gz
new file mode 100644
index 000000000..31e1eee17
Binary files /dev/null and b/static/v1/_app/immutable/chunks/Loading.wZ55XKP1.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/OptionSelect.BCgZksOM.js b/static/v1/_app/immutable/chunks/OptionSelect.BCgZksOM.js
new file mode 100644
index 000000000..d81817576
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/OptionSelect.BCgZksOM.js
@@ -0,0 +1,1 @@
+import{a as j,b as Q}from"./disclose-version.DZhRUPAc.js";import{ar as de,y as pe,z as A,C as N,A as ce,x as xe,av as U,H as he,B as X,F,K as C,aw as M,G as $,I as D,J as me,v as H,ax as E,ay as ye,az as _e,aA as be,Z as ge,as as we,aB as Se,aC as Ae,Y as qe,aD as J,aE as K,m as ke,P as T,aF as ee,aG as Ce,aH as Ie,aI as Oe,W as ae,a2 as te,a3 as Me,a5 as ne,g as z}from"./index-client.CGppiJvc.js";import{l as ze,s as Be}from"./render.D4MwAWTL.js";import{y as Ge}from"./dataFetching.Dto1xJW6.js";import{i as Ne}from"./proxy.DB4Km9hY.js";import{p as L}from"./props.Df_pGDSd.js";function le(a,e){return e}function Fe(a,e,t,n){for(var l=[],s=e.length,o=0;o<s;o++)ye(e[o].e,l,!0);var c=s>0&&l.length===0&&t!==null;if(c){var d=t.parentNode;_e(d),d.append(t),n.clear(),S(a,e[0].prev,e[s-1].next)}be(l,()=>{for(var h=0;h<s;h++){var p=e[h];c||(n.delete(p.k),S(a,p.prev,p.next)),ge(p.e,!c)}})}function se(a,e,t,n,l,s=null){var o=a,c={flags:e,items:new Map,first:null},d=(e&ee)!==0;if(d){var h=a;o=A?N(we(h)):h.appendChild(de())}A&&ce();var p=null,b=!1;pe(()=>{var g=t(),r=xe(g)?g:g==null?[]:U(g),f=r.length;if(b&&f===0)return;b=f===0;let v=!1;if(A){var q=o.data===he;q!==(f===0)&&(o=X(),N(o),F(!1),v=!0)}if(A){for(var x=null,m,y=0;y<f;y++){if(C.nodeType===8&&C.data===Se){o=C,v=!0,F(!1);break}var _=r[y],i=n(_,y);m=re(C,c,x,null,_,i,y,l,e),c.items.set(i,m),x=m}f>0&&N(X())}if(!A){var u=Ae;Je(r,c,o,l,e,(u.f&M)!==0,n)}s!==null&&(f===0?p?$(p):p=D(()=>s(o)):p!==null&&me(p,()=>{p=null})),v&&F(!0),t()}),A&&(o=C)}function Je(a,e,t,n,l,s,o,c){var R,V,W,Y;var d=(l&Ce)!==0,h=(l&(J|K))!==0,p=a.length,b=e.items,g=e.first,r=g,f,v=null,q,x=[],m=[],y,_,i,u;if(d)for(u=0;u<p;u+=1)y=a[u],_=o(y,u),i=b.get(_),i!==void 0&&((R=i.a)==null||R.measure(),(q??(q=new Set)).add(i));for(u=0;u<p;u+=1){if(y=a[u],_=o(y,u),i=b.get(_),i===void 0){var ue=r?r.e.nodes_start:t;v=re(ue,e,v,v===null?e.first:v.next,y,_,u,n,l),b.set(_,v),x=[],m=[],r=v.next;continue}if(h&&Ke(i,y,u,l),i.e.f&M&&($(i.e),d&&((V=i.a)==null||V.unfix(),(q??(q=new Set)).delete(i))),i!==r){if(f!==void 0&&f.has(i)){if(x.length<m.length){var O=m[0],w;v=O.prev;var P=x[0],B=x[x.length-1];for(w=0;w<x.length;w+=1)ie(x[w],O,t);for(w=0;w<m.length;w+=1)f.delete(m[w]);S(e,P.prev,B.next),S(e,v,P),S(e,B,O),r=O,v=B,u-=1,x=[],m=[]}else f.delete(i),ie(i,r,t),S(e,i.prev,i.next),S(e,i,v===null?e.first:v.next),S(e,v,i),v=i;continue}for(x=[],m=[];r!==null&&r.k!==_;)(s||!(r.e.f&M))&&(f??(f=new Set)).add(r),m.push(r),r=r.next;if(r===null)continue;i=r}x.push(i),v=i,r=i.next}if(r!==null||f!==void 0){for(var k=f===void 0?[]:U(f);r!==null;)(s||!(r.e.f&M))&&k.push(r),r=r.next;var G=k.length;if(G>0){var ve=l&ee&&p===0?t:null;if(d){for(u=0;u<G;u+=1)(W=k[u].a)==null||W.measure();for(u=0;u<G;u+=1)(Y=k[u].a)==null||Y.fix()}Fe(e,k,ve,b)}}d&&qe(()=>{var Z;if(q!==void 0)for(i of q)(Z=i.a)==null||Z.apply()}),H.first=e.first&&e.first.e,H.last=v&&v.e}function Ke(a,e,t,n){n&J&&E(a.v,e),n&K?E(a.i,t):a.i=t}function re(a,e,t,n,l,s,o,c,d,h){var p=(d&J)!==0,b=(d&Ie)===0,g=p?b?ke(l):T(l):l,r=d&K?T(o):o,f={i:r,v:g,k:s,a:null,e:null,prev:t,next:n};try{return f.e=D(()=>c(a,g,r),A),f.e.prev=t&&t.e,f.e.next=n&&n.e,t===null?e.first=f:(t.next=f,t.e.next=f.e),n!==null&&(n.prev=f,n.e.prev=f.e),f}finally{}}function ie(a,e,t){for(var n=a.next?a.next.e.nodes_start:t,l=e?e.e.nodes_start:t,s=a.e.nodes_start;s!==n;){var o=Oe(s);l.before(s),s=o}}function S(a,e,t){e===null?a.first=t:(e.next=t,e.e.next=t&&t.e),t!==null&&(t.prev=e,t.e.prev=e&&e.e)}function oe(a,e,t){if(a.multiple)return Pe(a,e);for(var n of a.options){var l=I(n);if(Ne(l,e)){n.selected=!0;return}}(!t||e!==void 0)&&(a.selectedIndex=-1)}function Le(a,e){ae(()=>{var t=new MutationObserver(()=>{var n=a.__value;oe(a,n)});return t.observe(a,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),()=>{t.disconnect()}})}function fe(a,e,t=e){var n=!0;ze(a,"change",l=>{var s=l?"[selected]":":checked",o;if(a.multiple)o=[].map.call(a.querySelectorAll(s),I);else{var c=a.querySelector(s)??a.querySelector("option:not([disabled])");o=c&&I(c)}t(o)}),ae(()=>{var l=e();if(oe(a,l,n),n&&l===void 0){var s=a.querySelector(":checked");s!==null&&(l=I(s),t(l))}a.__value=l,n=!1}),Le(a)}function Pe(a,e){for(var t of a.options)t.selected=~e.indexOf(I(t))}function I(a){return"__value"in a?a.__value:a.value}var Re=Q('<option class="opt svelte-ysgm66"> </option>'),Ve=Q('<select class="svelte-ysgm66"></select>');function We(a,e){let t=L(e,"value",15),n=L(e,"options",19,()=>[]),l=L(e,"width",3,"inherit");var s=Ve();se(s,21,n,le,(o,c)=>{var d=Re(),h={},p=Me(d,!0);ne(d),te(()=>{h!==(h=z(c))&&(d.value=(d.__value=z(c))==null?"":z(c)),Be(p,z(c))}),j(o,d)}),ne(s),te(()=>Ge(s,"width",l())),fe(s,t),j(a,s)}export{We as O,fe as b,se as e,le as i};
diff --git a/static/v1/_app/immutable/chunks/OptionSelect.BCgZksOM.js.br b/static/v1/_app/immutable/chunks/OptionSelect.BCgZksOM.js.br
new file mode 100644
index 000000000..27a6f586f
Binary files /dev/null and b/static/v1/_app/immutable/chunks/OptionSelect.BCgZksOM.js.br differ
diff --git a/static/v1/_app/immutable/chunks/OptionSelect.BCgZksOM.js.gz b/static/v1/_app/immutable/chunks/OptionSelect.BCgZksOM.js.gz
new file mode 100644
index 000000000..2fed9236b
Binary files /dev/null and b/static/v1/_app/immutable/chunks/OptionSelect.BCgZksOM.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/PasswordInput.6uXzPAl-.js b/static/v1/_app/immutable/chunks/PasswordInput.6uXzPAl-.js
new file mode 100644
index 000000000..9391eafe5
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/PasswordInput.6uXzPAl-.js
@@ -0,0 +1,1 @@
+import{a as m,n as A,b as j}from"./disclose-version.DZhRUPAc.js";import{a2 as f,p as aa,a7 as oa,a3 as l,n as ra,a5 as n,a1 as k,a as ea}from"./index-client.CGppiJvc.js";import{d as ta,e as I,s as sa}from"./render.D4MwAWTL.js";import{i as V}from"./if.DUA6Hpfn.js";import{s as ia}from"./snippet.xhmr1ywJ.js";import{s as t,e as la,g as na,t as da,b as va}from"./Loading.FF_EHyHU.js";import{y as u}from"./dataFetching.Dto1xJW6.js";import{b as ca}from"./this.B23tdsYu.js";import{p as r,r as pa}from"./props.Df_pGDSd.js";import{g as ha}from"./helpers.DVmWh-6p.js";var ma=A('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5A3.375 3.375 0 006.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0015 2.25h-1.5a2.251 2.251 0 00-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 00-9-9z"></path></svg>');function W(c,a){let d=r(a,"opacity",3,.9),v=r(a,"width",3,20);var s=ma();t(s,"stroke-width",2),f(()=>{t(s,"width",v()),t(s,"opacity",d())}),m(c,s)}var ua=A('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88"></path></svg>');function E(c,a){let d=r(a,"color",3,"var(--col-err)"),v=r(a,"opacity",3,.9),s=r(a,"width",3,24);var e=ua();t(e,"stroke-width",2),f(()=>{t(e,"width",s()),t(e,"color",d()),t(e,"opacity",v())}),m(c,e)}var wa=A('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z"></path><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>');function P(c,a){let d=r(a,"color",3,"var(--col-ok)"),v=r(a,"opacity",3,.9),s=r(a,"width",3,24);var e=wa();t(e,"stroke-width",2),f(()=>{t(e,"width",s()),t(e,"color",d()),t(e,"opacity",v())}),m(c,e)}var ba=j('<div role="button" tabindex="0" class="btn clip svelte-6ql6gz"><!></div>'),fa=j('<div class="rel svelte-6ql6gz"><div class="err font-label svelte-6ql6gz"> </div></div>'),ga=j('<div class="container svelte-6ql6gz"><div class="label svelte-6ql6gz"><div class="labelInner font-label noselect svelte-6ql6gz"><label><!></label></div></div> <input> <div class="rel svelte-6ql6gz"><!> <div role="button" tabindex="0" class="btn show svelte-6ql6gz"><!></div></div> <!></div>');function ka(c,a){aa(a,!0);let d=r(a,"bindThis",15,void 0),v=r(a,"name",19,ha),s=r(a,"disabled",3,!1),e=r(a,"error",3,""),_=r(a,"showCopy",3,!1),y=r(a,"value",15,""),x=r(a,"width",3,"250px"),D=r(a,"maxWidth",3,"inherit"),F=r(a,"autocomplete",3,"current-password"),w=r(a,"type",15,"password"),J=pa(a,["$$slots","$$events","$$legacy","bindThis","name","disabled","error","showCopy","value","width","maxWidth","autocomplete","type","children"]);const z=oa();function K(o){o.code==="Enter"?z("enter",!0):z("keypress",!0)}function O(){z("blur",!0)}function B(){navigator.clipboard.writeText(y())}function H(){w()==="password"?w("text"):w("password")}function R(o){y(o.target.value)}var b=ga(),q=l(b),M=l(q),C=l(M),S=l(C);ia(S,()=>a.children??ra),n(C),n(M),n(q);var p=k(q,2);la(p);let L;ca(p,o=>d(o),()=>d());var $=k(p,2),T=l($);{var X=o=>{var i=ba();i.__click=B;var h=l(i);W(h,{}),n(i),I("keypress",i,B),m(o,i)};V(T,o=>{_()&&o(X)})}var g=k(T,2);g.__click=H;var Y=l(g);{var Z=o=>{E(o,{width:22})},G=o=>{P(o,{width:22})};V(Y,o=>{w()==="password"?o(Z):o(G,!1)})}n(g),n($);var N=k($,2);{var Q=o=>{var i=fa(),h=l(i),U=l(h,!0);n(h),n(i),f(()=>{u(h,"width",x()),sa(U,e())}),da(7,h,()=>va,()=>({duration:250})),m(o,i)};V(N,o=>{e()&&o(Q)})}n(b),f(()=>{u(b,"width",`calc(${x()??""} + 12px)`),u(b,"max-width",D()),u(M,"background",s()?"var(--col-gmid)":"var(--col-bg)"),t(C,"for",v()),L=na(p,L,{type:w(),name:v(),disabled:s(),value:y(),autocomplete:F(),...J,oninput:R,onkeypress:K,onblur:O},"svelte-6ql6gz"),u(p,"width",x()),u(p,"padding-right",_()?"45px":"25px")}),I("keypress",g,H),m(c,b),ea()}ta(["click"]);export{E as I,ka as P,P as a,W as b};
diff --git a/static/v1/_app/immutable/chunks/PasswordInput.6uXzPAl-.js.br b/static/v1/_app/immutable/chunks/PasswordInput.6uXzPAl-.js.br
new file mode 100644
index 000000000..2d04e41c5
Binary files /dev/null and b/static/v1/_app/immutable/chunks/PasswordInput.6uXzPAl-.js.br differ
diff --git a/static/v1/_app/immutable/chunks/PasswordInput.6uXzPAl-.js.gz b/static/v1/_app/immutable/chunks/PasswordInput.6uXzPAl-.js.gz
new file mode 100644
index 000000000..7c47011b7
Binary files /dev/null and b/static/v1/_app/immutable/chunks/PasswordInput.6uXzPAl-.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/PasswordPolicy.D9rZurKD.js b/static/v1/_app/immutable/chunks/PasswordPolicy.D9rZurKD.js
new file mode 100644
index 000000000..2efd47ade
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/PasswordPolicy.D9rZurKD.js
@@ -0,0 +1,8 @@
+import{c as Y,a as u,b as y}from"./disclose-version.DZhRUPAc.js";import{p as Z,_ as D,a0 as H,a as J,j as K,a3 as o,a5 as n,a1 as f,a2 as w,g}from"./index-client.CGppiJvc.js";import{s as v}from"./render.D4MwAWTL.js";import{i as $}from"./if.DUA6Hpfn.js";import{t as b}from"./dataFetching.Dto1xJW6.js";import{p as q}from"./proxy.DB4Km9hY.js";import{p as z}from"./props.Df_pGDSd.js";import{r as L}from"./legacy-client.CgqodnwN.js";import{u as O}from"./i18n.svelte.BTGsPiz_.js";var ii=y('<li class="li svelte-1f8mmbi"> </li>'),li=y('<li class="li svelte-1f8mmbi"> </li>'),ei=y('<li class="li svelte-1f8mmbi"> </li>'),si=y('<li class="li svelte-1f8mmbi"> </li>'),ai=y('<li class="li svelte-1f8mmbi"> </li>'),ri=y('<div class="policyContainer svelte-1f8mmbi"><span style="margin-left: 20px"><b> </b></span> <ul class="svelte-1f8mmbi"><li class="li svelte-1f8mmbi"> </li> <li class="li svelte-1f8mmbi"> </li> <!> <!> <!> <!> <!></ul></div>');function ci(B,P){Z(P,!0);let i=z(P,"policy",19,()=>({})),F=z(P,"accepted",15,!1),m=O(),_=D(q([!1,!1,!1,!1,!1,!1]));const G=d=>{if(!i())return!1;let r=[!1,!1,!1,!1,!1,!1],c=!1;d.length<i().length_min&&(r[0]=!0,c=!0),d.length>i().length_max&&(r[1]=!0,c=!0);let s=[0,0,0,0];for(let E=0;E<d.length;E++){let t=d.charCodeAt(E);if(t>=97&&t<=122){s[0]=s[0]+1;continue}if(t>=65&&t<=90){s[1]=s[1]+1;continue}if(t>=48&&t<=57){s[2]=s[2]+1;continue}s[3]=s[3]+1}i().include_lower_case!==-1&&i().include_lower_case>s[0]&&(r[2]=!0,c=!0),i().include_upper_case!==-1&&i().include_upper_case>s[1]&&(r[3]=!0,c=!0),i().include_digits!==-1&&i().include_digits>s[2]&&(r[4]=!0,c=!0),i().include_special!==-1&&i().include_special>s[3]&&(r[5]=!0,c=!0),K(_,q(r)),F(!c)};L(()=>{P.password&&G(P.password)});var x=Y(),I=H(x);{var N=d=>{var r=ri(),c=o(r),s=o(c),E=o(s,!0);n(s),n(c);var t=f(c,2),M=o(t),Q=o(M);n(M);var h=f(M,2),R=o(h);n(h);var C=f(h,2);{var S=e=>{var l=ii(),p=o(l);n(l),w(()=>{var a;b(l,"policyErr",!!g(_)[2]),v(p,`${m.passwordPolicy.lowercaseMin??""}
+                    ${(((a=i())==null?void 0:a.include_lower_case)||0)??""}`)}),u(e,l)};$(C,e=>{i().include_lower_case!==-1&&e(S)})}var j=f(C,2);{var T=e=>{var l=li(),p=o(l);n(l),w(()=>{var a;b(l,"policyErr",!!g(_)[3]),v(p,`${m.passwordPolicy.uppercaseMin??""}
+                    ${(((a=i())==null?void 0:a.include_upper_case)||0)??""}`)}),u(e,l)};$(j,e=>{i().include_upper_case!==-1&&e(T)})}var A=f(j,2);{var U=e=>{var l=ei(),p=o(l);n(l),w(()=>{var a;b(l,"policyErr",!!g(_)[4]),v(p,`${m.passwordPolicy.digitsMin??""}
+                    ${(((a=i())==null?void 0:a.include_digits)||0)??""}`)}),u(e,l)};$(A,e=>{i().include_digits!==-1&&e(U)})}var k=f(A,2);{var V=e=>{var l=si(),p=o(l);n(l),w(()=>{var a;b(l,"policyErr",!!g(_)[5]),v(p,`${m.passwordPolicy.specialMin??""}
+                    ${(((a=i())==null?void 0:a.include_special)||0)??""}`)}),u(e,l)};$(k,e=>{i().include_special!==-1&&e(V)})}var W=f(k,2);{var X=e=>{var l=ai(),p=o(l);n(l),w(()=>{var a;return v(p,`${m.passwordPolicy.notRecent??""}
+                    ${(((a=i())==null?void 0:a.not_recently_used)||0)??""}`)}),u(e,l)};$(W,e=>{i().not_recently_used!==-1&&e(X)})}n(t),n(r),w(()=>{var e;v(E,m.passwordPolicy.passwordPolicy),b(M,"policyErr",!!g(_)[0]),v(Q,`${m.passwordPolicy.lengthMin??""}
+                ${i().length_min??""}`),b(h,"policyErr",!!g(_)[1]),v(R,`${m.passwordPolicy.lengthMax??""}
+                ${(((e=i())==null?void 0:e.length_max)||0)??""}`)}),u(d,r)};$(I,d=>{i()&&d(N)})}u(B,x),J()}export{ci as P};
diff --git a/static/v1/_app/immutable/chunks/PasswordPolicy.D9rZurKD.js.br b/static/v1/_app/immutable/chunks/PasswordPolicy.D9rZurKD.js.br
new file mode 100644
index 000000000..fbcf6cb0d
Binary files /dev/null and b/static/v1/_app/immutable/chunks/PasswordPolicy.D9rZurKD.js.br differ
diff --git a/static/v1/_app/immutable/chunks/PasswordPolicy.D9rZurKD.js.gz b/static/v1/_app/immutable/chunks/PasswordPolicy.D9rZurKD.js.gz
new file mode 100644
index 000000000..77183f10e
Binary files /dev/null and b/static/v1/_app/immutable/chunks/PasswordPolicy.D9rZurKD.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/WebauthnRequest.CHVZELhw.js b/static/v1/_app/immutable/chunks/WebauthnRequest.CHVZELhw.js
new file mode 100644
index 000000000..0f2d9307f
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/WebauthnRequest.CHVZELhw.js
@@ -0,0 +1,2 @@
+import{a as m,b as I,c as Q}from"./disclose-version.DZhRUPAc.js";import{p as X,o as N,j as k,g,a3 as a,a5 as t,a1 as z,a2 as D,a as ee,_ as L,a0 as se}from"./index-client.CGppiJvc.js";import{s as f}from"./render.D4MwAWTL.js";import{i as P}from"./if.DUA6Hpfn.js";import{d as re,s as ae,L as te}from"./Loading.FF_EHyHU.js";import{p as U}from"./proxy.DB4Km9hY.js";import{s as ie,p as y,a as oe}from"./props.Df_pGDSd.js";import{t as de}from"./tweened.CQQvc4Vq.js";import{B as ne,F as _,G as w,U as ce,V as le}from"./dataFetching.Dto1xJW6.js";import{u as ve}from"./i18n.svelte.BTGsPiz_.js";async function pe(u,d,h){let o=await ne(u,d);if(o.status===200){let r=await o.json(),n=r.rcr;n.publicKey.challenge=_(n.publicKey.challenge);for(let c of n.publicKey.allowCredentials)c.id=_(c.id);let i;try{i=await navigator.credentials.get(n)}catch(c){return console.error(c),{err:!0,msg:h||"Invalid Key"}}let j={code:r.code,data:{id:i.id,rawId:w(i.rawId),response:{authenticatorData:w(i.response.authenticatorData),clientDataJSON:w(i.response.clientDataJSON),signature:w(i.response.signature)},type:i.type}};return o=await ce(u,j),o.status===202?{err:!1,msg:"Authentication successful",body:await o.json()}:(console.error(o),{err:!0,msg:"Authentication Error"})}else return console.error(o),{err:!0,msg:"Error starting the Authentication"}}var ue=I('<div class="good svelte-jsdqii"> </div>'),me=I('<div class="err svelte-jsdqii"> </div>'),ge=I('<div class="wrapperOuter svelte-jsdqii"><div class="wrapperInner svelte-jsdqii"><div class="content svelte-jsdqii"><div class="contentRow svelte-jsdqii"><div class="contentHeader svelte-jsdqii"> </div></div> <div class="contentRow svelte-jsdqii"><div class="contentHeader svelte-jsdqii"> </div> <div><progress class="svelte-jsdqii"></progress></div></div> <div class="contentRow svelte-jsdqii"><!></div></div></div></div>');function fe(u,d){X(d,!0);const h=ie(),o=()=>oe(S,"$progress",h);let r=y(d,"data",15),n=y(d,"purpose",3,"Login"),i=y(d,"onError",3,e=>{}),j=y(d,"onSuccess",3,e=>{}),c=L(!1),R=L(""),q=L(!1),l=ve(),S=de(r().exp,{duration:r().exp*1e3});N(()=>{let e=setTimeout(()=>{r(void 0)},r().exp*1e3);return S.set(0),()=>clearTimeout(e)}),N(async()=>{let e;n()==="Login"?e={purpose:{Login:r().code}}:e={purpose:n()};let s={};try{s=await le(pe(r().user_id,e,(l==null?void 0:l.authorize.invalidKeyUsed)||"Invalid Key"),r().exp*1e3-1e3)}catch(p){console.error(p),s.err=!0,s.msg="Timeout",i()("Passkey Error")}k(c,U(s.err)),k(q,!s.err),k(R,U(s.msg)),g(q)?j()(s.body):setTimeout(()=>{i()()},3e3)});var x=ge(),T=a(x),O=a(T),b=a(O),F=a(b),$=a(F,!0);t(F),t(b);var A=z(b,2),K=a(A),B=a(K);t(K);var H=z(K,2),J=a(H);t(H),t(A);var M=z(A,2),C=a(M);{var W=e=>{var s=ue(),p=a(s,!0);t(s),D(()=>f(p,l.authorize.mfaAck||"Acknowledged")),m(e,s)},G=e=>{var s=Q(),p=se(s);{var V=v=>{var E=me(),Z=a(E,!0);t(E),D(()=>f(Z,g(R))),m(v,E)},Y=v=>{te(v,{background:!1})};P(p,v=>{g(c)?v(V):v(Y,!1)},!0)}m(e,s)};P(C,e=>{g(q)?e(W):e(G,!1)})}t(M),t(O),t(T),t(x),D(()=>{f($,l.authorize.provideMfa||"Please login with your MFA device"),f(B,`${l.authorize.requestExpires||"Request expires"}
+                    :`),re(J,o()),ae(J,"max",r().exp)}),m(u,x),ee()}export{fe as W};
diff --git a/static/v1/_app/immutable/chunks/WebauthnRequest.CHVZELhw.js.br b/static/v1/_app/immutable/chunks/WebauthnRequest.CHVZELhw.js.br
new file mode 100644
index 000000000..50b96da7d
Binary files /dev/null and b/static/v1/_app/immutable/chunks/WebauthnRequest.CHVZELhw.js.br differ
diff --git a/static/v1/_app/immutable/chunks/WebauthnRequest.CHVZELhw.js.gz b/static/v1/_app/immutable/chunks/WebauthnRequest.CHVZELhw.js.gz
new file mode 100644
index 000000000..fda9906fe
Binary files /dev/null and b/static/v1/_app/immutable/chunks/WebauthnRequest.CHVZELhw.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/dataFetching.Dto1xJW6.js b/static/v1/_app/immutable/chunks/dataFetching.Dto1xJW6.js
new file mode 100644
index 000000000..01e8a6635
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/dataFetching.Dto1xJW6.js
@@ -0,0 +1,1 @@
+import{z as _}from"./index-client.CGppiJvc.js";function U(e,a,t){var n=e.__className,r=j(a,t);_&&e.className===r?e.__className=r:(n!==r||_&&e.className!==r)&&(a==null&&!t?e.removeAttribute("class"):e.className=r,e.__className=r)}function j(e,a){return(e??"")+(a?" "+a:"")}function J(e,a,t){if(t){if(e.classList.contains(a))return;e.classList.add(a)}else{if(!e.classList.contains(a))return;e.classList.remove(a)}}function D(e,a,t,n){var r=e.__styles??(e.__styles={});r[a]!==t&&(r[a]=t,t==null?e.style.removeProperty(a):e.style.setProperty(a,t,""))}const m="pkce_verifier",w="pkce_verifier_upstream",v="csrf_token",O="access_token",C="id_token",p="provider_token",R="/auth/v1/oidc/authorize",E="rauthy",B="/auth/v1/oidc/logout",G="/auth/v1/oidc/callback",q="/auth/v1/admin",L="/auth/v1/account",Z="/auth/v1/",M=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/gm,x=/^\+[0-9\s]{0,32}$/gm,H=/^[a-zA-Z0-9À-ÿ-.\s]{0,48}$/gm,V=/^[a-zA-Z0-9À-ÿ-]{0,48}$/gm,W=/^[a-zA-Z0-9_/-]{2,24}$/gm,Y=/^[\w\sÀ-ſ\-\u3041-\u3096\u30A0-\u30FF\u3400-\u4DB5\u4E00-\u9FCB\uF900-\uFA6A\u2E80-\u2FD5\uFF66-\uFF9F\uFFA1-\uFFDC\u31F0-\u31FF]{1,32}$/gm,K=/^[\w\sÀ-ſ\-\u3041-\u3096\u30A0-\u30FF\u3400-\u4DB5\u4E00-\u9FCB\uF900-\uFA6A\u2E80-\u2FD5\uFF66-\uFF9F\uFFA1-\uFFDC\u31F0-\u31FF]{0,32}$/gm,Q=/^[a-zA-Z0-9\-_/\s]{0,128}$/gm,X=/^[a-zA-Z0-9\-_/]{2,32}$/gm,ee=/^[a-zA-Z0-9\-_/]{2,128}$/gm,ae=/^[a-zA-Z0-9À-ſ\-\s\u3041-\u3096\u30A0-\u30FF\u3400-\u4DB5\u4E00-\u9FCB\uF900-\uFA6A\u2E80-\u2FD5\uFF66-\uFF9F\uFFA1-\uFFDC\u31F0-\u31FF]{0,128}$/m,te=/^[a-zA-Z0-9+.@/:]{0,48}$/gm,re=/^[a-z0-9-_\/:\s]{0,128}$/gm,ne=/^[a-z0-9.:-]+:\/\/[a-z0-9.:-]+$/m,se=/^(-----BEGIN CERTIFICATE-----)[a-zA-Z0-9+/=\n]+(-----END CERTIFICATE-----)$/gm,oe=/^[a-z0-9\-_/:*]{2,64}$/gm,ie=/^[a-zA-Z0-9,.:/_\-&?=~#!$'()*+%]*$/gm,ue=/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/gm,ce=/(#(?:[0-9a-f]{2}){2,4}$|(#[0-9a-f]{3}$)|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\)$|black$|silver$|gray$|whitesmoke$|maroon$|red$|purple$|fuchsia$|green$|lime$|olivedrab$|yellow$|navy$|blue$|teal$|aquamarine$|orange$|aliceblue$|antiquewhite$|aqua$|azure$|beige$|bisque$|blanchedalmond$|blueviolet$|brown$|burlywood$|cadetblue$|chartreuse$|chocolate$|coral$|cornflowerblue$|cornsilk$|crimson$|currentcolor$|darkblue$|darkcyan$|darkgoldenrod$|darkgray$|darkgreen$|darkgrey$|darkkhaki$|darkmagenta$|darkolivegreen$|darkorange$|darkorchid$|darkred$|darksalmon$|darkseagreen$|darkslateblue$|darkslategray$|darkslategrey$|darkturquoise$|darkviolet$|deeppink$|deepskyblue$|dimgray$|dimgrey$|dodgerblue$|firebrick$|floralwhite$|forestgreen$|gainsboro$|ghostwhite$|goldenrod$|gold$|greenyellow$|grey$|honeydew$|hotpink$|indianred$|indigo$|ivory$|khaki$|lavenderblush$|lavender$|lawngreen$|lemonchiffon$|lightblue$|lightcoral$|lightcyan$|lightgoldenrodyellow$|lightgray$|lightgreen$|lightgrey$|lightpink$|lightsalmon$|lightseagreen$|lightskyblue$|lightslategray$|lightslategrey$|lightsteelblue$|lightyellow$|limegreen$|linen$|mediumaquamarine$|mediumblue$|mediumorchid$|mediumpurple$|mediumseagreen$|mediumslateblue$|mediumspringgreen$|mediumturquoise$|mediumvioletred$|midnightblue$|mintcream$|mistyrose$|moccasin$|navajowhite$|oldlace$|olive$|orangered$|orchid$|palegoldenrod$|palegreen$|paleturquoise$|palevioletred$|papayawhip$|peachpuff$|peru$|pink$|plum$|powderblue$|rosybrown$|royalblue$|saddlebrown$|salmon$|sandybrown$|seagreen$|seashell$|sienna$|skyblue$|slateblue$|slategray$|slategrey$|snow$|springgreen$|steelblue$|tan$|thistle$|tomato$|transparent$|turquoise$|violet$|wheat$|white$|yellowgreen$|rebeccapurple$)/i,le=3,de=["Info","Notice","Warning","Critical"],he=["InvalidLogins","IpBlacklisted","IpBlacklistRemoved","JwksRotated","NewUserRegistered","NewRauthyAdmin","NewRauthyVersion","PossibleBruteForce","RauthyStarted","RauthyHealthy","RauthyUnhealthy","SecretsMigrated","UserEmailChange","UserPasswordReset","Test"],$e=["de","en","zh","ko"],fe=["RS256","RS384","RS512","EdDSA"],ge=[{label:"authorization_code",value:!1},{label:"client_credentials",value:!1},{label:"password",value:!1},{label:"refresh_token",value:!1},{label:"device_code",value:!1}],me=[{label:"S256",value:!1},{label:"plain",value:!1}],ye="error_text",we="status_code";var N={};Object.defineProperty(N,"__esModule",{value:!0});function P(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function ve(e,a){e||(e=43);for(var t=typeof window<"u"&&window.msCrypto||crypto,n=P(Array.prototype.map.call(t.getRandomValues(new Uint8Array(e)),function(i){return String.fromCharCode(i)}).join("")).substring(0,e),r=new Uint8Array(n.length),o=0;o<n.length;o++)r[o]=n.charCodeAt(o);var c=t.subtle.digest("SHA-256",r);typeof window<"u"&&window.CryptoOperation?(c.onerror=a,c.oncomplete=function(i){z(a,n,i.target.result)}):c.then(function(i){z(a,n,i)}).catch(a)}var I=N.default=ve;function z(e,a,t){e(null,{verifier:a,challenge:P(String.fromCharCode.apply(null,new Uint8Array(t)))})}for(var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g=typeof Uint8Array>"u"?[]:new Uint8Array(256),y=0;y<f.length;y++)g[f.charCodeAt(y)]=y;var pe=function(e){var a=new Uint8Array(e),t,n=a.length,r="";for(t=0;t<n;t+=3)r+=f[a[t]>>2],r+=f[(a[t]&3)<<4|a[t+1]>>4],r+=f[(a[t+1]&15)<<2|a[t+2]>>6],r+=f[a[t+2]&63];return n%3===2?r=r.substring(0,r.length-1)+"=":n%3===1&&(r=r.substring(0,r.length-2)+"=="),r},be=function(e){var a=e.length*.75,t=e.length,n,r=0,o,c,i,d;e[e.length-1]==="="&&(a--,e[e.length-2]==="="&&a--);var h=new ArrayBuffer(a),$=new Uint8Array(h);for(n=0;n<t;n+=4)o=g[e.charCodeAt(n)],c=g[e.charCodeAt(n+1)],i=g[e.charCodeAt(n+2)],d=g[e.charCodeAt(n+3)],$[r++]=o<<2|c>>4,$[r++]=(c&15)<<4|i>>2,$[r++]=(i&3)<<6|d&63;return h};function Se(e){return`${window.location.origin}/auth/${e}/profile#me`}function Fe(e){return e.inner.reduce((a,t)=>({...a,[t.path]:t.message}),{})}function ke(e){return e==="openid"||e==="profile"||e==="email"||e==="groups"||e==="address"||e==="phone"}async function Te(){var e,a;{const t=(a=(e=document==null?void 0:document.getElementsByTagName("template"))==null?void 0:e.namedItem("auth_providers"))==null?void 0:a.innerHTML;return t?JSON.parse(t):void 0}}const Ae=e=>{I(64,(a,{challenge:t,verifier:n})=>{if(!a){localStorage.setItem(m,n);const r=Ze(24),o=e||"admin",c=`${window.location.origin}${G}`.replaceAll(":","%3A").replaceAll("/","%2F");window.location.href=`${R}?client_id=${E}&redirect_uri=${c}&response_type=code&code_challenge=${t}&code_challenge_method=S256&scope=openid+profile+email&nonce=${r}&state=${o}`}})},_e=()=>{const e=`${B}?post_logout_redirect_uri=${window.location.origin}${Z}`;window.location.href=e},Oe=e=>{localStorage.setItem(v,e)},b=()=>localStorage.getItem(v)||"",Ce=e=>{localStorage.setItem(C,e)},Ee=e=>{localStorage.setItem(O,e)},Ne=e=>{localStorage.setItem(p,e)},Pe=()=>localStorage.getItem(p)||"",Ie=()=>localStorage.getItem(m)||"",ze=()=>localStorage.getItem(w)||"",Ue=()=>{localStorage.removeItem(m)},je=()=>{localStorage.removeItem(v),localStorage.removeItem(C),localStorage.removeItem(O),localStorage.removeItem(m),localStorage.removeItem(w),localStorage.removeItem(p)};function Je(e){let a=pe(e);const t={"+":"-","/":"_","=":""};return a.replace(/[+/=]/g,n=>t[n])}function De(e){const a={"-":"+",_:"/",".":"="},t=e.replace(/[-_.]/g,n=>a[n]);return be(t)}function Re(e){switch(e){case"test":return"#b2b2b2";case"info":return"#388c51";case"notice":return"#3d5d99";case"warning":return"#c29a4f";case"critical":return"#993d49"}}const Be=e=>e.toISOString().slice(0,16),Ge=e=>{let a=Date.parse(e);if(!isNaN(a))return a/1e3},qe=(e,a)=>{const t=-new Date().getTimezoneOffset(),n=new Date((e+t*60)*1e3);let r=n.getUTCDate();r<10&&(r="0"+r);let o=n.getUTCMonth()+1;o<10&&(o="0"+o);const c=n.getUTCFullYear();let i=n.getUTCHours();i<10&&(i="0"+i);let d=n.getUTCMinutes();d<10&&(d="0"+d);let h=n.getUTCSeconds();return h<10&&(h="0"+h),a?`${c}-${o}-${r}T${i}:${d}:${h}`:`${c}/${o}/${r} ${i}:${d}:${h}`},Le=(e,a,t,n,r)=>{const o=a||1,c=t||1,i=n||1,d=r||1;for(;;){let h=e||16,$=0,S=0,F=0,k=0,T=[];for(let A=0;A<h;A+=1){let l=60;for(;l>57&&l<65||l>90&&l<97;)l=Math.floor(Math.random()*74)+33;l>=91&&l<=122&&($+=1),l>=65&&l<=90&&(S+=1),l>=48&&l<=57&&(F+=1),l>=33&&l<=47&&(k+=1),T.push(String.fromCharCode(l))}if(!($<o||S<c||k<d||F<i))return T.join("")}},Ze=e=>{let a="";const t=e;for(let n=0;n<t;n+=1){let r=60;for(;r>57&&r<65||r>90&&r<97;)r=Math.floor(Math.random()*74)+48;a=a.concat(String.fromCharCode(r))}return a},Me=()=>new Proxy(new URLSearchParams(window.location.search),{get:(e,a)=>e.get(a.toString())}),xe=(e,a)=>{let t;return Promise.race([e,new Promise((n,r)=>t=setTimeout(r,a,"timeout"))]).finally(()=>clearTimeout(t))},u={json:{"Content-Type":"application/json",Accept:"application/json"},form:{"Content-type":"application/x-www-form-urlencoded",Accept:"application/json"}};function s(){return{...u.json,"csrf-token":b()}}function He(){return{...u.form,"csrf-token":b()}}async function Ve(e){const a=await fetch("/auth/v1/oidc/authorize",{method:"POST",headers:s(),body:JSON.stringify(e)});return a.status===202&&window.location.replace(a.headers.get("location")),a}async function We(e){const a=await fetch("/auth/v1/oidc/authorize/refresh",{method:"POST",headers:s(),body:JSON.stringify(e)});return a.status===202&&window.location.replace(a.headers.get("location")),a}async function Ye(){return await fetch("/auth/v1/version",{method:"GET",headers:u.json})}async function Ke(){return await fetch("/auth/v1/auth_check_admin",{method:"GET",headers:u.json})}async function Qe(e){return await fetch("/auth/v1/oidc/token",{method:"POST",headers:u.form,body:e})}async function Xe(){return await fetch("/auth/v1/oidc/sessioninfo",{method:"GET",headers:u.json})}async function ea(e){return await fetch("/auth/v1/oidc/sessioninfo/xsrf",{method:"GET",headers:{...u.json,Authorization:`Bearer ${e}`}})}async function aa(e){let a=new URLSearchParams;for(let t in e)a.append(t,e[t]);return await fetch("/auth/v1/oidc/logout",{method:"POST",headers:He(),body:a})}async function ta(e){return await fetch("/auth/v1/oidc/device/verify",{method:"POST",headers:s(),body:JSON.stringify(e)})}async function ra(){return await fetch("/auth/v1/fed_cm/status",{method:"GET",headers:u.json})}async function na(){return await fetch("/auth/v1/password_policy",{method:"GET",headers:u.json})}async function sa(){return await fetch("/auth/v1/pow",{method:"POST",headers:u.json})}async function oa(e,a,t){return await fetch(`/auth/v1/users/${e}/reset`,{method:"PUT",headers:{...u.json,"pwd-csrf-token":t},body:JSON.stringify(a)})}async function ia(e){return await fetch("/auth/v1/users/request_reset",{method:"POST",headers:s(),body:JSON.stringify(e)})}async function ua(e){return await fetch("/auth/v1/providers/login",{method:"POST",headers:s(),body:JSON.stringify(e)})}async function ca(e){return await fetch("/auth/v1/providers/callback",{method:"POST",headers:s(),body:JSON.stringify(e)})}async function la(){return await fetch("/auth/v1/events/test",{method:"POST",headers:s()})}async function da(e){return await fetch("/auth/v1/users/register",{method:"POST",headers:u.json,body:JSON.stringify(e)})}async function ha(e){return await fetch(`/auth/v1/users/${e}`,{method:"GET",headers:u.json})}async function $a(e){return await fetch(`/auth/v1/users/${e}/devices`,{method:"GET",headers:s()})}async function fa(e,a){return await fetch(`/auth/v1/users/${e}/devices`,{method:"PUT",headers:s(),body:JSON.stringify(a)})}async function ga(e,a){return await fetch(`/auth/v1/users/${e}/devices`,{method:"DELETE",headers:s(),body:JSON.stringify(a)})}async function ma(e){return await fetch(`/auth/v1/users/${e}/webauthn`,{method:"GET",headers:s()})}async function ya(e,a){return await fetch(`/auth/v1/providers/${e}/link`,{method:"POST",headers:s(),body:JSON.stringify(a)})}async function wa(){return await fetch("/auth/v1/providers/link",{method:"DELETE",headers:s()})}async function va(e){return await fetch(`/auth/v1/users/${e}/webid/data`,{method:"GET",headers:s()})}async function pa(e,a){return await fetch(`/auth/v1/users/${e}/webid/data`,{method:"PUT",headers:s(),body:JSON.stringify(a)})}async function ba(e,a){return await fetch(`/auth/v1/users/${e}/self`,{method:"PUT",headers:s(),body:JSON.stringify(a)})}async function Sa(e){return await fetch(`/auth/v1/users/${e}/self/convert_passkey`,{method:"POST",headers:s()})}async function Fa(){return await fetch("/auth/v1/update_language",{method:"POST",headers:s()})}async function ka(e,a){return await fetch(`/auth/v1/users/${e}/webauthn/register/start`,{method:"POST",headers:s(),body:JSON.stringify(a)})}async function Ta(e,a,t){return await fetch(`/auth/v1/users/${e}/webauthn/register/start`,{method:"POST",headers:{...u.json,"pwd-csrf-token":t},body:JSON.stringify(a)})}async function Aa(e,a){return await fetch(`/auth/v1/users/${e}/webauthn/register/finish`,{method:"POST",headers:s(),body:JSON.stringify(a)})}async function _a(e,a,t){return await fetch(`/auth/v1/users/${e}/webauthn/register/finish`,{method:"POST",headers:{...u.json,"pwd-csrf-token":t},body:JSON.stringify(a)})}async function Oa(e,a){return await fetch(`/auth/v1/users/${e}/webauthn/auth/start`,{method:"POST",headers:s(),body:JSON.stringify(a)})}async function Ca(e,a){return await fetch(`/auth/v1/users/${e}/webauthn/auth/finish`,{method:"POST",headers:s(),body:JSON.stringify(a)})}async function Ea(e,a){return await fetch(`/auth/v1/users/${e}/webauthn/delete/${a}`,{method:"DELETE",headers:s()})}export{ae as $,Le as A,Oa as B,E as C,oa as D,Ta as E,De as F,Je as G,_a as H,Ve as I,qe as J,ua as K,$e as L,Ne as M,We as N,ia as O,w as P,ze as Q,q as R,Pe as S,ca as T,Ca as U,xe as V,we as W,ye as X,$a as Y,fa as Z,I as _,Ie as a,ga as a0,Se as a1,wa as a2,ya as a3,M as a4,x as a5,H as a6,V as a7,ba as a8,ma as a9,de as aA,la as aB,ue as aC,W as aD,he as aE,re as aF,se as aG,Ke as aH,ka as aa,Aa as ab,Ea as ac,na as ad,Sa as ae,pa as af,Te as ag,_e as ah,ha as ai,va as aj,b as ak,le as al,Ge as am,Be as an,oe as ao,ke as ap,ge as aq,me as ar,te as as,ne as at,fe as au,ce as av,ee as aw,X as ax,Q as ay,Re as az,Qe as b,Ce as c,ea as d,Oe as e,Ue as f,Me as g,L as h,sa as i,Ye as j,Xe as k,ie as l,Fe as m,ra as n,aa as o,ta as p,je as q,Ae as r,Ee as s,J as t,da as u,Y as v,K as w,U as x,D as y,Fa as z};
diff --git a/static/v1/_app/immutable/chunks/dataFetching.Dto1xJW6.js.br b/static/v1/_app/immutable/chunks/dataFetching.Dto1xJW6.js.br
new file mode 100644
index 000000000..797851a91
Binary files /dev/null and b/static/v1/_app/immutable/chunks/dataFetching.Dto1xJW6.js.br differ
diff --git a/static/v1/_app/immutable/chunks/dataFetching.Dto1xJW6.js.gz b/static/v1/_app/immutable/chunks/dataFetching.Dto1xJW6.js.gz
new file mode 100644
index 000000000..f99f333b4
Binary files /dev/null and b/static/v1/_app/immutable/chunks/dataFetching.Dto1xJW6.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/disclose-version.DZhRUPAc.js b/static/v1/_app/immutable/chunks/disclose-version.DZhRUPAc.js
new file mode 100644
index 000000000..e71ed5f03
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/disclose-version.DZhRUPAc.js
@@ -0,0 +1,1 @@
+import{ar as v,as as c,v as p,at as _,au as w,z as i,K as o,C as h,A as N}from"./index-client.CGppiJvc.js";function m(n){var t=document.createElement("template");return t.innerHTML=n,t.content}function r(n,t){var e=p;e.nodes_start===null&&(e.nodes_start=n,e.nodes_end=t)}function b(n,t){var e=(t&_)!==0,f=(t&w)!==0,a,u=!n.startsWith("<!>");return()=>{if(i)return r(o,null),o;a===void 0&&(a=m(u?n:"<!>"+n),e||(a=c(a)));var s=f?document.importNode(a,!0):a.cloneNode(!0);if(e){var l=c(s),d=s.lastChild;r(l,d)}else r(s,s);return s}}function g(n,t,e="svg"){var f=!n.startsWith("<!>"),a=`<${e}>${f?n:"<!>"+n}</${e}>`,u;return()=>{if(i)return r(o,null),o;if(!u){var s=m(a),l=c(s);u=c(l)}var d=u.cloneNode(!0);return r(d,d),d}}function y(n=""){if(!i){var t=v(n+"");return r(t,t),t}var e=o;return e.nodeType!==3&&(e.before(e=v()),h(e)),r(e,e),e}function C(){if(i)return r(o,null),o;var n=document.createDocumentFragment(),t=document.createComment(""),e=v();return n.append(t,e),r(t,e),n}function T(n,t){if(i){p.nodes_end=o,N();return}n!==null&&n.before(t)}const $="5";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add($);export{T as a,b,C as c,r as d,m as e,g as n,y as t};
diff --git a/static/v1/_app/immutable/chunks/disclose-version.DZhRUPAc.js.br b/static/v1/_app/immutable/chunks/disclose-version.DZhRUPAc.js.br
new file mode 100644
index 000000000..680ac7e4b
Binary files /dev/null and b/static/v1/_app/immutable/chunks/disclose-version.DZhRUPAc.js.br differ
diff --git a/static/v1/_app/immutable/chunks/disclose-version.DZhRUPAc.js.gz b/static/v1/_app/immutable/chunks/disclose-version.DZhRUPAc.js.gz
new file mode 100644
index 000000000..065757449
Binary files /dev/null and b/static/v1/_app/immutable/chunks/disclose-version.DZhRUPAc.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/entry.Ddy6icaf.js b/static/v1/_app/immutable/chunks/entry.Ddy6icaf.js
new file mode 100644
index 000000000..d95deedd8
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/entry.Ddy6icaf.js
@@ -0,0 +1,3 @@
+var Me=e=>{throw TypeError(e)};var jt=(e,r,t)=>r.has(e)||Me("Cannot "+t);var S=(e,r,t)=>(jt(e,r,"read from private field"),t?t.call(e):r.get(e)),j=(e,r,t)=>r.has(e)?Me("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(e):r.set(e,t);var xt,Ut,ee,te,re,ne,ae,oe,se,ie,Lt,le,Pt,ce,Ct;import{o as Je,_ as I,g as O,j as T,a6 as It}from"./index-client.CGppiJvc.js";import{w as _e}from"./index.BU3V9-NS.js";new URL("sveltekit-internal://");function Ot(e,r){return e==="/"||r==="ignore"?e:r==="never"?e.endsWith("/")?e.slice(0,-1):e:r==="always"&&!e.endsWith("/")?e+"/":e}function Tt(e){return e.split("%25").map(decodeURI).join("%25")}function $t(e){for(const r in e)e[r]=decodeURIComponent(e[r]);return e}function Re({href:e}){return e.split("#")[0]}function Nt(e,r,t,n=!1){const a=new URL(e);Object.defineProperty(a,"searchParams",{value:new Proxy(a.searchParams,{get(i,s){if(s==="get"||s==="getAll"||s==="has")return u=>(t(u),i[s](u));r();const l=Reflect.get(i,s);return typeof l=="function"?l.bind(i):l}}),enumerable:!0,configurable:!0});const o=["href","pathname","search","toString","toJSON"];n&&o.push("hash");for(const i of o)Object.defineProperty(a,i,{get(){return r(),e[i]},enumerable:!0,configurable:!0});return a}const Dt="/__data.json",Bt=".html__data.json";function Vt(e){return e.endsWith(".html")?e.replace(/\.html$/,Bt):e.replace(/\/$/,"")+Dt}function Ft(...e){let r=5381;for(const t of e)if(typeof t=="string"){let n=t.length;for(;n;)r=r*33^t.charCodeAt(--n)}else if(ArrayBuffer.isView(t)){const n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);let a=n.length;for(;a;)r=r*33^n[--a]}else throw new TypeError("value must be a string or TypedArray");return(r>>>0).toString(36)}function qt(e){const r=atob(e),t=new Uint8Array(r.length);for(let n=0;n<r.length;n++)t[n]=r.charCodeAt(n);return t.buffer}const Ge=window.fetch;window.fetch=(e,r)=>((e instanceof Request?e.method:(r==null?void 0:r.method)||"GET")!=="GET"&&J.delete(xe(e)),Ge(e,r));const J=new Map;function Wt(e,r){const t=xe(e,r),n=document.querySelector(t);if(n!=null&&n.textContent){let{body:a,...o}=JSON.parse(n.textContent);const i=n.getAttribute("data-ttl");return i&&J.set(t,{body:a,init:o,ttl:1e3*Number(i)}),n.getAttribute("data-b64")!==null&&(a=qt(a)),Promise.resolve(new Response(a,o))}return window.fetch(e,r)}function Mt(e,r,t){if(J.size>0){const n=xe(e,t),a=J.get(n);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(t==null?void 0:t.cache))return new Response(a.body,a.init);J.delete(n)}}return window.fetch(r,t)}function xe(e,r){let t=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(r!=null&&r.headers||r!=null&&r.body){const n=[];r.headers&&n.push([...new Headers(r.headers)].join(",")),r.body&&(typeof r.body=="string"||ArrayBuffer.isView(r.body))&&n.push(r.body),t+=`[data-hash="${Ft(...n)}"]`}return t}const Jt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Gt(e){const r=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Ht(e).map(t=>{const n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(t);if(n)return r.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const a=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(t);if(a)return r.push({name:a[1],matcher:a[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!t)return;const o=t.split(/\[(.+?)\](?!\])/);return"/"+o.map((i,s)=>{if(s%2){if(i.startsWith("x+"))return Ue(String.fromCharCode(parseInt(i.slice(2),16)));if(i.startsWith("u+"))return Ue(String.fromCharCode(...i.slice(2).split("-").map(d=>parseInt(d,16))));const l=Jt.exec(i),[,u,f,h,p]=l;return r.push({name:h,matcher:p,optional:!!u,rest:!!f,chained:f?s===1&&o[0]==="":!1}),f?"(.*?)":u?"([^/]*)?":"([^/]+?)"}return Ue(i)}).join("")}).join("")}/?$`),params:r}}function zt(e){return!/^\([^)]+\)$/.test(e)}function Ht(e){return e.slice(1).split("/").filter(zt)}function Kt(e,r,t){const n={},a=e.slice(1),o=a.filter(s=>s!==void 0);let i=0;for(let s=0;s<r.length;s+=1){const l=r[s];let u=a[s-i];if(l.chained&&l.rest&&i&&(u=a.slice(s-i,s+1).filter(f=>f).join("/"),i=0),u===void 0){l.rest&&(n[l.name]="");continue}if(!l.matcher||t[l.matcher](u)){n[l.name]=u;const f=r[s+1],h=a[s+1];f&&!f.rest&&f.optional&&h&&l.chained&&(i=0),!f&&!h&&Object.keys(n).length===o.length&&(i=0);continue}if(l.optional&&l.chained){i++;continue}return}if(!i)return n}function Ue(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Xt({nodes:e,server_loads:r,dictionary:t,matchers:n}){const a=new Set(r);return Object.entries(t).map(([s,[l,u,f]])=>{const{pattern:h,params:p}=Gt(s),d={id:s,exec:y=>{const c=h.exec(y);if(c)return Kt(c,p,n)},errors:[1,...f||[]].map(y=>e[y]),layouts:[0,...u||[]].map(i),leaf:o(l)};return d.errors.length=d.layouts.length=Math.max(d.errors.length,d.layouts.length),d});function o(s){const l=s<0;return l&&(s=~s),[l,e[s]]}function i(s){return s===void 0?s:[a.has(s),e[s]]}}function ze(e,r=JSON.parse){try{return r(sessionStorage[e])}catch{}}function He(e,r,t=JSON.stringify){const n=t(r);try{sessionStorage[e]=n}catch{}}const L=((xt=globalThis.__sveltekit_zeckhh)==null?void 0:xt.base)??"/auth/v1",Yt=((Ut=globalThis.__sveltekit_zeckhh)==null?void 0:Ut.assets)??L,Qt="1737373816864",Ke="sveltekit:snapshot",Xe="sveltekit:scroll",Ye="sveltekit:states",Zt="sveltekit:pageurl",V="sveltekit:history",G="sveltekit:navigation",ue={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},z=location.origin;function Qe(e){if(e instanceof URL)return e;let r=document.baseURI;if(!r){const t=document.getElementsByTagName("base");r=t.length?t[0].href:document.URL}return new URL(e,r)}function Le(){return{x:pageXOffset,y:pageYOffset}}function F(e,r){return e.getAttribute(`data-sveltekit-${r}`)}const Ze={...ue,"":ue.hover};function et(e){let r=e.assignedSlot??e.parentNode;return(r==null?void 0:r.nodeType)===11&&(r=r.host),r}function tt(e,r){for(;e&&e!==r;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=et(e)}}function Pe(e,r,t){let n;try{n=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI)}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,o=!n||!!a||de(n,r,t)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),i=(n==null?void 0:n.origin)===z&&e.hasAttribute("download");return{url:n,external:o,target:a,download:i}}function fe(e){let r=null,t=null,n=null,a=null,o=null,i=null,s=e;for(;s&&s!==document.documentElement;)n===null&&(n=F(s,"preload-code")),a===null&&(a=F(s,"preload-data")),r===null&&(r=F(s,"keepfocus")),t===null&&(t=F(s,"noscroll")),o===null&&(o=F(s,"reload")),i===null&&(i=F(s,"replacestate")),s=et(s);function l(u){switch(u){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ze[n??"off"],preload_data:Ze[a??"off"],keepfocus:l(r),noscroll:l(t),reload:l(o),replace_state:l(i)}}function rt(e){const r=_e(e);let t=!0;function n(){t=!0,r.update(i=>i)}function a(i){t=!1,r.set(i)}function o(i){let s;return r.subscribe(l=>{(s===void 0||t&&l!==s)&&i(s=l)})}return{notify:n,set:a,subscribe:o}}const nt={v:()=>{}};function er(){const{set:e,subscribe:r}=_e(!1);let t;async function n(){clearTimeout(t);try{const a=await fetch(`${Yt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==Qt;return o&&(e(!0),nt.v(),clearTimeout(t)),o}catch{return!1}}return{subscribe:r,check:n}}function de(e,r,t){return e.origin!==z||!e.pathname.startsWith(r)?!0:t?!(e.pathname===r+"/"||e.protocol==="file:"&&e.pathname.replace(/\/[^/]+\.html?$/,"")===r):!1}function at(e){const r=rr(e),t=new ArrayBuffer(r.length),n=new DataView(t);for(let a=0;a<t.byteLength;a++)n.setUint8(a,r.charCodeAt(a));return t}const tr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function rr(e){e.length%4===0&&(e=e.replace(/==?$/,""));let r="",t=0,n=0;for(let a=0;a<e.length;a++)t<<=6,t|=tr.indexOf(e[a]),n+=6,n===24&&(r+=String.fromCharCode((t&16711680)>>16),r+=String.fromCharCode((t&65280)>>8),r+=String.fromCharCode(t&255),t=n=0);return n===12?(t>>=4,r+=String.fromCharCode(t)):n===18&&(t>>=2,r+=String.fromCharCode((t&65280)>>8),r+=String.fromCharCode(t&255)),r}const nr=-1,ar=-2,or=-3,sr=-4,ir=-5,lr=-6;function cr(e,r){if(typeof e=="number")return a(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const t=e,n=Array(t.length);function a(o,i=!1){if(o===nr)return;if(o===or)return NaN;if(o===sr)return 1/0;if(o===ir)return-1/0;if(o===lr)return-0;if(i)throw new Error("Invalid input");if(o in n)return n[o];const s=t[o];if(!s||typeof s!="object")n[o]=s;else if(Array.isArray(s))if(typeof s[0]=="string"){const l=s[0],u=r==null?void 0:r[l];if(u)return n[o]=u(a(s[1]));switch(l){case"Date":n[o]=new Date(s[1]);break;case"Set":const f=new Set;n[o]=f;for(let d=1;d<s.length;d+=1)f.add(a(s[d]));break;case"Map":const h=new Map;n[o]=h;for(let d=1;d<s.length;d+=2)h.set(a(s[d]),a(s[d+1]));break;case"RegExp":n[o]=new RegExp(s[1],s[2]);break;case"Object":n[o]=Object(s[1]);break;case"BigInt":n[o]=BigInt(s[1]);break;case"null":const p=Object.create(null);n[o]=p;for(let d=1;d<s.length;d+=2)p[s[d]]=a(s[d+1]);break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{const d=globalThis[l],y=s[1],c=at(y),m=new d(c);n[o]=m;break}case"ArrayBuffer":{const d=s[1],y=at(d);n[o]=y;break}default:throw new Error(`Unknown type ${l}`)}}else{const l=new Array(s.length);n[o]=l;for(let u=0;u<s.length;u+=1){const f=s[u];f!==ar&&(l[u]=a(f))}}else{const l={};n[o]=l;for(const u in s){const f=s[u];l[u]=a(f)}}return n[o]}return a(0)}const ot=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...ot];const ur=new Set([...ot]);[...ur];function fr(e){return e.filter(r=>r!=null)}class pe{constructor(r,t){this.status=r,typeof t=="string"?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${r}`}}toString(){return JSON.stringify(this.body)}}class st{constructor(r,t){this.status=r,this.location=t}}class Ce extends Error{constructor(r,t,n){super(n),this.status=r,this.text=t}}const dr="x-sveltekit-invalidated",pr="x-sveltekit-trailing-slash";function he(e){return e instanceof pe||e instanceof Ce?e.status:500}function hr(e){return e instanceof Ce?e.text:"Internal Error"}let v,H,me;const mr=Je.toString().includes("$$")||/function \w+\(\) \{\}/.test(Je.toString());mr?(v={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},H={current:null},me={current:!1}):(v=new(Lt=class{constructor(){j(this,ee,I({}));j(this,te,I(null));j(this,re,I(null));j(this,ne,I({}));j(this,ae,I({id:null}));j(this,oe,I({}));j(this,se,I(-1));j(this,ie,I(new URL("https://example.com")))}get data(){return O(S(this,ee))}set data(e){T(S(this,ee),e)}get form(){return O(S(this,te))}set form(e){T(S(this,te),e)}get error(){return O(S(this,re))}set error(e){T(S(this,re),e)}get params(){return O(S(this,ne))}set params(e){T(S(this,ne),e)}get route(){return O(S(this,ae))}set route(e){T(S(this,ae),e)}get state(){return O(S(this,oe))}set state(e){T(S(this,oe),e)}get status(){return O(S(this,se))}set status(e){T(S(this,se),e)}get url(){return O(S(this,ie))}set url(e){T(S(this,ie),e)}},ee=new WeakMap,te=new WeakMap,re=new WeakMap,ne=new WeakMap,ae=new WeakMap,oe=new WeakMap,se=new WeakMap,ie=new WeakMap,Lt),H=new(Pt=class{constructor(){j(this,le,I(null))}get current(){return O(S(this,le))}set current(e){T(S(this,le),e)}},le=new WeakMap,Pt),me=new(Ct=class{constructor(){j(this,ce,I(!1))}get current(){return O(S(this,ce))}set current(e){T(S(this,ce),e)}},ce=new WeakMap,Ct),nt.v=()=>me.current=!0);function gr(e){Object.assign(v,e)}const yr=new Set(["icon","shortcut icon","apple-touch-icon"]),B=ze(Xe)??{},K=ze(Ke)??{},N={url:rt({}),page:rt({}),navigating:_e(null),updated:er()};function je(e){B[e]=Le()}function wr(e,r){let t=e+1;for(;B[t];)delete B[t],t+=1;for(t=r+1;K[t];)delete K[t],t+=1}function q(e){return location.href=e.href,new Promise(()=>{})}async function it(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(L||"/");e&&await e.update()}}function lt(){}let ge,Ie,ye,D,Oe,E;const ct=[],we=[];let P=null;const ut=[],vr=[];let W=[],w={branch:[],error:null,url:null},Te=!1,ve=!1,ft=!0,X=!1,Y=!1,dt=!1,$e=!1,Ne,U,C,be;const Q=new Set;async function br(e,r,t){var a,o,i,s;document.URL!==location.href&&(location.href=location.href),E=e,await((o=(a=e.hooks).init)==null?void 0:o.call(a)),ge=Xt(e),D=document.documentElement,Oe=r,Ie=e.nodes[0],ye=e.nodes[1],Ie(),ye(),U=(i=history.state)==null?void 0:i[V],C=(s=history.state)==null?void 0:s[G],U||(U=C=Date.now(),history.replaceState({...history.state,[V]:U,[G]:C},""));const n=B[U];n&&(history.scrollRestoration="manual",scrollTo(n.x,n.y)),t?await Ur(Oe,t):Rr(location.href,{replaceState:!0}),xr()}function kr(){ct.length=0,$e=!1}function pt(e){we.some(r=>r==null?void 0:r.snapshot)&&(K[e]=we.map(r=>{var t;return(t=r==null?void 0:r.snapshot)==null?void 0:t.capture()}))}function ht(e){var r;(r=K[e])==null||r.forEach((t,n)=>{var a,o;(o=(a=we[n])==null?void 0:a.snapshot)==null||o.restore(t)})}function mt(){je(U),He(Xe,B),pt(C),He(Ke,K)}async function gt(e,r,t,n){return Z({type:"goto",url:Qe(e),keepfocus:r.keepFocus,noscroll:r.noScroll,replace_state:r.replaceState,state:r.state,redirect_count:t,nav_token:n,accept:()=>{r.invalidateAll&&($e=!0)}})}async function Sr(e){if(e.id!==(P==null?void 0:P.id)){const r={};Q.add(r),P={id:e.id,token:r,promise:bt({...e,preload:r}).then(t=>(Q.delete(r),t.type==="loaded"&&t.state.error&&(P=null),t))}}return P.promise}async function De(e){const r=ge.find(t=>t.exec(kt(e)));r&&await Promise.all([...r.layouts,r.leaf].map(t=>t==null?void 0:t[1]()))}function yt(e,r,t){var o;w=e.state;const n=document.querySelector("style[data-sveltekit]");n&&n.remove(),Object.assign(v,e.props.page),Ne=new E.root({target:r,props:{...e.props,stores:N,components:we},hydrate:t,sync:!1}),ht(C);const a={from:null,to:{params:w.params,route:{id:((o=w.route)==null?void 0:o.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};W.forEach(i=>i(a)),ve=!0}function ke({url:e,params:r,branch:t,status:n,error:a,route:o,form:i}){let s="never";if(L&&(e.pathname===L||e.pathname===L+"/"))s="always";else for(const p of t)(p==null?void 0:p.slash)!==void 0&&(s=p.slash);e.pathname=Ot(e.pathname,s),e.search=e.search;const l={type:"loaded",state:{url:e,params:r,branch:t,error:a,route:o},props:{constructors:fr(t).map(p=>p.node.component),page:v}};i!==void 0&&(l.props.form=i);let u={},f=!v,h=0;for(let p=0;p<Math.max(t.length,w.branch.length);p+=1){const d=t[p],y=w.branch[p];(d==null?void 0:d.data)!==(y==null?void 0:y.data)&&(f=!0),d&&(u={...u,...d.data},f&&(l.props[`data_${h}`]=u),h+=1)}return(!w.url||e.href!==w.url.href||w.error!==a||i!==void 0&&i!==v.form||f)&&(l.props.page={error:a,params:r,route:{id:(o==null?void 0:o.id)??null},state:{},status:n,url:new URL(e),form:i??null,data:f?u:v.data}),l}async function Be({loader:e,parent:r,url:t,params:n,route:a,server_data_node:o}){var f,h,p;let i=null,s=!0;const l={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},u=await e();if((f=u.universal)!=null&&f.load){let d=function(...c){for(const m of c){const{href:A}=new URL(m,t);l.dependencies.add(A)}};const y={route:new Proxy(a,{get:(c,m)=>(s&&(l.route=!0),c[m])}),params:new Proxy(n,{get:(c,m)=>(s&&l.params.add(m),c[m])}),data:(o==null?void 0:o.data)??null,url:Nt(t,()=>{s&&(l.url=!0)},c=>{s&&l.search_params.add(c)},E.hash),async fetch(c,m){let A;c instanceof Request?(A=c.url,m={body:c.method==="GET"||c.method==="HEAD"?void 0:await c.blob(),cache:c.cache,credentials:c.credentials,headers:[...c.headers].length?c.headers:void 0,integrity:c.integrity,keepalive:c.keepalive,method:c.method,mode:c.mode,redirect:c.redirect,referrer:c.referrer,referrerPolicy:c.referrerPolicy,signal:c.signal,...m}):A=c;const R=new URL(A,t);return s&&d(R.href),R.origin===t.origin&&(A=R.href.slice(t.origin.length)),ve?Mt(A,R.href,m):Wt(A,m)},setHeaders:()=>{},depends:d,parent(){return s&&(l.parent=!0),r()},untrack(c){s=!1;try{return c()}finally{s=!0}}};i=await u.universal.load.call(null,y)??null}return{node:u,loader:e,server:o,universal:(h=u.universal)!=null&&h.load?{type:"data",data:i,uses:l}:null,data:i??(o==null?void 0:o.data)??null,slash:((p=u.universal)==null?void 0:p.trailingSlash)??(o==null?void 0:o.slash)}}function wt(e,r,t,n,a,o){if($e)return!0;if(!a)return!1;if(a.parent&&e||a.route&&r||a.url&&t)return!0;for(const i of a.search_params)if(n.has(i))return!0;for(const i of a.params)if(o[i]!==w.params[i])return!0;for(const i of a.dependencies)if(ct.some(s=>s(new URL(i))))return!0;return!1}function Ve(e,r){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?r??null:null}function Ar(e,r){if(!e)return new Set(r.searchParams.keys());const t=new Set([...e.searchParams.keys(),...r.searchParams.keys()]);for(const n of t){const a=e.searchParams.getAll(n),o=r.searchParams.getAll(n);a.every(i=>o.includes(i))&&o.every(i=>a.includes(i))&&t.delete(n)}return t}function vt({error:e,url:r,route:t,params:n}){return{type:"loaded",state:{error:e,url:r,route:t,params:n,branch:[]},props:{page:v,constructors:[]}}}async function bt({id:e,invalidating:r,url:t,params:n,route:a,preload:o}){if((P==null?void 0:P.id)===e)return Q.delete(P.token),P.promise;const{errors:i,layouts:s,leaf:l}=a,u=[...s,l];i.forEach(g=>g==null?void 0:g().catch(()=>{})),u.forEach(g=>g==null?void 0:g[1]().catch(()=>{}));let f=null;const h=w.url?e!==Ae(w.url):!1,p=w.route?a.id!==w.route.id:!1,d=Ar(w.url,t);let y=!1;const c=u.map((g,k)=>{var $;const _=w.branch[k],x=!!(g!=null&&g[0])&&((_==null?void 0:_.loader)!==g[1]||wt(y,p,h,d,($=_.server)==null?void 0:$.uses,n));return x&&(y=!0),x});if(c.some(Boolean)){try{f=await Et(t,c)}catch(g){const k=await M(g,{url:t,params:n,route:{id:e}});return Q.has(o)?vt({error:k,url:t,params:n,route:a}):Se({status:he(g),error:k,url:t,route:a})}if(f.type==="redirect")return f}const m=f==null?void 0:f.nodes;let A=!1;const R=u.map(async(g,k)=>{var $;if(!g)return;const _=w.branch[k],x=m==null?void 0:m[k];if((!x||x.type==="skip")&&g[1]===(_==null?void 0:_.loader)&&!wt(A,p,h,d,($=_.universal)==null?void 0:$.uses,n))return _;if(A=!0,(x==null?void 0:x.type)==="error")throw x;return Be({loader:g[1],url:t,params:n,route:a,parent:async()=>{var We;const qe={};for(let Ee=0;Ee<k;Ee+=1)Object.assign(qe,(We=await R[Ee])==null?void 0:We.data);return qe},server_data_node:Ve(x===void 0&&g[0]?{type:"skip"}:x??null,g[0]?_==null?void 0:_.server:void 0)})});for(const g of R)g.catch(()=>{});const b=[];for(let g=0;g<u.length;g+=1)if(u[g])try{b.push(await R[g])}catch(k){if(k instanceof st)return{type:"redirect",location:k.location};if(Q.has(o))return vt({error:await M(k,{params:n,url:t,route:{id:a.id}}),url:t,params:n,route:a});let _=he(k),x;if(m!=null&&m.includes(k))_=k.status??_,x=k.error;else if(k instanceof pe)x=k.body;else{if(await N.updated.check())return await it(),await q(t);x=await M(k,{params:n,url:t,route:{id:a.id}})}const $=await Er(g,b,i);return $?ke({url:t,params:n,branch:b.slice(0,$.idx).concat($.node),status:_,error:x,route:a}):await At(t,{id:a.id},x,_)}else b.push(void 0);return ke({url:t,params:n,branch:b,status:200,error:null,route:a,form:r?void 0:null})}async function Er(e,r,t){for(;e--;)if(t[e]){let n=e;for(;!r[n];)n-=1;try{return{idx:n+1,node:{node:await t[e](),loader:t[e],data:{},server:null,universal:null}}}catch{continue}}}async function Se({status:e,error:r,url:t,route:n}){const a={};let o=null;if(E.server_loads[0]===0)try{const l=await Et(t,[!0]);if(l.type!=="data"||l.nodes[0]&&l.nodes[0].type!=="data")throw 0;o=l.nodes[0]??null}catch{(t.origin!==z||t.pathname!==location.pathname||Te)&&await q(t)}const i=await Be({loader:Ie,url:t,params:a,route:n,parent:()=>Promise.resolve({}),server_data_node:Ve(o)}),s={node:await ye(),loader:ye,universal:null,server:null,data:null};return ke({url:t,params:a,branch:[i,s],status:e,error:r,route:null})}function Fe(e,r){if(!e||de(e,L,E.hash))return;let t;try{if(t=E.hooks.reroute({url:new URL(e)})??e,typeof t=="string"){const a=new URL(e);E.hash?a.hash=t:a.pathname=t,t=a}}catch{return}const n=kt(t);for(const a of ge){const o=a.exec(n);if(o)return{id:Ae(e),invalidating:r,route:a,params:$t(o),url:e}}}function kt(e){return Tt(E.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(L.length))||"/"}function Ae(e){return(E.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function St({url:e,type:r,intent:t,delta:n}){let a=!1;const o=Rt(w,t,e,r);n!==void 0&&(o.navigation.delta=n);const i={...o.navigation,cancel:()=>{a=!0,o.reject(new Error("navigation cancelled"))}};return X||ut.forEach(s=>s(i)),a?null:o}async function Z({type:e,url:r,popped:t,keepfocus:n,noscroll:a,replace_state:o,state:i={},redirect_count:s=0,nav_token:l={},accept:u=lt,block:f=lt}){const h=Fe(r,!1),p=St({url:r,type:e,delta:t==null?void 0:t.delta,intent:h});if(!p){f();return}const d=U,y=C;u(),X=!0,ve&&N.navigating.set(H.current=p.navigation),be=l;let c=h&&await bt(h);if(!c){if(de(r,L,E.hash))return await q(r);c=await At(r,{id:null},await M(new Ce(404,"Not Found",`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404)}if(r=(h==null?void 0:h.url)||r,be!==l)return p.reject(new Error("navigation aborted")),!1;if(c.type==="redirect")if(s>=20)c=await Se({status:500,error:await M(new Error("Redirect loop"),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}});else return gt(new URL(c.location,r).href,{},s+1,l),!1;else c.props.page.status>=400&&await N.updated.check()&&(await it(),await q(r));if(kr(),je(d),pt(y),c.props.page.url.pathname!==r.pathname&&(r.pathname=c.props.page.url.pathname),i=t?t.state:i,!t){const b=o?0:1,g={[V]:U+=b,[G]:C+=b,[Ye]:i};(o?history.replaceState:history.pushState).call(history,g,"",r),o||wr(U,C)}if(P=null,c.props.page.state=i,ve){w=c.state,c.props.page&&(c.props.page.url=r);const b=(await Promise.all(vr.map(g=>g(p.navigation)))).filter(g=>typeof g=="function");if(b.length>0){let g=function(){W=W.filter(k=>!b.includes(k))};b.push(g),W.push(...b)}Ne.$set(c.props),gr(c.props.page),dt=!0}else yt(c,Oe,!1);const{activeElement:m}=document;await It();const A=t?t.scroll:a?Le():null;if(ft){const b=r.hash&&document.getElementById(decodeURIComponent(E.hash?r.hash.split("#")[2]??"":r.hash.slice(1)));A?scrollTo(A.x,A.y):b?b.scrollIntoView():scrollTo(0,0)}const R=document.activeElement!==m&&document.activeElement!==document.body;!n&&!R&&Lr(),ft=!0,c.props.page&&Object.assign(v,c.props.page),X=!1,e==="popstate"&&ht(C),p.fulfil(void 0),W.forEach(b=>b(p.navigation)),N.navigating.set(H.current=null)}async function At(e,r,t,n){return e.origin===z&&e.pathname===location.pathname&&!Te?await Se({status:n,error:t,url:e,route:r}):await q(e)}function _r(){let e;D.addEventListener("mousemove",o=>{const i=o.target;clearTimeout(e),e=setTimeout(()=>{n(i,2)},20)});function r(o){o.defaultPrevented||n(o.composedPath()[0],1)}D.addEventListener("mousedown",r),D.addEventListener("touchstart",r,{passive:!0});const t=new IntersectionObserver(o=>{for(const i of o)i.isIntersecting&&(De(new URL(i.target.href)),t.unobserve(i.target))},{threshold:0});function n(o,i){const s=tt(o,D);if(!s)return;const{url:l,external:u,download:f}=Pe(s,L,E.hash);if(u||f)return;const h=fe(s),p=l&&Ae(w.url)===Ae(l);if(!h.reload&&!p)if(i<=h.preload_data){const d=Fe(l,!1);d&&Sr(d)}else i<=h.preload_code&&De(l)}function a(){t.disconnect();for(const o of D.querySelectorAll("a")){const{url:i,external:s,download:l}=Pe(o,L,E.hash);if(s||l)continue;const u=fe(o);u.reload||(u.preload_code===ue.viewport&&t.observe(o),u.preload_code===ue.eager&&De(i))}}W.push(a),a()}function M(e,r){if(e instanceof pe)return e.body;const t=he(e),n=hr(e);return E.hooks.handleError({error:e,event:r,status:t,message:n})??{message:n}}function Rr(e,r={}){return e=new URL(Qe(e)),e.origin!==z?Promise.reject(new Error("goto: invalid URL")):gt(e,r,0)}function xr(){var r;history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(mt(),!X){const a=Rt(w,void 0,null,"leave"),o={...a.navigation,cancel:()=>{n=!0,a.reject(new Error("navigation cancelled"))}};ut.forEach(i=>i(o))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&mt()}),(r=navigator.connection)!=null&&r.saveData||_r(),D.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=tt(t.composedPath()[0],D);if(!n)return;const{url:a,external:o,target:i,download:s}=Pe(n,L,E.hash);if(!a)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const l=fe(n);if(!(n instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||s)return;const[u,f]=(E.hash?a.hash.replace(/^#/,""):a.href).split("#"),h=u===Re(location);if(o||l.reload&&(!h||!f)){St({url:a,type:"link"})?X=!0:t.preventDefault();return}if(f!==void 0&&h){const[,p]=w.url.href.split("#");if(p===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)window.scrollTo({top:0});else{const d=n.ownerDocument.getElementById(decodeURIComponent(f));d&&(d.scrollIntoView(),d.focus())}return}if(Y=!0,je(U),e(a),!l.replace_state)return;Y=!1}t.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),Z({type:"link",url:a,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??a.href===location.href})}),D.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),a=t.submitter;if(((a==null?void 0:a.formTarget)||n.target)==="_blank"||((a==null?void 0:a.formMethod)||n.method)!=="get")return;const o=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||n.action);if(de(o,L,!1))return;const i=t.target,s=fe(i);if(s.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(i),u=a==null?void 0:a.getAttribute("name");u&&l.append(u,(a==null?void 0:a.getAttribute("value"))??""),o.search=new URLSearchParams(l).toString(),Z({type:"form",url:o,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??o.href===location.href})}),addEventListener("popstate",async t=>{var n;if((n=t.state)!=null&&n[V]){const a=t.state[V];if(be={},a===U)return;const o=B[a],i=t.state[Ye]??{},s=new URL(t.state[Zt]??location.href),l=t.state[G],u=Re(location)===Re(w.url);if(l===C&&(dt||u)){e(s),B[U]=Le(),o&&scrollTo(o.x,o.y),i!==v.state&&(v.state=i,Ne.$set({page:v})),U=a;return}const f=a-U;await Z({type:"popstate",url:s,popped:{state:i,scroll:o,delta:f},accept:()=>{U=a,C=l},block:()=>{history.go(-f)},nav_token:be})}else if(!Y){const a=new URL(location.href);e(a)}}),addEventListener("hashchange",()=>{Y?(Y=!1,history.replaceState({...history.state,[V]:++U,[G]:C},"",location.href)):E.hash&&w.url.hash===location.hash&&Z({type:"goto",url:w.url})});for(const t of document.querySelectorAll("link"))yr.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&N.navigating.set(H.current=null)});function e(t){w.url=v.url=t,N.page.set({data:v.data,error:v.error,form:v.form,params:v.params,route:v.route,state:v.state,status:v.status,url:t}),N.page.notify()}}async function Ur(e,{status:r=200,error:t,node_ids:n,params:a,route:o,data:i,form:s}){Te=!0;const l=new URL(location.href);({params:a={},route:o={id:null}}=Fe(l,!1)||{});let u,f=!0;try{const h=n.map(async(y,c)=>{const m=i[c];return m!=null&&m.uses&&(m.uses=_t(m.uses)),Be({loader:E.nodes[y],url:l,params:a,route:o,parent:async()=>{const A={};for(let R=0;R<c;R+=1)Object.assign(A,(await h[R]).data);return A},server_data_node:Ve(m)})}),p=await Promise.all(h),d=ge.find(({id:y})=>y===o.id);if(d){const y=d.layouts;for(let c=0;c<y.length;c++)y[c]||p.splice(c,0,void 0)}u=ke({url:l,params:a,branch:p,status:r,error:t,form:s,route:d??null})}catch(h){if(h instanceof st){await q(new URL(h.location,location.href));return}u=await Se({status:he(h),error:await M(h,{url:l,params:a,route:o}),url:l,route:o}),e.textContent="",f=!1}u.props.page&&(u.props.page.state={}),yt(u,e,f)}async function Et(e,r){var a;const t=new URL(e);t.pathname=Vt(e.pathname),e.pathname.endsWith("/")&&t.searchParams.append(pr,"1"),t.searchParams.append(dr,r.map(o=>o?"1":"0").join(""));const n=await Ge(t.href);if(!n.ok){let o;throw(a=n.headers.get("content-type"))!=null&&a.includes("application/json")?o=await n.json():n.status===404?o="Not Found":n.status===500&&(o="Internal Error"),new pe(n.status,o)}return new Promise(async o=>{var h;const i=new Map,s=n.body.getReader(),l=new TextDecoder;function u(p){return cr(p,{...E.decoders,Promise:d=>new Promise((y,c)=>{i.set(d,{fulfil:y,reject:c})})})}let f="";for(;;){const{done:p,value:d}=await s.read();if(p&&!f)break;for(f+=!d&&f?`
+`:l.decode(d,{stream:!0});;){const y=f.indexOf(`
+`);if(y===-1)break;const c=JSON.parse(f.slice(0,y));if(f=f.slice(y+1),c.type==="redirect")return o(c);if(c.type==="data")(h=c.nodes)==null||h.forEach(m=>{(m==null?void 0:m.type)==="data"&&(m.uses=_t(m.uses),m.data=u(m.data))}),o(c);else if(c.type==="chunk"){const{id:m,data:A,error:R}=c,b=i.get(m);i.delete(m),R?b.reject(u(R)):b.fulfil(u(A))}}}})}function _t(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}function Lr(){const e=document.querySelector("[autofocus]");if(e)e.focus();else{const r=document.body,t=r.getAttribute("tabindex");r.tabIndex=-1,r.focus({preventScroll:!0,focusVisible:!1}),t!==null?r.setAttribute("tabindex",t):r.removeAttribute("tabindex");const n=getSelection();if(n&&n.type!=="None"){const a=[];for(let o=0;o<n.rangeCount;o+=1)a.push(n.getRangeAt(o));setTimeout(()=>{if(n.rangeCount===a.length){for(let o=0;o<n.rangeCount;o+=1){const i=a[o],s=n.getRangeAt(o);if(i.commonAncestorContainer!==s.commonAncestorContainer||i.startContainer!==s.startContainer||i.endContainer!==s.endContainer||i.startOffset!==s.startOffset||i.endOffset!==s.endOffset)return}n.removeAllRanges()}})}}}function Rt(e,r,t,n){var s,l;let a,o;const i=new Promise((u,f)=>{a=u,o=f});return i.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:((s=e.route)==null?void 0:s.id)??null},url:e.url},to:t&&{params:(r==null?void 0:r.params)??null,route:{id:((l=r==null?void 0:r.route)==null?void 0:l.id)??null},url:t},willUnload:!r,type:n,complete:i},fulfil:a,reject:o}}export{br as a,v as p,N as s,me as u};
diff --git a/static/v1/_app/immutable/chunks/entry.Ddy6icaf.js.br b/static/v1/_app/immutable/chunks/entry.Ddy6icaf.js.br
new file mode 100644
index 000000000..587e54e3a
Binary files /dev/null and b/static/v1/_app/immutable/chunks/entry.Ddy6icaf.js.br differ
diff --git a/static/v1/_app/immutable/chunks/entry.Ddy6icaf.js.gz b/static/v1/_app/immutable/chunks/entry.Ddy6icaf.js.gz
new file mode 100644
index 000000000..870541028
Binary files /dev/null and b/static/v1/_app/immutable/chunks/entry.Ddy6icaf.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/helpers.DVmWh-6p.js b/static/v1/_app/immutable/chunks/helpers.DVmWh-6p.js
new file mode 100644
index 000000000..a58c106e9
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/helpers.DVmWh-6p.js
@@ -0,0 +1,1 @@
+function s(r){let e=r+"=",n=decodeURIComponent(document.cookie).split(";");for(let o=0;o<n.length;o++){let t=n[o];for(;t.charAt(0)===" ";)t=t.substring(1);if(t.indexOf(e)===0)return t.substring(e.length,t.length)}return""}const a=r=>{let e="";const n=r||8;for(let o=0;o<n;o+=1){let t=60;for(;t>57&&t<65||t>90&&t<97;)t=Math.floor(Math.random()*74)+48;e=e.concat(String.fromCharCode(t))}return e},i=async r=>await new Promise(e=>setTimeout(e,r));export{s as a,a as g,i as s};
diff --git a/static/v1/_app/immutable/chunks/helpers.DVmWh-6p.js.br b/static/v1/_app/immutable/chunks/helpers.DVmWh-6p.js.br
new file mode 100644
index 000000000..8b95ad5a9
Binary files /dev/null and b/static/v1/_app/immutable/chunks/helpers.DVmWh-6p.js.br differ
diff --git a/static/v1/_app/immutable/chunks/helpers.DVmWh-6p.js.gz b/static/v1/_app/immutable/chunks/helpers.DVmWh-6p.js.gz
new file mode 100644
index 000000000..491adcc6a
Binary files /dev/null and b/static/v1/_app/immutable/chunks/helpers.DVmWh-6p.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/i18n.svelte.BTGsPiz_.js b/static/v1/_app/immutable/chunks/i18n.svelte.BTGsPiz_.js
new file mode 100644
index 000000000..3ff9e3402
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/i18n.svelte.BTGsPiz_.js
@@ -0,0 +1,82 @@
+import{u as s}from"./language.svelte.n4n5oz7-.js";const r={common:{cancel:"Cancel",email:"E-Mail",errTooShort:"Input too short",errTooLong:"Input too long",invalidInput:"Invalid Input",never:"Never",password:"Password",required:"Required",save:"Save"},account:{account:"User Account",accType:"Account Type",accTypePasskeyText1:`This account is currently a passkey only account.
+This means, that you do not have any password, because you don't need one.`,accTypePasskeyText2:`You can convert your account and add a password. But keep
+in mind, that this implies, that you need to verify each new device with the password additionally.
+You then cannot just log in on any device, where you have not entered the password beforehand at
+least once.`,accTypePasskeyText3:"Do you want to convert your account and add a password?",accessExp:"Access Expires",accessRenew:"Access Renew Until",accessRenewDelete:"Delete the possibility to renew",birthdate:"Birthdate",city:"City",changePassword:"Change Password",convertAccount:"Convert Account",convertAccountP1:`You can convert your account to a Passkey-Only account.
+This conversion deletes your password and you can and must only ever login with your registered
+passkeys. Keep in mind, that only passkeys with the additional User Verification will be accepted.
+If you passkeys support this, you will find a small symbol behind the name of the key on the 'MFA'
+page.`,country:"Country",deviceId:"ID",deviceName:"Name",devices:"Devices",devicesDesc:"Devices linked to this account",emailUpdateConfirm:`The E-Mail address has not been updated yet. A message has been
+sent out to your new address. You need to click the confirmation link inside it. Once it has been
+confirmed, your new address will be updated.`,emailVerified:"E-Mail verified",familyName:"Family Name",federatedConvertPassword1:`You have a federated account. This means you log in
+by using an external authentication provider. Your current provider is:`,federatedConvertPassword2:`You can request a password reset via email. This will
+add a local password to your account upon completion. You would then be able to log in via your
+external provider or by local password. Do you want to request a reset?`,generateRandom:"Generate Randomly",givenName:"Given Name",groups:"Groups",key:"Key",keyUnique:"Key must be unique",lastLogin:"Last Login",mfaActivated:"MFA activated",navInfo:"Info",navEdit:"Edit",navMfa:"MFA",navLogout:"Logout",optionalValues:"Optional Values",passwordConfirm:"Confirm Password",passwordCurr:"Current Password",passwordCurrReq:"Current password is required",passwordNew:"New Password",passwordNewReq:"New password is required",passwordNoMatch:"Password verification is required",passwordExpiry:"Password expiry",passwordPolicyFollow:"You must follow the password policy",passwordReset:"Password Reset",phone:"Phone",providerLink:"Federate Account",providerLinkDesc:`You can link this account to one of the following login providers.
+After activating this function, you will be redirected to the login page of the chosen one.
+After a successful login and if the email matches, your account will be linked.`,providerUnlink:"Unlink Federation",providerUnlinkDesc:`Only if you have set up at least a password or a passkey for this
+account, you can unlink it from the upstream provider.`,regDate:"Registration Date",regIp:"Registration from IP",roles:"Roles",street:"Street",user:"User",userCreated:"User Created",userEnabled:"User Enabled",userExpiry:"User Expires",userVerifiedTooltip:"Secured with fingerprint or PIN",validEmail:"Invalid E-Mail format",validGivenName:"Your given name should have 1 - 32 non-special characters",validFamilyName:"Your family name should have 1 - 32 non-special characters",webIdDesc:`You can configure the fields that should be exposed with your WebID.
+This is a feature used by some networks for decentralized logins. If you do not know what it is,
+you most probably do not need it.`,webIdDescData:"You can add custom data fields to your WebID in valid FOAF Vocabulary",webIdExpertMode:"Enable Expert Mode",zip:"ZIP"},authorize:{clientForceMfa:`This login forces MFA to achieve higher security.
+To get access, you need to log in to your account and add at least one additional Passkey`,email:"E-Mail",emailBadFormat:"Bad E-Mail format",emailRequired:"E-Mail is required",emailSentMsg:"If your E-Mail exists, a request has been sent",http429:"Too many invalid inputs. Locked until:",invalidCredentials:"Invalid credentials",invalidKeyUsed:"Invalid Key",login:"Login",mfaAck:"Acknowledged",password:"Password",passwordForgotten:"Password forgotten?",passwordRequest:"Request",passwordRequired:"Password is required",provideMfa:"Please login with your MFA device",requestExpires:"Request expires",signUp:"User Registration"},device:{accept:"Accept",autoRedirectAccount:"You will be redirected to your account now",closeWindow:"You can close this window now.",decline:"Decline",desc:"Please enter the {{count}} characters user code from your device.",descScopes:"The device requests access to:",isAccepted:"The request has been accepted.",isDeclined:"The request has been declined.",submit:"Submit",title:"Device Authorization",userCode:"User Code",wrongOrExpired:"Wrong or expired code"},emailChange:{title:"E-Mail Change confirmed",textChanged:"Your E-Mail address has been changed from",textLogin:"You can now log in using your new address.",to:"to"},error:{details:"Show Details"},index:{register:"Register",accountLogin:"Account",adminLogin:"Admin"},logout:{logout:"Logout",confirmMsg:"Do you really want to logout and end your session?",cancel:"Cancel"},mfa:{p1:"If you plan on using your MFA key with multiple systems like Windows and Android, you should do the registration with Android.",p2:"Android is the platform with the least supported features for the passwordless technology. Keys you register with Android work elsewhere too. However, this does not apply the other way around.",delete:"Delete",errorReg:"Error starting the Registration process",invalidKeyUsed:"Invalid Key used",lastUsed:"Last used",noKey:"No Security key registered on this slot",register:"Register",registerNew:"Register New Key",registerd:"Registered",registerdKeys:"Registered Keys",passkeyName:"Passkey Name",passkeyNameErr:"2 - 32 non-special characters",test:"Test",testError:"Error starting the Test",testSuccess:"Test successful"},passwordPolicy:{passwordPolicy:"Password Policy",lengthMin:"Length min",lengthMax:"Length max",lowercaseMin:"Lowercase letters min",uppercaseMin:"Uppercase letters min",digitsMin:"Digits min",specialMin:"Special characters min",notRecent:"Not one of last recent passwords"},passwordReset:{accountLogin:"Account Login",badFormat:"Bad Format",fidoLink:"https://fidoalliance.org/fido2",generate:"Generate",newAccDesc1:"You have the option between two account types: passwordless or traditional password",newAccDesc2:`The passwordless account is always preferred, because it provides
+a way with stronger security. You will need at least one passkey (Yubikey, Apple Touch ID, Windows Hello,
+...) to create such an account. Your device must embrace the FIDO2 standard. For more information
+about this, you may follow this link: `,newAccount:"New Account",passwordReset:"Password Reset",password:"Password",passwordless:"FIDO Passkey",passwordConfirm:"Password Confirm",passwordNoMatch:"Passwords do not match",required:"Required",save:"Save",success1:"The password has been updated successfully.",success2:"You will be redirected shortly.",success3:"If you are not being redirected, please click here:",successPasskey1:"Your new passkey has been registered successfully.",successPasskey2:`Please log into your account and register a second backup key as
+soon as possible. With a passkey only account, you wil not be able to use a password reset via
+E-Mail in case you lose your current key.`},register:{domainAllowed:"Allowed domain:",domainErr:"E-Mail domain not allowed",domainRestricted:"E-Mail domains are restricted",email:"E-Mail",emailBadFormat:"Bad E-Mail format",emailCheck:"Please check your E-Mail inbox",regexName:"Name should have 2 - 32 non-special characters",register:"Register",success:"Registration successful",userReg:"User Registration"}},i={common:{cancel:"Abbrechen",email:"E-Mail",errTooShort:"Eingabe zu kurz",errTooLong:"Eingabe zu lang",invalidInput:"Ung\xFCltige Eingaben",never:"Niemals",password:"Passwort",required:"Notwendig",save:"Speichern"},account:{account:"Benutzer Account",accType:"Account Typ",accTypePasskeyText1:`Dies ist ein "Passkey-Only" Account. Das bedeutet, dass
+dieser Account kein Passwort hat und auch keines ben\xF6tigt.`,accTypePasskeyText2:`Der Account kann in einen Passwort-Account umgewandelt
+werden. Das w\xFCrde allerdings bedeuten, dass ein Login auf einem neuen Ger\xE4t ohne vorherige, zumindest
+einmalige zus\xE4tzliche Verifizierung des Passwortes nicht mehr m\xF6glich sein wird.`,accTypePasskeyText3:"Soll dieser Account gewandelt und ein Passwort hinzugef\xFCgt werden?",accessExp:"Zugang erlischt",accessRenew:"Zugang Erneuerung bis",accessRenewDelete:"M\xF6glichkeit zur Erneuerung l\xF6schen",birthdate:"Geburtsdatum",city:"Stadt",changePassword:"Passwort wechseln",convertAccount:"Account Umwandeln",convertAccountP1:`Dieser Account kann in einen Passkey-Only Account umgewandelt
+werden. Diese Umwandling l\xF6scht das Passwort und erlaubt den alleinigen Login mit den registrieren
+Passkeys. Nur Passkeys mit zus\xE4tzlicher Benutzerverifizierung werden akzeptiert. Diese sind auf der
+'MFA' Seite durch das zus\xE4tzliche Symbol hinter dem Passkey Namen gekennzeichnet.`,country:"Land",deviceId:"ID",deviceName:"Name",devices:"Ger\xE4te",devicesDesc:"Mit diesem Account verkn\xFCpfte Ger\xE4te",emailUpdateConfirm:`Die E-Mail Adresse wurde noch nicht aktualisiert. Eine Nachricht
+mit einem Best\xE4tigungslink wurde an die neue Adresse geschickt. Das Update muss \xFCber den
+enthaltenen Link best\xE4tigt werden. Nach der Best\xE4tigung wird die neue Adresse gesetzt.`,emailVerified:"E-Mail verifiziert",familyName:"Nachname",federatedConvertPassword1:`Dies ist ein verkn\xFCpfter Account. Das bedeutet, dass
+der Login via externem Provider zur Authenzifizierung geschieht. Der derzeitige Provider ist:`,federatedConvertPassword2:`Es kann ein Passwort Reset via E-Mail angefordert
+werden. Das w\xFCrde nach Abschluss diesem Account ein lokales Passwort hinzuf\xFCgen. Danach w\xE4re der
+Login entweder per externem Provider oder lokalem Password m\xF6glich. Passwort Reset anfordern?`,generateRandom:"Zuf\xE4llig generiert",givenName:"Vorname",groups:"Gruppen",key:"Schl\xFCssel",keyUnique:"Schl\xFCssel muss einzigartig sein",lastLogin:"Letzter Login",mfaActivated:"MFA aktiviert",navInfo:"Info",navEdit:"Editieren",navMfa:"MFA",navLogout:"Logout",optionalValues:"Optionale Angaben",passwordConfirm:"Passwort best\xE4tigen",passwordCurr:"Derzeitiges Passwort",passwordCurrReq:"Derzeitiges Passwort ist notwendig",passwordNew:"Neues Passwort",passwordNewReq:"Neues Passwort ist notwendig",passwordNoMatch:"Passw\xF6rter stimmen nicht \xFCberein",passwordExpiry:"Passwort Ablauf",passwordPolicyFollow:"Befolgen Sie die Passwort Regeln",passwordReset:"Passwort Reset",phone:"Telefon",providerLink:"Account Verbinden",providerLinkDesc:`Dieser Account kann mit einem der folgenden Login Provider
+verbunden werden. Nach der Aktivierung des Prozesses wird eine Weiterleitung auf die Login Seite
+des gew\xE4hlten Providers ausgel\xF6st. Nach erfolgreichem Login und bei \xDCbereinstimmung der E-Mail
+Adressen wird dieser Account verkn\xFCpft.`,providerUnlink:"Verbindung Trennen",providerUnlinkDesc:`Nur wenn mindestens ein Passwort oder ein Passkey f\xFCr diesen
+Account gesetzt ist, kann die Verbindung zum Provider gel\xF6st werden.`,regDate:"Datum der Registrierung",regIp:"Registrierung von IP",roles:"Rollen",street:"Stra\xDFe",user:"Benutzer",userCreated:"Benutzer erstellt",userEnabled:"Benutzer Aktiviert",userExpiry:"Benutzer Ablauf",userVerifiedTooltip:"Abgesichert durch Fingerabdruck oder PIN",validEmail:"G\xFCltige E-Mail Adresse",validGivenName:"Vorname, 1 - 32 Buchstaben, keine Sonderzeichen",validFamilyName:"Nachname, 1 - 32  Buchstaben, keine Sonderzeichen",webIdDesc:`Hier k\xF6nnen Sie die Felder festlegen, die \xFCber Ihre WebID ver\xF6ffentlicht
+werden. Dies ist ein Feature, was von manchen Netzwerken f\xFCr dezentrale Logins genutzt wird.
+Sollten Sie nicht wissen, was die WebID ist, brauchen Sie sie h\xF6chstwahrscheinlich nicht.`,webIdDescData:`Sie k\xF6nnen eigene Daten zu Ihrer WebID in g\xFCltigem FOAF Vokabular
+hinzuf\xFCgen:`,webIdExpertMode:"Expertenmodus aktivieren",zip:"PLZ"},authorize:{clientForceMfa:`Dieser Login setzt MFA voraus f\xFCr eine erh\xF6hte Sicherheit.
+Um Zugang zu bekommen, m\xFCssen Sie sie in Ihren Account einloggen und mindestens einen Passkey
+hinzuf\xFCgen.`,email:"E-Mail",emailBadFormat:"Inkorrektes E-Mail Format",emailRequired:"E-Mail ist notwendig",emailSentMsg:"Sollte Ihre Adresse registriert sein, wurde eine Nachricht versandt",http429:"Zu viele ung\xFCltige Versuche. Gesperrt bis:",invalidCredentials:"Ung\xFCltige Zugangsdaten",invalidKeyUsed:"Ung\xFCltiger Sicherheitsschl\xFCssel",login:"Login",mfaAck:"Best\xE4tigt",password:"Password",passwordForgotten:"Password vergessen?",passwordRequest:"Anfordern",passwordRequired:"Password ist notwendig",provideMfa:"Bitte stellen Sie Ihr MFA Ger\xE4t zur Verf\xFCgung",requestExpires:"Anfrage l\xE4uft ab",signUp:"Benutzer Registrierung"},device:{accept:"Akzeptieren",autoRedirectAccount:"Automatische Weiterleitung zum Account folgt",closeWindow:"Dieses Fenster kann nun geschlossen werden.",decline:"Ablehnen",desc:"Bitte den {{count}}-stelligen vom Ger\xE4te angezeigten Benutzer Code eingeben.",descScopes:"Das Ger\xE4t fragt Zugang an zu:",isAccepted:"Die Anfrage wurde akzeptiert",isDeclined:"Die Anfrage wurde abgewiesen",submit:"Absenden",title:"Ger\xE4t Authorisierung",userCode:"Benutzer Code",wrongOrExpired:"Ung\xFCltiger oder abgelaufener Code"},emailChange:{title:"E-Mail Wechsel best\xE4tigt",textChanged:"Ihre E-Mail Adresse wurde erfolgreich ge\xE4ndert von",textLogin:"Sie k\xF6nnen sich jetzt mit der neuen Adresse einloggen.",to:"zu"},error:{details:"Details Anzeigen"},index:{register:"Registrieren",accountLogin:"Account",adminLogin:"Admin"},logout:{logout:"Logout",confirmMsg:"Sind Sie sicher, dass Sie sich ausloggen und die Session beenden m\xF6chten?",cancel:"Abbrechen"},mfa:{p1:"Wenn Sie mehrere Systeme parallel nutzen m\xF6chten, wie z.B. Windows und Android, sollten Sie die Registrierung mit Android durchf\xFChren.",p2:"Android ist diejenige Plattform, die derzeit die wenigsten Features der passwortlosen Technologie unterst\xFCtzt. Schl\xFCssel, die dort registriert werden, funktionieren auf anderen Ger\xE4ten gleicherma\xDFen. Dies gilt jedoch nicht andersherum.",delete:"L\xF6schen",errorReg:"Fehler beim Starten der Registrierung",invalidKeyUsed:"Ung\xFCltiger Sicherheitsschl\xFCssel benutzt",lastUsed:"Zuletzt genutzt",noKey:"Es wurde in diesem Speicher noch kein Sicherheitsschl\xFCssel registriert",register:"Registrieren",registerNew:"Neuen Key Registrieren",registerd:"Registriert",registerdKeys:"Registrierte Keys",passkeyName:"Passkey Name",passkeyNameErr:"2 - 32 Buchstaben, keine Sonderzeichen",test:"Test",testError:"Fehler beim Starten des Tests",testSuccess:"Test erfolgreich"},passwordPolicy:{passwordPolicy:"Passwort Regeln",lengthMin:"L\xE4nge min",lengthMax:"L\xE4nge max",lowercaseMin:"Kleinbuchstaben min",uppercaseMin:"Gro\xDFbuchstaben min",digitsMin:"Ziffern min",specialMin:"Spezielle Buchstaben min",notRecent:"Keins der letzten Passw\xF6rter"},passwordReset:{accountLogin:"Account Login",badFormat:"Ung\xFCltiges Format",fidoLink:"https://fidoalliance.org/fido2",generate:"Generieren",newAccDesc1:`Sie haben die Option zwischen zwei Account Typen zu w\xE4hlen: Passwortlos oder
+traditionalles Passwort.`,newAccDesc2:`Der passwortlose Account Typ ist immer zu bevorzugen. Er bietet einen
+sehr viel h\xF6heren Sicherheitsstandard als traditionelle Passw\xF6rter und gleichzeitig einen einfacheren
+und schnelleren Login.
+Dazu wird mindestens ein Passkey (Yubikey, Apple Touch ID, Windows Hello, ...) ben\xF6tigt, welcher dem
+FIDO2 Standard gerecht wird. F\xFCr weitere Informationen k\xF6nnen Sie diesem Link folgen: `,newAccount:"Neuer Account",passwordReset:"Passwort Zur\xFCcksetzen",password:"Passwort",passwordless:"FIDO Passkey",passwordConfirm:"Passwort best\xE4tigen",passwordNoMatch:"Passw\xF6rter stimmen nicht \xFCberein",required:"Notwendig",save:"Speichern",success1:"Das Passwort wurde erfolgreich zur\xFCckgesetzt.",success2:"Sie werden in K\xFCrze weitergeleitet.",success3:"Sollte Sie nicht weitergeleitet werden, klicken Sie bitte hier:",successPasskey1:"Der neue Passkey wurde erfolgreich registriert.",successPasskey2:`Bitte loggen Sie sich direkt in Ihren Account ein und registrieren
+Sie mindestens einen weiteren Backup Passkey. Ein passwortloser Account kann nicht den Passwort
+Reset via E-Mail nutzen f\xFCr den Fall, dass der derzeitige Passkey abhanden kommt.`},register:{domainAllowed:"Erlaubte Domain:",domainErr:"E-Mail Domain ist nicht erlaubt",domainRestricted:"E-Mail Domains sind beschr\xE4nkt",email:"E-Mail",emailBadFormat:"Ung\xFCltiges E-Mail Format",emailCheck:"Bitte pr\xFCfen Sie Ihren E-Mail Posteingang",regexName:"Name mit 2 - 32 Buchstaben ohne Sonderzeichen",register:"Registrieren",success:"Registrierung erfolgreich",userReg:"Benutzer Registrierung"}},n={common:{cancel:"\uCDE8\uC18C",email:"\uC774\uBA54\uC77C",errTooShort:"\uC785\uB825\uC774 \uB108\uBB34 \uC9E7\uC2B5\uB2C8\uB2E4.",errTooLong:"\uC785\uB825\uC774 \uB108\uBB34 \uAE41\uB2C8\uB2E4.",invalidInput:"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uC785\uB825\uC785\uB2C8\uB2E4.",never:"\uBB34\uAE30\uD55C",password:"\uBE44\uBC00\uBC88\uD638",required:"\uD544\uC218 \uD56D\uBAA9\uC785\uB2C8\uB2E4.",save:"\uC800\uC7A5"},account:{account:"\uC0AC\uC6A9\uC790 \uACC4\uC815",accType:"\uACC4\uC815 \uC885\uB958",accTypePasskeyText1:`\uC774 \uACC4\uC815\uC740 \uD604\uC7AC \uD328\uC2A4\uD0A4 \uC804\uC6A9 \uACC4\uC815\uC785\uB2C8\uB2E4.
+\uC989, \uBE44\uBC00\uBC88\uD638\uAC00 \uD544\uC694\uD558\uC9C0 \uC54A\uC73C\uBBC0\uB85C, \uBE44\uBC00\uBC88\uD638\uAC00 \uC804\uD600 \uC5C6\uB2E4\uB294 \uB73B\uC785\uB2C8\uB2E4.`,accTypePasskeyText2:`\uACC4\uC815\uC744 \uC804\uD658\uD558\uACE0 \uBE44\uBC00\uBC88\uD638\uB97C \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+\uB2E4\uB9CC, \uC774\uB807\uAC8C \uD558\uBA74 \uC0C8 \uAE30\uAE30\uB97C \uC778\uC99D\uD560 \uB54C\uB9C8\uB2E4 \uCD94\uAC00\uC801\uC73C\uB85C \uBE44\uBC00\uBC88\uD638 \uC778\uC99D\uC744 \uD574\uC57C \uD55C\uB2E4\uB294 \uAC83\uC744 \uBA85\uC2EC\uD574 \uC8FC\uC138\uC694.
+\uD55C \uBC88\uB3C4 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD55C \uC801\uC774 \uC5C6\uB294 \uAE30\uAE30\uC5D0\uC11C\uB294 \uBC14\uB85C \uB85C\uADF8\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.`,accTypePasskeyText3:"\uACC4\uC815\uC744 \uC804\uD658\uD558\uACE0 \uBE44\uBC00\uBC88\uD638\uB97C \uCD94\uAC00\uD558\uACA0\uC2B5\uB2C8\uAE4C?",accessExp:"\uC811\uADFC \uB9CC\uB8CC",accessRenew:"\uC811\uADFC \uAC31\uC2E0 \uAE30\uD55C",accessRenewDelete:"\uAC31\uC2E0\uD560 \uAC00\uB2A5\uC131\uC744 \uC81C\uAC70",birthdate:"\uC0DD\uB144\uC6D4\uC77C",city:"\uB3C4\uC2DC",changePassword:"\uBE44\uBC00\uBC88\uD638 \uBCC0\uACBD",convertAccount:"\uACC4\uC815 \uC804\uD658",convertAccountP1:`\uACC4\uC815\uC744 \uD328\uC2A4\uD0A4 \uC804\uC6A9 \uACC4\uC815\uC73C\uB85C \uC804\uD658\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+\uC774 \uC804\uD658\uC740 \uBE44\uBC00\uBC88\uD638\uB97C \uC0AD\uC81C\uD558\uBA70, \uB4F1\uB85D\uB41C \uD328\uC2A4\uD0A4\uB97C \uC0AC\uC6A9\uD574\uC11C\uB9CC \uB85C\uADF8\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+\uCD94\uAC00\uC801\uC778 \uC0AC\uC6A9\uC790 \uC778\uC99D\uC774 \uAC00\uB2A5\uD55C \uD328\uC2A4\uD0A4\uB9CC \uD5C8\uC6A9\uB41C\uB2E4\uB294 \uC810\uC744 \uBA85\uC2EC\uD574 \uC8FC\uC138\uC694.
+\uD328\uC2A4\uD0A4\uAC00 \uC9C0\uC6D0\uD55C\uB2E4\uBA74, 'MFA' \uD398\uC774\uC9C0\uC5D0\uC11C \uD0A4 \uC774\uB984 \uB4A4\uC5D0 \uC791\uC740 \uD45C\uC2DC\uAC00 \uC788\uB294 \uAC83\uC744 \uCC3E\uC744 \uC218 \uC788\uC744 \uAC81\uB2C8\uB2E4.`,country:"\uAD6D\uAC00",deviceId:"\uC544\uC774\uB514",deviceName:"\uC774\uB984",devices:"\uAE30\uAE30",devicesDesc:"\uC774 \uACC4\uC815\uC5D0 \uC5F0\uACB0\uB41C \uAE30\uAE30",emailUpdateConfirm:`\uC544\uC9C1 \uC774\uBA54\uC77C \uC8FC\uC18C\uAC00 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uC0C8 \uC8FC\uC18C\uB85C \uBA54\uC2DC\uC9C0\uAC00 \uC804\uC1A1\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+\uB0B4\uBD80\uC5D0 \uC788\uB294 \uC2B9\uC778 \uB9C1\uD06C\uB97C \uD074\uB9AD\uD574\uC57C \uD569\uB2C8\uB2E4. \uC2B9\uC778\uB418\uBA74 \uC774\uBA54\uC77C \uC8FC\uC18C\uAC00 \uC0C8 \uC8FC\uC18C\uB85C \uBCC0\uACBD\uB420 \uAC81\uB2C8\uB2E4.`,emailVerified:"\uC774\uBA54\uC77C \uC778\uC99D \uC5EC\uBD80",familyName:"\uC131",federatedConvertPassword1:`\uD398\uB354\uB808\uC774\uC158 \uACC4\uC815\uC744 \uAC00\uC9C0\uACE0 \uC788\uC2B5\uB2C8\uB2E4. \uC989, \uC678\uBD80 \uC778\uC99D \uC81C\uACF5\uC790\uB97C \uC0AC\uC6A9\uD558\uC5EC
+\uB85C\uADF8\uC778\uD55C\uB2E4\uB294 \uAC83\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4. \uD604\uC7AC \uC81C\uACF5\uC790\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4:`,federatedConvertPassword2:`\uC774\uBA54\uC77C\uC744 \uD1B5\uD574 \uBE44\uBC00\uBC88\uD638 \uCD08\uAE30\uD654\uB97C \uC694\uCCAD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uC644\uB8CC\uD558\uBA74 \uB0B4\uBD80\uC801\uC778
+\uBE44\uBC00\uBC88\uD638\uAC00 \uACC4\uC815\uC5D0 \uCD94\uAC00\uB420 \uAC81\uB2C8\uB2E4. \uADF8\uB7EC\uBA74 \uC678\uBD80 \uC81C\uACF5\uC790 \uB610\uB294 \uB0B4\uBD80\uC801\uC778 \uBE44\uBC00\uBC88\uD638\uB97C \uD1B5\uD558\uC5EC \uB85C\uADF8\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uCD08\uAE30\uD654\uB97C \uC694\uCCAD\uD558\uACA0\uC2B5\uB2C8\uAE4C?`,generateRandom:"\uBB34\uC791\uC704\uB85C \uC0DD\uC131",givenName:"\uC774\uB984",groups:"\uADF8\uB8F9",key:"\uD0A4",keyUnique:"\uD0A4\uB294 \uACE0\uC720\uD574\uC57C \uD569\uB2C8\uB2E4.",lastLogin:"\uB9C8\uC9C0\uB9C9 \uB85C\uADF8\uC778 \uC77C",mfaActivated:"MFA \uD65C\uC131\uD654 \uC5EC\uBD80",navInfo:"\uC815\uBCF4",navEdit:"\uC218\uC815",navMfa:"MFA",navLogout:"\uB85C\uADF8\uC544\uC6C3",optionalValues:"\uC120\uD0DD \uD56D\uBAA9",passwordConfirm:"\uBE44\uBC00\uBC88\uD638 \uD655\uC778",passwordCurr:"\uD604\uC7AC \uBE44\uBC00\uBC88\uD638",passwordCurrReq:"\uD604\uC7AC \uBE44\uBC00\uBC88\uD638\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.",passwordNew:"\uC0C8 \uBE44\uBC00\uBC88\uD638",passwordNewReq:"\uC0C8 \uBE44\uBC00\uBC88\uD638\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.",passwordNoMatch:"\uBE44\uBC00\uBC88\uD638 \uD655\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.",passwordExpiry:"\uBE44\uBC00\uBC88\uD638 \uB9CC\uB8CC\uC77C",passwordPolicyFollow:"\uBE44\uBC00\uBC88\uD638 \uC815\uCC45\uC744 \uC900\uC218\uD574\uC57C \uD569\uB2C8\uB2E4.",passwordReset:"\uBE44\uBC00\uBC88\uD638 \uCD08\uAE30\uD654",phone:"\uC804\uD654\uBC88\uD638",providerLink:"\uD398\uB354\uB808\uC774\uC158 \uACC4\uC815",providerLinkDesc:`\uC774 \uACC4\uC815\uC740 \uB2E4\uC74C \uC911 \uD558\uB098\uC758 \uB85C\uADF8\uC778 \uC81C\uACF5\uC790\uC5D0 \uC5F0\uACB0\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+\uC774 \uAE30\uB2A5\uC744 \uD65C\uC131\uD654\uD558\uBA74, \uC120\uD0DD\uD55C \uAC83\uC758 \uB85C\uADF8\uC778 \uD398\uC774\uC9C0\uB85C \uB9AC\uB2E4\uC774\uB809\uD2B8\uB420 \uAC81\uB2C8\uB2E4. \uC131\uACF5\uC801\uC73C\uB85C \uB85C\uADF8\uC778\uD558\uACE0 \uC774\uBA54\uC77C\uC774 \uC77C\uCE58\uD558\uBA74, \uACC4\uC815\uC774 \uC5F0\uACB0\uB420 \uAC81\uB2C8\uB2E4.`,providerUnlink:"\uD398\uB354\uB808\uC774\uC158 \uD574\uC81C",providerUnlinkDesc:"\uC774 \uACC4\uC815\uC5D0 \uCD5C\uC18C \uD558\uB098\uC758 \uBE44\uBC00\uBC88\uD638 \uB610\uB294 \uD328\uC2A4\uD0A4\uB97C \uC124\uC815\uD558\uBA74, \uC0C1\uC704 \uC81C\uACF5\uC790\uB85C\uBD80\uD130 \uC5F0\uACB0\uC744 \uD574\uC81C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",regDate:"\uAC00\uC785\uC77C",regIp:"IP\uC5D0\uC11C \uAC00\uC785",roles:"\uC5ED\uD560",street:"\uC8FC\uC18C",user:"\uC0AC\uC6A9\uC790",userCreated:"\uC0AC\uC6A9\uC790 \uC0DD\uC131\uC77C",userEnabled:"\uC0AC\uC6A9\uC790 \uD65C\uC131\uD654 \uC5EC\uBD80",userExpiry:"\uC0AC\uC6A9\uC790 \uB9CC\uB8CC",userVerifiedTooltip:"\uC9C0\uBB38 \uB610\uB294 PIN\uC744 \uD1B5\uD574 \uBCF4\uD638",validEmail:"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uC774\uBA54\uC77C \uD615\uC2DD\uC785\uB2C8\uB2E4.",validGivenName:"\uC774\uB984\uC740 \uD2B9\uC218\uBB38\uC790\uB97C \uC81C\uC678\uD55C 1\uC790\uC5D0\uC11C 32\uC790\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.",validFamilyName:"\uC131\uC740 \uD2B9\uC218\uBB38\uC790\uB97C \uC81C\uC678\uD55C 1\uC790\uC5D0\uC11C 32\uC790\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.",webIdDesc:`WebID\uC640 \uD568\uAED8 \uB178\uCD9C\uD560 \uD56D\uBAA9\uC744 \uC124\uC815\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+\uC774 \uAE30\uB2A5\uC740 \uBA87\uBA87 \uD0C8\uC911\uC559\uD654\uB41C \uB85C\uADF8\uC778 \uB124\uD2B8\uC6CC\uD06C\uC5D0\uC11C \uC0AC\uC6A9\uB429\uB2C8\uB2E4. \uC774\uAC83\uC774 \uBB34\uC5C7\uC778\uC9C0 \uBAA8\uB974\uBA74, \uB300\uCCB4\uB85C \uD544\uC694\uD558\uC9C0 \uC54A\uC744 \uAC83\uC785\uB2C8\uB2E4.`,webIdDescData:"WebID\uC5D0\uC11C \uC720\uD6A8\uD55C FOAF \uC5B4\uD718\uB97C \uC0AC\uC6A9\uC790 \uC9C0\uC815 \uB370\uC774\uD130 \uD56D\uBAA9\uC5D0 \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4",webIdExpertMode:"\uC804\uBB38\uAC00 \uBAA8\uB4DC \uD65C\uC131\uD654",zip:"\uC6B0\uD3B8\uBC88\uD638"},authorize:{clientForceMfa:`\uC774 \uB85C\uADF8\uC778\uC740 \uB354 \uB192\uC740 \uC218\uC900\uC758 \uBCF4\uC548\uC744 \uC704\uD574\uC11C MFA\uB97C \uAC15\uC81C\uD569\uB2C8\uB2E4.
+\uC811\uADFC\uD558\uB824\uBA74, \uACC4\uC815\uC5D0 \uB85C\uADF8\uC778\uD558\uACE0 \uCD5C\uC18C \uD558\uB098 \uC774\uC0C1\uC758 \uD328\uC2A4\uD0A4\uB97C \uCD94\uAC00\uD574\uC57C \uD569\uB2C8\uB2E4.`,email:"\uC774\uBA54\uC77C",emailBadFormat:"\uC798\uBABB\uB41C \uC774\uBA54\uC77C \uD615\uC2DD\uC785\uB2C8\uB2E4.",emailRequired:"\uC774\uBA54\uC77C\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.",emailSentMsg:"\uC774\uBA54\uC77C\uC774 \uC874\uC7AC\uD558\uBA74, \uC694\uCCAD\uC774 \uC804\uC1A1\uB418\uC5C8\uC744 \uAC83\uC785\uB2C8\uB2E4.",http429:"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uC785\uB825\uC774 \uB108\uBB34 \uB9CE\uC2B5\uB2C8\uB2E4. \uB2E4\uC74C \uC2DC\uAC04 \uC804\uAE4C\uC9C0 \uBE44\uD65C\uC131\uD654\uD569\uB2C8\uB2E4:",invalidCredentials:"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uC778\uC99D \uC815\uBCF4\uC785\uB2C8\uB2E4.",invalidKeyUsed:"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uD0A4\uC785\uB2C8\uB2E4.",login:"\uB85C\uADF8\uC778",mfaAck:"\uD655\uC778\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",password:"\uBE44\uBC00\uBC88\uD638",passwordForgotten:"\uBE44\uBC00\uBC88\uD638\uB97C \uC78A\uC73C\uC168\uB098\uC694?",passwordRequest:"\uC694\uCCAD",passwordRequired:"\uBE44\uBC00\uBC88\uD638\uB294 \uD544\uC694\uD569\uB2C8\uB2E4.",provideMfa:"MFA \uAE30\uAE30\uB97C \uD1B5\uD574 \uB85C\uADF8\uC778\uD574 \uC8FC\uC138\uC694.",requestExpires:"\uC694\uCCAD \uB9CC\uB8CC\uC77C",signUp:"\uC0AC\uC6A9\uC790 \uAC00\uC785"},device:{accept:"\uC218\uB77D",autoRedirectAccount:"\uC9C0\uAE08 \uACC4\uC815\uC73C\uB85C \uB9AC\uB2E4\uC774\uB809\uD2B8\uB420 \uC608\uC815\uC785\uB2C8\uB2E4.",closeWindow:"\uC774\uC81C \uCC3D\uC744 \uB2EB\uC544\uB3C4 \uB429\uB2C8\uB2E4.",decline:"\uAC70\uC808",desc:"\uAE30\uAE30\uC5D0\uC11C {{count}}\uC790\uC758 \uC0AC\uC6A9\uC790 \uCF54\uB4DC\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694.",descScopes:"\uB2E4\uC74C \uAE30\uAE30\uAC00 \uC811\uADFC\uC744 \uC694\uCCAD\uD569\uB2C8\uB2E4:",isAccepted:"\uC694\uCCAD\uC774 \uC218\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",isDeclined:"\uC694\uCCAD\uC774 \uAC70\uC808\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",submit:"\uC81C\uCD9C",title:"\uAE30\uAE30 \uC778\uC99D",userCode:"\uC0AC\uC6A9\uC790 \uCF54\uB4DC",wrongOrExpired:"\uC798\uBABB\uB418\uAC70\uB098 \uB9CC\uB8CC\uB41C \uCF54\uB4DC\uC785\uB2C8\uB2E4."},emailChange:{title:"\uC774\uBA54\uC77C \uBCC0\uACBD\uC774 \uC2B9\uC778\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",textChanged:"\uC774\uBA54\uC77C \uC8FC\uC18C\uAC00 \uB2E4\uC74C\uC73C\uB85C\uBD80\uD130 \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4",textLogin:"\uC774\uC81C \uC0C8\uB85C\uC6B4 \uC8FC\uC18C\uB85C \uB85C\uADF8\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",to:"\uC5D0\uC11C"},error:{details:"\uC790\uC138\uD55C \uC815\uBCF4 \uD45C\uC2DC"},index:{register:"\uAC00\uC785",accountLogin:"\uACC4\uC815",adminLogin:"\uAD00\uB9AC"},logout:{logout:"\uB85C\uADF8\uC544\uC6C3",confirmMsg:"\uC815\uB9D0\uB85C \uB85C\uADF8\uC544\uC6C3\uD558\uACE0 \uC138\uC158\uC744 \uC885\uB8CC\uD558\uACA0\uC2B5\uB2C8\uAE4C?",cancel:"\uCDE8\uC18C"},mfa:{p1:"\uC708\uB3C4\uC6B0\uC640 \uC548\uB4DC\uB85C\uC774\uB4DC\uC640 \uAC19\uC740 \uC5EC\uB7EC \uC2DC\uC2A4\uD15C\uC5D0\uC11C MFA \uD0A4\uB97C \uC0AC\uC6A9\uD558\uB824\uBA74, \uC548\uB4DC\uB85C\uC774\uB4DC\uC5D0\uC11C \uB4F1\uB85D\uD574\uC57C \uD569\uB2C8\uB2E4.",p2:"\uC548\uB4DC\uB85C\uC774\uB4DC\uB294 \uBE44\uBC00\uBC88\uD638 \uC5C6\uC774 \uC778\uC99D\uD558\uB294 \uAE30\uC220\uC744 \uAC00\uC7A5 \uC801\uAC8C \uC9C0\uC6D0\uD558\uB294 \uD50C\uB7AB\uD3FC \uC911 \uD558\uB098\uC785\uB2C8\uB2E4. \uC548\uB4DC\uB85C\uC774\uB4DC\uC5D0\uC11C \uB4F1\uB85D\uD55C \uD0A4\uB294 \uB2E4\uB978 \uACF3\uC5D0\uC11C\uB3C4 \uC791\uB3D9\uD569\uB2C8\uB2E4. \uADF8\uB7EC\uB098, \uADF8 \uBC18\uB300\uB85C\uB294 \uC801\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",delete:"\uC0AD\uC81C",errorReg:"\uAC00\uC785 \uC808\uCC28 \uC2DC\uC791 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.",invalidKeyUsed:"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uD0A4\uAC00 \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",lastUsed:"\uB9C8\uC9C0\uB9C9 \uC0AC\uC6A9",noKey:"\uC774 \uC2AC\uB86F\uC5D0 \uB4F1\uB85D\uB41C \uBCF4\uC548 \uD0A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",register:"\uB4F1\uB85D",registerNew:"\uC0C8 \uD0A4 \uB4F1\uB85D",registerd:"\uB4F1\uB85D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",registerdKeys:"\uB4F1\uB85D\uB41C \uD0A4",passkeyName:"\uD328\uC2A4\uD0A4 \uC774\uB984",passkeyNameErr:"\uD2B9\uC218\uBB38\uC790\uB97C \uC81C\uC678\uD55C 2\uC790\uC5D0\uC11C 32\uC790\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.",test:"\uD14C\uC2A4\uD2B8",testError:"\uD14C\uC2A4\uD2B8 \uC2DC\uC791 \uC911\uC5D0 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.",testSuccess:"\uD14C\uC2A4\uD2B8 \uC131\uACF5"},passwordPolicy:{passwordPolicy:"\uBE44\uBC00\uBC88\uD638 \uC815\uCC45",lengthMin:"\uCD5C\uC18C \uC790\uC218",lengthMax:"\uCD5C\uB300 \uC790\uC218",lowercaseMin:"\uCD5C\uC18C \uC18C\uBB38\uC790 \uC790\uC218",uppercaseMin:"\uCD5C\uC18C \uB300\uBB38\uC790 \uC790\uC218",digitsMin:"\uCD5C\uC18C \uC22B\uC790 \uC790\uC218",specialMin:"\uCD5C\uC18C \uD2B9\uC218\uBB38\uC790 \uC790\uC218",notRecent:"\uCD5C\uADFC \uC0AC\uC6A9\uD55C \uBE44\uBC00\uBC88\uD638 \uC911 \uD558\uB098\uAC00 \uC544\uB2CC \uAC83"},passwordReset:{accountLogin:"\uACC4\uC815 \uB85C\uADF8\uC778",badFormat:"\uC798\uBABB\uB41C \uD615\uC2DD",fidoLink:"https://fidoalliance.org/fido2/?lang=ko",generate:"\uC0DD\uC131",newAccDesc1:"\uACC4\uC815 \uC885\uB958\uB294 \uBE44\uBC00\uBC88\uD638\uAC00 \uC5C6\uB294 \uACC4\uC815 \uB610\uB294 \uAE30\uC874\uC758 \uBE44\uBC00\uBC88\uD638\uAC00 \uC788\uB294 \uACC4\uC815 \uC911 \uD558\uB098\uB97C \uC120\uD0DD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",newAccDesc2:`\uBE44\uBC00\uBC88\uD638\uAC00 \uC5C6\uB294 \uACC4\uC815\uC740 \uB354 \uAC15\uB825\uD55C \uBCF4\uC548 \uBC29\uBC95\uC744 \uC81C\uACF5\uD558\uAE30 \uB54C\uBB38\uC5D0 \uD56D\uC0C1 \uC120\uD638\uB429\uB2C8\uB2E4.
+\uC774\uB7EC\uD55C \uACC4\uC815\uC744 \uC0DD\uC131\uD558\uB824\uBA74 \uCD5C\uC18C \uD558\uB098\uC758 \uD328\uC2A4\uD0A4(Yubikey, Apple Touch ID, Windows Hello, ...)\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. \uAE30\uAE30\uAC00 FIDO2 \uD45C\uC900\uC744 \uC9C0\uC6D0\uD574\uC57C \uD569\uB2C8\uB2E4.
+\uB354 \uC790\uC138\uD55C \uC0AC\uD56D\uC740 \uB2E4\uC74C \uB9C1\uD06C\uB97C \uCC38\uACE0\uD574 \uC8FC\uC138\uC694: `,newAccount:"\uC0C8 \uACC4\uC815",passwordReset:"\uBE44\uBC00\uBC88\uD638 \uCD08\uAE30\uD654",password:"\uBE44\uBC00\uBC88\uD638",passwordless:"FIDO \uD328\uC2A4\uD0A4",passwordConfirm:"\uBE44\uBC00\uBC88\uD638 \uD655\uC778",passwordNoMatch:"\uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",required:"\uD544\uC218",save:"\uC800\uC7A5",success1:"\uBE44\uBC00\uBC88\uD638\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",success2:"\uACE7 \uB9AC\uB2E4\uC774\uB809\uD2B8\uB429\uB2C8\uB2E4.",success3:"\uB9CC\uC57D \uB9AC\uB2E4\uC774\uB809\uD2B8\uAC00 \uB418\uC9C0 \uC54A\uC73C\uBA74, \uC5EC\uAE30\uB97C \uD074\uB9AD\uD574 \uC8FC\uC138\uC694:",successPasskey1:"\uC0C8\uB85C\uC6B4 \uD328\uC2A4\uD0A4\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uB4F1\uB85D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",successPasskey2:`\uACC4\uC815\uC5D0 \uB85C\uADF8\uC778\uD558\uC5EC \uAC00\uB2A5\uD55C \uD55C \uBE68\uB9AC \uB450 \uBC88\uC9F8 \uBC31\uC5C5 \uD0A4\uB97C \uB4F1\uB85D\uD574 \uC8FC\uC138\uC694.
+\uD328\uC2A4\uD0A4 \uC804\uC6A9 \uACC4\uC815\uC740 \uD604\uC7AC \uD328\uC2A4\uD0A4\uB97C \uC783\uC5B4\uBC84\uB9AC\uBA74, \uC774\uBA54\uC77C\uC744 \uD1B5\uD558\uC5EC \uBE44\uBC00\uBC88\uD638 \uCD08\uAE30\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.`},register:{domainAllowed:"\uD5C8\uC6A9\uB41C \uB3C4\uBA54\uC778:",domainErr:"\uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC740 \uC774\uBA54\uC77C\uC758 \uB3C4\uBA54\uC778\uC785\uB2C8\uB2E4.",domainRestricted:"\uC774\uBA54\uC77C\uC758 \uB3C4\uBA54\uC778\uC774 \uC81C\uD55C\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.",email:"\uC774\uBA54\uC77C",emailBadFormat:"\uC798\uBABB\uB41C \uC774\uBA54\uC77C \uD615\uC2DD\uC785\uB2C8\uB2E4.",emailCheck:"\uC774\uBA54\uC77C \uBCF4\uAD00\uD568\uC744 \uD655\uC778\uD574 \uC8FC\uC138\uC694.",regexName:"\uC774\uB984\uC740 \uD2B9\uC218\uBB38\uC790\uB97C \uC81C\uC678\uD55C 2\uC790\uC5D0\uC11C 32\uC790\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.",register:"\uAC00\uC785",success:"\uC131\uACF5\uC801\uC73C\uB85C \uAC00\uC785\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",userReg:"\uC0AC\uC6A9\uC790 \uAC00\uC785"}},t={common:{cancel:"\u53D6\u6D88",email:"\u7535\u5B50\u90AE\u7BB1",errTooShort:"\u8F93\u5165\u8FC7\u77ED",errTooLong:"\u8F93\u5165\u8FC7\u957F",invalidInput:"\u65E0\u6548\u8F93\u5165",never:"\u4ECE\u4E0D",password:"\u5BC6\u7801",required:"\u5FC5\u586B",save:"\u4FDD\u5B58"},account:{account:"\u7528\u6237\u8D26\u6237",accType:"\u8D26\u6237\u7C7B\u578B",accTypePasskeyText1:`\u6B64\u8D26\u6237\u76EE\u524D\u4E3A\u4EC5\u5BC6\u94A5\u767B\u5F55\u8D26\u6237\u3002
+\u56E0\u6B64\uFF0C\u6B64\u8D26\u6237\u6CA1\u6709\u5BC6\u7801\uFF0C\u4E5F\u65E0\u9700\u8BBE\u7F6E\u5BC6\u7801\u3002`,accTypePasskeyText2:`\u60A8\u53EF\u4EE5\u8F6C\u6362\u6B64\u8D26\u6237\u5E76\u6DFB\u52A0\u5BC6\u7801\u3002
+\u4F46\u8BF7\u6CE8\u610F\uFF0C\u8C03\u6574\u540E\u5728\u65B0\u8BBE\u5907\u4E0A\u767B\u5F55\u65F6\u9700\u989D\u5916\u8FDB\u884C\u5BC6\u7801\u9A8C\u8BC1\u3002
+\u5982\u679C\u60A8\u6CA1\u6709\u4E8B\u5148\u8F93\u5165\u8FC7\u81F3\u5C11\u4E00\u6B21\u5BC6\u7801\uFF0C\u60A8\u5C06\u65E0\u6CD5\u5728\u4EFB\u4F55\u8BBE\u5907\u4E0A\u767B\u5F55\u3002`,accTypePasskeyText3:"\u60A8\u60F3\u8981\u8F6C\u6362\u60A8\u7684\u8D26\u6237\u5E76\u6DFB\u52A0\u4E00\u4E2A\u5BC6\u7801\u5417\uFF1F",accessExp:"\u8FC7\u671F",accessRenew:"\u7EED\u671F\u81F3",accessRenewDelete:"\u7981\u6B62\u7EED\u671F",birthdate:"\u751F\u65E5",city:"\u57CE\u5E02",changePassword:"\u66F4\u6539\u5BC6\u7801",convertAccount:"\u8F6C\u6362\u8D26\u6237",convertAccountP1:`\u60A8\u53EF\u4EE5\u5C06\u60A8\u7684\u8D26\u6237\u8F6C\u6362\u4E3A\u4EC5\u5BC6\u94A5\u767B\u9646\u8D26\u6237\u3002
+\u6B64\u8F6C\u6362\u5C06\u5220\u9664\u60A8\u7684\u5BC6\u7801\uFF0C\u60A8\u5C06\u4EC5\u80FD\u591F\u901A\u8FC7\u6CE8\u518C\u7684\u5BC6\u94A5\u8FDB\u884C\u767B\u9646\u3002
+\u8BF7\u6CE8\u610F\uFF0C\u53EA\u6709\u652F\u6301\u989D\u5916\u7528\u6237\u9A8C\u8BC1\u7684\u5BC6\u94A5\u53EF\u88AB\u7528\u4E8E\u767B\u9646\u3002
+\u5982\u679C\u60A8\u7684\u5BC6\u94A5\u652F\u6301\u7528\u6237\u9A8C\u8BC1\uFF0C\u60A8\u53EF\u4EE5\u5728\u201CMFA\u201D\u9875\u9762\u4E2D\uFF0C\u5BC6\u94A5\u540D\u79F0\u7684\u540E\u9762\u770B\u5230\u4E00\u4E2A\u7B26\u53F7\u3002`,country:"\u56FD\u5BB6",deviceId:"ID",deviceName:"\u540D\u79F0",devices:"\u8BBE\u5907",devicesDesc:"\u94FE\u63A5\u5230\u6B64\u8D26\u6237\u7684\u8BBE\u5907",emailUpdateConfirm:`\u7535\u5B50\u90AE\u4EF6\u5730\u5740\u672A\u88AB\u66F4\u65B0\u3002\u6211\u4EEC\u5DF2\u5411\u60A8\u7684\u65B0\u90AE\u7BB1\u53D1\u9001\u4E86\u4E00\u5C01\u6D88\u606F\u3002
+\u60A8\u9700\u8981\u70B9\u51FB\u5176\u4E2D\u7684\u786E\u8BA4\u94FE\u63A5\uFF0C\u7535\u5B50\u90AE\u4EF6\u5730\u5740\u5C06\u5728\u88AB\u786E\u8BA4\u540E\u66F4\u65B0\u3002`,emailVerified:"\u5DF2\u9A8C\u8BC1\u7535\u5B50\u90AE\u7BB1",familyName:"\u59D3",federatedConvertPassword1:`\u60A8\u6709\u4E00\u4E2A\u8054\u5408\u8D26\u6237\u3002
+\u8FD9\u610F\u5473\u7740\u60A8\u662F\u901A\u8FC7\u5916\u90E8\u9274\u6743\u63D0\u4F9B\u8005\u767B\u9646\u7684\u3002\u60A8\u5F53\u524D\u7684\u63D0\u4F9B\u8005\u662F\uFF1A`,federatedConvertPassword2:`\u60A8\u53EF\u4EE5\u901A\u8FC7\u7535\u5B50\u90AE\u4EF6\u8BF7\u6C42\u5BC6\u7801\u91CD\u7F6E\u3002\u8FD9\u5C06\u5411\u60A8\u7684\u672C\u5730\u8D26\u6237\u6DFB\u52A0\u5BC6\u7801\uFF0C
+\u4E4B\u540E\u60A8\u53EF\u4EE5\u901A\u8FC7\u672C\u5730\u5BC6\u7801\u6216\u60A8\u7684\u5916\u90E8\u63D0\u4F9B\u8005\u8FDB\u884C\u767B\u9646\u3002\u60A8\u60F3\u8981\u8BF7\u6C42\u5BC6\u7801\u91CD\u7F6E\u5417\uFF1F`,generateRandom:"\u968F\u673A\u751F\u6210",givenName:"\u540D",groups:"\u7EC4",key:"\u5BC6\u94A5",keyUnique:"\u5BC6\u94A5\u5FC5\u987B\u662F\u552F\u4E00\u7684",lastLogin:"\u6700\u540E\u767B\u5F55",mfaActivated:"\u591A\u56E0\u5B50\u8BA4\u8BC1",navInfo:"\u4FE1\u606F",navEdit:"\u7F16\u8F91",navMfa:"\u591A\u56E0\u5B50\u8BA4\u8BC1",navLogout:"\u9000\u51FA\u767B\u5F55",optionalValues:"\u53EF\u9009\u9879",passwordConfirm:"\u786E\u8BA4\u5BC6\u7801",passwordCurr:"\u5F53\u524D\u5BC6\u7801",passwordCurrReq:"\u5F53\u524D\u5BC6\u7801\u5FC5\u586B\u3002",passwordNew:"\u65B0\u5BC6\u7801",passwordNewReq:"\u65B0\u5BC6\u7801\u5FC5\u586B",passwordNoMatch:"\u5BC6\u7801\u9A8C\u8BC1\u5FC5\u586B\u3002",passwordExpiry:"\u5BC6\u7801\u8FC7\u671F",passwordPolicyFollow:"\u5BC6\u7801\u4E0D\u7B26\u5408\u8981\u6C42\u3002",passwordReset:"\u91CD\u7F6E\u5BC6\u7801",phone:"\u624B\u673A",providerLink:"\u8054\u5408\u8D26\u6237",providerLinkDesc:`\u60A8\u53EF\u4EE5\u5C06\u6B64\u8D26\u6237\u8FDE\u63A5\u5230\u4E0B\u5217\u767B\u9646\u63D0\u4F9B\u8005\u4E4B\u4E00\u3002
+\u6FC0\u6D3B\u6B64\u529F\u80FD\u540E\uFF0C\u60A8\u5C06\u88AB\u91CD\u5B9A\u5411\u81F3\u6240\u9009\u63D0\u4F9B\u8005\u7684\u767B\u9646\u9875\u9762\u3002\u5728\u6210\u529F\u767B\u9646\u540E\uFF0C\u5982\u679C\u7535\u5B50\u90AE\u4EF6\u5339\u914D\uFF0C\u60A8\u7684\u8D26\u6237\u5C06\u88AB\u8FDE\u63A5\u3002`,providerUnlink:"\u53D6\u6D88\u8054\u5408",providerUnlinkDesc:"\u4EC5\u5F53\u60A8\u5DF2\u8BBE\u7F6E\u81F3\u5C11\u4E00\u4E2A\u5BC6\u7801\u6216\u767B\u9646\u5BC6\u94A5\u540E\uFF0C\u60A8\u624D\u80FD\u548C\u767B\u9646\u63D0\u4F9B\u8005\u53D6\u6D88\u8FDE\u63A5\u3002",regDate:"\u6CE8\u518C\u65E5\u671F",regIp:"\u6CE8\u518CIP\u5730\u5740",roles:"\u89D2\u8272",street:"\u8857\u9053",user:"\u7528\u6237",userCreated:"\u521B\u5EFA\u4E8E",userEnabled:"\u542F\u7528",userExpiry:"\u8FC7\u671F",userVerifiedTooltip:"\u6307\u7EB9\u6216PIN\u4FDD\u62A4",validEmail:"\u65E0\u6548\u7535\u5B50\u90AE\u7BB1\u683C\u5F0F",validGivenName:"\u60A8\u7684\u540D\u5B57\u9700\u8981\u67092-32\u4E2A\u975E\u7279\u6B8A\u5B57\u7B26",validFamilyName:"\u60A8\u7684\u59D3\u6C0F\u9700\u8981\u67092-32\u4E2A\u975E\u7279\u6B8A\u5B57\u7B26",webIdDesc:`\u60A8\u53EF\u4EE5\u9009\u62E9\u54EA\u4E9B\u5B57\u6BB5\u80FD\u591F\u901A\u8FC7WebID\u53D1\u5E03\u3002
+WebID\u88AB\u4E00\u4E9B\u7F51\u7EDC\u7528\u4E8E\u53BB\u4E2D\u5FC3\u5316\u767B\u9646\u3002\u5982\u679C\u60A8\u4E0D\u77E5\u9053\u8FD9\u662F\u4EC0\u4E48\uFF0C\u60A8\u901A\u5E38\u4E0D\u9700\u8981\u9009\u62E9\u3002`,webIdDescData:"\u60A8\u53EF\u4EE5\u4EE5FOAF\u8BCD\u6C47\u683C\u5F0F\u5411\u60A8\u7684 WebID \u6DFB\u52A0\u81EA\u5B9A\u4E49\u6570\u636E\u5B57\u6BB5",webIdExpertMode:"\u542F\u7528\u4E13\u5BB6\u6A21\u5F0F",zip:"\u90AE\u653F\u7F16\u7801"},authorize:{clientForceMfa:`\u672C\u6B21\u767B\u9646\u5F3A\u5236\u4F7F\u7528\u591A\u56E0\u5B50\u8BA4\u8BC1\u4EE5\u589E\u5F3A\u5B89\u5168\u6027\u3002
+\u8981\u5B8C\u6210\u767B\u9646\uFF0C\u8BF7\u767B\u5165\u60A8\u7684\u8D26\u6237\u5E76\u6DFB\u52A0\u4E00\u4E2A\u767B\u9646\u5BC6\u94A5\u3002`,email:"\u7535\u5B50\u90AE\u4EF6\u5730\u5740",emailBadFormat:"\u9519\u8BEF\u7684\u7535\u5B50\u90AE\u4EF6\u5730\u5740\u683C\u5F0F",emailRequired:"\u7535\u5B50\u90AE\u4EF6\u5730\u5740\u5FC5\u586B\u3002",emailSentMsg:"\u5982\u679C\u60A8\u7684\u7535\u5B50\u90AE\u4EF6\u5B58\u5728\uFF0C\u6211\u4EEC\u5DF2\u53D1\u9001\u8BF7\u6C42\u90AE\u4EF6\u3002",http429:"\u8FC7\u591A\u65E0\u6548\u8F93\u5165\uFF0C\u5DF2\u9501\u5B9A\u81F3\uFF1A",invalidCredentials:"\u65E0\u6548\u8BC1\u660E",invalidKeyUsed:"\u65E0\u6548\u5BC6\u94A5",login:"\u767B\u9646",mfaAck:"\u5DF2\u786E\u8BA4",password:"\u5BC6\u7801",passwordForgotten:"\u5FD8\u8BB0\u5BC6\u7801",passwordRequest:"\u8BF7\u6C42",passwordRequired:"\u5BC6\u7801\u5FC5\u586B\u3002",provideMfa:"\u8BF7\u4F7F\u7528MFA\u8BBE\u5907\u767B\u9646",requestExpires:"\u8BF7\u6C42\u8FC7\u671F",signUp:"\u7528\u6237\u6CE8\u518C"},device:{accept:"\u63A5\u53D7",autoRedirectAccount:"\u60A8\u5C06\u88AB\u81EA\u52A8\u91CD\u5B9A\u5411\u81F3\u60A8\u7684\u8D26\u6237\u3002",closeWindow:"\u60A8\u73B0\u5728\u53EF\u4EE5\u5173\u95ED\u6B64\u7A97\u53E3\u4E86\u3002",decline:"\u62D2\u7EDD",desc:"\u8BF7\u8F93\u5165\u6765\u81EA\u60A8\u7684\u8BBE\u5907\u7684{{count}}\u4F4D\u7528\u6237\u4EE3\u7801\u3002",descScopes:"\u6B64\u8BBE\u5907\u8BF7\u6C42\u8BBF\u95EE\uFF1A",isAccepted:"\u8BF7\u6C42\u5DF2\u88AB\u63A5\u53D7\u3002",isDeclined:"\u8BF7\u6C42\u5DF2\u88AB\u62D2\u7EDD\u3002",submit:"\u63D0\u4EA4",title:"\u8BBE\u5907\u6388\u6743",userCode:"\u7528\u6237\u4EE3\u7801",wrongOrExpired:"\u4EE3\u7801\u9519\u8BEF\u6216\u5DF2\u8FC7\u671F"},emailChange:{title:"\u7535\u5B50\u90AE\u4EF6\u5730\u5740\u5DF2\u66F4\u65B0",textChanged:"\u60A8\u7684\u7535\u5B50\u90AE\u4EF6\u5730\u5740\u5DF2\u4ECE",textLogin:"\u60A8\u73B0\u5728\u53EF\u4EE5\u4F7F\u7528\u60A8\u7684\u65B0\u5730\u5740\u8FDB\u884C\u767B\u9646\u3002",to:"\u66F4\u65B0\u4E3A"},error:{details:"\u663E\u793A\u8BE6\u60C5"},index:{register:"\u6CE8\u518C",accountLogin:"\u767B\u9646",adminLogin:"\u7BA1\u7406"},logout:{logout:"\u9000\u51FA\u767B\u5F55",confirmMsg:"\u60A8\u786E\u5B9A\u8981\u9000\u51FA\u767B\u5F55\u5E76\u7ED3\u675F\u4F1A\u8BDD\u5417\uFF1F",cancel:"\u53D6\u6D88"},mfa:{p1:"\u5982\u679C\u60A8\u8BA1\u5212\u5728\u591A\u4E2A\u7CFB\u7EDF\u4E0A\u4F7F\u7528\u60A8\u7684MFA\u5BC6\u94A5\uFF0C\u4F8B\u5982Windows\u548CAndroid\uFF0C\u60A8\u5E94\u8BE5\u5728Android\u4E0A\u8FDB\u884C\u6CE8\u518C\u3002",p2:"Android\u662F\u652F\u6301\u65E0\u5BC6\u7801\u767B\u9646\u7279\u6027\u6700\u5C11\u7684\u5E73\u53F0\u3002\u80FD\u591F\u5728Android\u4E0A\u8FDB\u884C\u6CE8\u518C\u7684\u5BC6\u94A5\u4E5F\u5E94\u80FD\u5728\u5176\u4ED6\u5E73\u53F0\u4E0A\u4F7F\u7528\u3002",delete:"\u5220\u9664",errorReg:"\u5F00\u59CB\u6CE8\u518C\u8FC7\u7A0B\u65F6\u51FA\u73B0\u9519\u8BEF\u3002",invalidKeyUsed:"\u4F7F\u7528\u7684\u5BC6\u94A5\u65E0\u6548",lastUsed:"\u6700\u540E\u4F7F\u7528",noKey:"\u6B64\u69FD\u4F4D\u6CA1\u6709\u5DF2\u6CE8\u518C\u7684\u5B89\u5168\u5BC6\u94A5",register:"\u6CE8\u518C",registerNew:"\u6CE8\u518C\u65B0\u7684\u5BC6\u94A5",registerd:"\u6CE8\u518C\u65F6\u95F4",registerdKeys:"\u5DF2\u6CE8\u518C\u7684\u5BC6\u94A5",passkeyName:"\u5BC6\u94A5\u540D\u79F0",passkeyNameErr:"\u9700\u8981\u540D\u79F0\u9700\u8981\u67092-32\u4E2A\u975E\u7279\u6B8A\u5B57\u7B26",test:"\u6D4B\u8BD5",testError:"\u5F00\u59CB\u6D4B\u8BD5\u65F6\u51FA\u73B0\u9519\u8BEF",testSuccess:"\u6D4B\u8BD5\u6210\u529F\uFF01"},passwordPolicy:{passwordPolicy:"\u5BC6\u7801\u8981\u6C42",lengthMin:"\u6700\u5C0F\u957F\u5EA6",lengthMax:"\u6700\u957F\u957F\u5EA6",lowercaseMin:"\u6700\u5C11\u5C0F\u5199\u5B57\u6BCD",uppercaseMin:"\u6700\u5C11\u5927\u5199\u5B57\u6BCD",digitsMin:"\u6700\u5C11\u6570\u5B57",specialMin:"\u6700\u5C11\u7279\u6B8A\u5B57\u7B26",notRecent:"\u4E0D\u662F\u6700\u8FD1\u4F7F\u7528\u8FC7\u7684\u5BC6\u7801\u4E4B\u4E00"},passwordReset:{accountLogin:"\u8D26\u6237\u767B\u5F55",badFormat:"\u683C\u5F0F\u9519\u8BEF",fidoLink:"https://fidoalliance.org/fido2/?lang=zh-hans",generate:"\u751F\u6210",newAccDesc1:"\u60A8\u53EF\u4EE5\u5728\u65E0\u5BC6\u7801\u8D26\u6237\u548C\u4F20\u7EDF\u7684\u5BC6\u7801\u8D26\u6237\u4E4B\u4E2D\u9009\u62E9\u5176\u4E00\u3002",newAccDesc2:`\u65E0\u5BC6\u7801\u8D26\u6237\u5E94\u88AB\u4F18\u5148\u8003\u8651\uFF0C\u56E0\u4E3A\u5176\u63D0\u4F9B\u66F4\u5F3A\u7684\u5B89\u5168\u6027\u3002
+\u60A8\u9700\u8981\u81F3\u5C11\u4E00\u4E2A\u652F\u6301FIDO2\u6807\u51C6\u7684\u901A\u884C\u5BC6\u94A5\uFF08Yubikey\u3001Apple Touch ID\u6216Windows Hello\u7B49\uFF09\u4EE5\u5B8C\u6210\u8D26\u6237\u521B\u5EFA\u3002
+\u83B7\u53D6\u66F4\u591A\u4FE1\u606F\uFF1A`,newAccount:"\u65B0\u8D26\u6237",passwordReset:"\u5BC6\u7801\u91CD\u7F6E",password:"\u5BC6\u7801",passwordless:"FIDO\u901A\u884C\u5BC6\u94A5",passwordConfirm:"\u5BC6\u7801\u786E\u8BA4",passwordNoMatch:"\u5BC6\u7801\u4E0D\u5339\u914D",required:"\u5FC5\u586B",save:"\u4FDD\u5B58",success1:"\u5BC6\u7801\u5DF2\u6210\u529F\u66F4\u65B0\u3002",success2:"\u60A8\u5C06\u88AB\u91CD\u5B9A\u5411\u3002",success3:"\u5982\u679C\u60A8\u672A\u88AB\u91CD\u5B9A\u5411\uFF0C\u8BF7\u70B9\u51FB\u6B64\u94FE\u63A5\uFF1A",successPasskey1:"\u60A8\u7684\u901A\u884C\u5BC6\u94A5\u5DF2\u6210\u529F\u6CE8\u518C\u3002",successPasskey2:`\u8BF7\u767B\u5165\u60A8\u7684\u8D26\u6237\u5E76\u5C3D\u5FEB\u6CE8\u518C\u4E00\u4E2A\u5907\u4EFD\u5BC6\u94A5\u3002
+\u5BF9\u4E8E\u4EC5\u5BC6\u94A5\u767B\u9646\u7684\u8D26\u6237\uFF0C\u5728\u4E22\u5931\u60A8\u5F53\u524D\u7684\u5BC6\u94A5\u65F6\uFF0C\u60A8\u65E0\u6CD5\u901A\u8FC7\u7535\u5B50\u90AE\u4EF6\u8FDB\u884C\u5BC6\u7801\u91CD\u7F6E\u3002`},register:{domainAllowed:"\u5141\u8BB8\u7684\u57DF\u540D\uFF1A",domainErr:"\u6B64\u7535\u5B50\u90AE\u4EF6\u57DF\u540D\u4E0D\u88AB\u5141\u8BB8",domainRestricted:"\u7535\u5B50\u90AE\u4EF6\u57DF\u540D\u88AB\u9650\u5236",email:"\u7535\u5B50\u90AE\u4EF6",emailBadFormat:"\u9519\u8BEF\u7684\u7535\u5B50\u90AE\u4EF6\u5730\u5740\u683C\u5F0F",emailCheck:"\u8BF7\u68C0\u67E5\u60A8\u7684\u7535\u5B50\u90AE\u4EF6\u6536\u4EF6\u7BB1",regexName:"\u540D\u5B57\u5E94\u67092-32\u4E2A\u975E\u7279\u6B8A\u5B57\u7B26\u3002",register:"\u6CE8\u518C",success:"\u6CE8\u518C\u6210\u529F",userReg:"\u7528\u6237\u6CE8\u518C"}};let e;function a(){return e}function o(){switch(s()){case"de":e=i;break;case"ko":e=n;break;case"zh":e=t;break;default:e=r;break}}export{o as i,a as u};
diff --git a/static/v1/_app/immutable/chunks/i18n.svelte.BTGsPiz_.js.br b/static/v1/_app/immutable/chunks/i18n.svelte.BTGsPiz_.js.br
new file mode 100644
index 000000000..ef12f383a
Binary files /dev/null and b/static/v1/_app/immutable/chunks/i18n.svelte.BTGsPiz_.js.br differ
diff --git a/static/v1/_app/immutable/chunks/i18n.svelte.BTGsPiz_.js.gz b/static/v1/_app/immutable/chunks/i18n.svelte.BTGsPiz_.js.gz
new file mode 100644
index 000000000..c655a1089
Binary files /dev/null and b/static/v1/_app/immutable/chunks/i18n.svelte.BTGsPiz_.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/if.DUA6Hpfn.js b/static/v1/_app/immutable/chunks/if.DUA6Hpfn.js
new file mode 100644
index 000000000..2c88cf6c8
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/if.DUA6Hpfn.js
@@ -0,0 +1,1 @@
+import{y as k,z as i,A as v,E as x,H as y,B as z,C as A,F as c,G as e,I as m,J as p,K as B,U as C}from"./index-client.CGppiJvc.js";function E(F,I,b=!1){i&&v();var a=F,s=null,l=null,u=C,d=b?x:0,o=!1;const g=(r,n=!0)=>{o=!0,f(n,r)},f=(r,n)=>{if(u===(u=r))return;let t=!1;if(i){const h=a.data===y;!!u===h&&(a=z(),A(a),c(!1),t=!0)}u?(s?e(s):n&&(s=m(()=>n(a))),l&&p(l,()=>{l=null})):(l?e(l):n&&(l=m(()=>n(a))),s&&p(s,()=>{s=null})),t&&c(!0)};k(()=>{o=!1,I(g),o||f(null,null)},d),i&&(a=B)}export{E as i};
diff --git a/static/v1/_app/immutable/chunks/if.DUA6Hpfn.js.br b/static/v1/_app/immutable/chunks/if.DUA6Hpfn.js.br
new file mode 100644
index 000000000..fbfa8b2d0
Binary files /dev/null and b/static/v1/_app/immutable/chunks/if.DUA6Hpfn.js.br differ
diff --git a/static/v1/_app/immutable/chunks/if.DUA6Hpfn.js.gz b/static/v1/_app/immutable/chunks/if.DUA6Hpfn.js.gz
new file mode 100644
index 000000000..a2f63ce79
Binary files /dev/null and b/static/v1/_app/immutable/chunks/if.DUA6Hpfn.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/index-client.CGppiJvc.js b/static/v1/_app/immutable/chunks/index-client.CGppiJvc.js
new file mode 100644
index 000000000..87c0ee680
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/index-client.CGppiJvc.js
@@ -0,0 +1,1 @@
+var Cn=Array.isArray,xt=Array.from,mt=Object.defineProperty,sn=Object.getOwnPropertyDescriptor,Pn=Object.getOwnPropertyDescriptors,Et=Object.prototype,jt=Array.prototype,Sn=Object.getPrototypeOf;function qt(n){return typeof n=="function"}const Ot=()=>{};function Tt(n){return n()}function cn(n){for(var t=0;t<n.length;t++)n[t]()}const g=2,Dn=4,H=8,J=16,x=32,K=64,vn=128,k=256,Q=512,y=1024,E=2048,C=4096,P=8192,N=16384,Mn=32768,dn=65536,kt=1<<17,Nn=1<<19,In=1<<20,pn=Symbol("$state"),Ct=Symbol("legacy props"),Pt=Symbol("");function $n(n){return n===this.v}function Bn(n,t){return n!=n?t==t:n!==t||n!==null&&typeof n=="object"||typeof n=="function"}function hn(n){return!Bn(n,this.v)}function St(n){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Dt(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Mt(n){throw new Error("https://svelte.dev/e/effect_orphan")}function Nt(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function It(){throw new Error("https://svelte.dev/e/hydration_failed")}function $t(n){throw new Error("https://svelte.dev/e/props_invalid_value")}function Bt(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Ft(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Gt(){throw new Error("https://svelte.dev/e/state_unsafe_local_read")}function Ht(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}let I=!1;function Kt(){I=!0}const Lt=1,Rt=2,Ut=4,Vt=8,Wt=16,Yt=1,Zt=2,zt=4,Jt=8,Qt=16,Xt=1,At=2,ne=4,te=1,ee=2,Fn="[",Gn="[!",Hn="]",yn={},re=Symbol();function X(n,t){var e={f:0,v:n,reactions:null,equals:$n,version:0};return e}function le(n){return Ln(X(n))}function Kn(n,t=!1){var r;const e=X(n);return t||(e.equals=hn),I&&f!==null&&f.l!==null&&((r=f.l).s??(r.s=[])).push(e),e}function ae(n,t=!1){return Ln(Kn(n,t))}function Ln(n){return s!==null&&s.f&g&&(m===null?Ie([n]):m.push(n)),n}function ue(n,t){return _n(n,z(()=>On(n))),t}function _n(n,t){return s!==null&&un()&&s.f&(g|J)&&(m===null||!m.includes(n))&&Ht(),Rn(n,t)}function Rn(n,t){return n.equals(t)||(n.v=t,n.version=ht(),Un(n,E),un()&&o!==null&&o.f&y&&!(o.f&x)&&(h!==null&&h.includes(n)?(b(o,E),fn(o)):T===null?$e([n]):T.push(n))),t}function Un(n,t){var e=n.reactions;if(e!==null)for(var r=un(),l=e.length,a=0;a<l;a++){var u=e[a],i=u.f;i&E||!r&&u===o||(b(u,t),i&(y|k)&&(i&g?Un(u,C):fn(u)))}}function wn(n){console.warn("https://svelte.dev/e/hydration_mismatch")}function oe(n){console.warn("https://svelte.dev/e/legacy_recursive_reactive_block")}let j=!1;function fe(n){j=n}let v;function S(n){if(n===null)throw wn(),yn;return v=n}function se(){return S(q(v))}function ie(n){if(j){if(q(v)!==null)throw wn(),yn;v=n}}function ce(n=1){if(j){for(var t=n,e=v;t--;)e=q(e);v=e}}function ve(){for(var n=0,t=v;;){if(t.nodeType===8){var e=t.data;if(e===Hn){if(n===0)return t;n-=1}else(e===Fn||e===Gn)&&(n+=1)}var r=q(t);t.remove(),t=r}}var Vn,Wn,Yn,Zn;function de(){if(Vn===void 0){Vn=window,Wn=document;var n=Element.prototype,t=Node.prototype;Yn=sn(t,"firstChild").get,Zn=sn(t,"nextSibling").get,n.__click=void 0,n.__className="",n.__attributes=null,n.__styles=null,n.__e=void 0,Text.prototype.__t=void 0}}function L(n=""){return document.createTextNode(n)}function A(n){return Yn.call(n)}function q(n){return Zn.call(n)}function pe(n,t){if(!j)return A(n);var e=A(v);if(e===null)e=v.appendChild(L());else if(t&&e.nodeType!==3){var r=L();return e==null||e.before(r),S(r),r}return S(e),e}function he(n,t){if(!j){var e=A(n);return e instanceof Comment&&e.data===""?q(e):e}if(t&&(v==null?void 0:v.nodeType)!==3){var r=L();return v==null||v.before(r),S(r),r}return v}function ye(n,t=1,e=!1){let r=j?v:n;for(var l;t--;)l=r,r=q(r);if(!j)return r;var a=r==null?void 0:r.nodeType;if(e&&a!==3){var u=L();return r===null?l==null||l.after(u):r.before(u),S(u),u}return S(r),r}function _e(n){n.textContent=""}function zn(n){var t=g|E;o===null?t|=k:o.f|=In;var e=s!==null&&s.f&g?s:null;const r={children:null,ctx:f,deps:null,equals:$n,f:t,fn:n,reactions:null,v:null,version:0,parent:e??o};return e!==null&&(e.children??(e.children=[])).push(r),r}function we(n){const t=zn(n);return t.equals=hn,t}function Jn(n){var t=n.children;if(t!==null){n.children=null;for(var e=0;e<t.length;e+=1){var r=t[e];r.f&g?bn(r):O(r)}}}function be(n){for(var t=n.parent;t!==null;){if(!(t.f&g))return t;t=t.parent}return null}function Qn(n){var t,e=o;W(be(n));try{Jn(n),t=yt(n)}finally{W(e)}return t}function Xn(n){var t=Qn(n),e=(M||n.f&k)&&n.deps!==null?C:y;b(n,e),n.equals(t)||(n.v=t,n.version=ht())}function bn(n){Jn(n),Y(n,0),b(n,N),n.v=n.children=n.deps=n.ctx=n.reactions=null}function An(n){o===null&&s===null&&Mt(),s!==null&&s.f&k&&Dt(),jn&&St()}function ge(n,t){var e=t.last;e===null?t.last=t.first=n:(e.next=n,n.prev=e,t.last=n)}function $(n,t,e,r=!0){var l=(n&K)!==0,a=o,u={ctx:f,deps:null,deriveds:null,nodes_start:null,nodes_end:null,f:n|E,first:null,fn:t,last:null,next:null,parent:l?null:a,prev:null,teardown:null,transitions:null,version:0};if(e){var i=B;try{vt(!0),Z(u),u.f|=Mn}catch(c){throw O(u),c}finally{vt(i)}}else t!==null&&fn(u);var d=e&&u.deps===null&&u.first===null&&u.nodes_start===null&&u.teardown===null&&(u.f&In)===0;if(!d&&!l&&r&&(a!==null&&ge(u,a),s!==null&&s.f&g)){var _=s;(_.children??(_.children=[])).push(u)}return u}function xe(n){const t=$(H,null,!1);return b(t,y),t.teardown=n,t}function nt(n){An();var t=o!==null&&(o.f&x)!==0&&f!==null&&!f.m;if(t){var e=f;(e.e??(e.e=[])).push({fn:n,effect:o,reaction:s})}else{var r=gn(n);return r}}function me(n){return An(),nn(n)}function Ee(n){const t=$(K,n,!0);return(e={})=>new Promise(r=>{e.outro?ut(t,()=>{O(t),r(void 0)}):(O(t),r(void 0))})}function gn(n){return $(Dn,n,!1)}function je(n,t){var e=f,r={effect:null,ran:!1};e.l.r1.push(r),r.effect=nn(()=>{n(),!r.ran&&(r.ran=!0,_n(e.l.r2,!0),z(t))})}function qe(){var n=f;nn(()=>{if(On(n.l.r2)){for(var t of n.l.r1){var e=t.effect;e.f&y&&b(e,C),G(e)&&Z(e),t.ran=!1}n.l.r2.v=!1}})}function nn(n){return $(H,n,!0)}function Oe(n){return tt(n)}function tt(n,t=0){return $(H|J|t,n,!0)}function Te(n,t=!0){return $(H|x,n,!0,t)}function et(n){var t=n.teardown;if(t!==null){const e=jn,r=s;dt(!0),V(null);try{t.call(null)}finally{dt(e),V(r)}}}function rt(n){var t=n.deriveds;if(t!==null){n.deriveds=null;for(var e=0;e<t.length;e+=1)bn(t[e])}}function lt(n,t=!1){var e=n.first;for(n.first=n.last=null;e!==null;){var r=e.next;O(e,t),e=r}}function ke(n){for(var t=n.first;t!==null;){var e=t.next;t.f&x||O(t),t=e}}function O(n,t=!0){var e=!1;if((t||n.f&Nn)&&n.nodes_start!==null){for(var r=n.nodes_start,l=n.nodes_end;r!==null;){var a=r===l?null:q(r);r.remove(),r=a}e=!0}lt(n,t&&!e),rt(n),Y(n,0),b(n,N);var u=n.transitions;if(u!==null)for(const d of u)d.stop();et(n);var i=n.parent;i!==null&&i.first!==null&&at(n),n.next=n.prev=n.teardown=n.ctx=n.deps=n.fn=n.nodes_start=n.nodes_end=null}function at(n){var t=n.parent,e=n.prev,r=n.next;e!==null&&(e.next=r),r!==null&&(r.prev=e),t!==null&&(t.first===n&&(t.first=r),t.last===n&&(t.last=e))}function ut(n,t){var e=[];xn(n,e,!0),ot(e,()=>{O(n),t&&t()})}function ot(n,t){var e=n.length;if(e>0){var r=()=>--e||t();for(var l of n)l.out(r)}else t()}function xn(n,t,e){if(!(n.f&P)){if(n.f^=P,n.transitions!==null)for(const u of n.transitions)(u.is_global||e)&&t.push(u);for(var r=n.first;r!==null;){var l=r.next,a=(r.f&dn)!==0||(r.f&x)!==0;xn(r,t,a?e:!1),r=l}}}function Ce(n){ft(n,!0)}function ft(n,t){if(n.f&P){G(n)&&Z(n),n.f^=P;for(var e=n.first;e!==null;){var r=e.next,l=(e.f&dn)!==0||(e.f&x)!==0;ft(e,l?t:!1),e=r}if(n.transitions!==null)for(const a of n.transitions)(a.is_global||t)&&a.in()}}const Pe=typeof requestIdleCallback>"u"?n=>setTimeout(n,1):requestIdleCallback;let tn=!1,en=!1,mn=[],En=[];function st(){tn=!1;const n=mn.slice();mn=[],cn(n)}function it(){en=!1;const n=En.slice();En=[],cn(n)}function Se(n){tn||(tn=!0,queueMicrotask(st)),mn.push(n)}function De(n){en||(en=!0,Pe(it)),En.push(n)}function Me(){tn&&st(),en&&it()}function rn(n){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}const ct=0,Ne=1;let ln=!1,an=ct,R=!1,U=null,B=!1,jn=!1;function vt(n){B=n}function dt(n){jn=n}let D=[],F=0,s=null;function V(n){s=n}let o=null;function W(n){o=n}let m=null;function Ie(n){m=n}let h=null,w=0,T=null;function $e(n){T=n}let pt=1,M=!1,f=null;function ht(){return++pt}function un(){return!I||f!==null&&f.l===null}function G(n){var u,i;var t=n.f;if(t&E)return!0;if(t&C){var e=n.deps,r=(t&k)!==0;if(e!==null){var l;if(t&Q){for(l=0;l<e.length;l++)((u=e[l]).reactions??(u.reactions=[])).push(n);n.f^=Q}for(l=0;l<e.length;l++){var a=e[l];if(G(a)&&Xn(a),r&&o!==null&&!M&&!((i=a==null?void 0:a.reactions)!=null&&i.includes(n))&&(a.reactions??(a.reactions=[])).push(n),a.version>n.version)return!0}}(!r||o!==null&&!M)&&b(n,y)}return!1}function Be(n,t){for(var e=t;e!==null;){if(e.f&vn)try{e.fn(n);return}catch{e.f^=vn}e=e.parent}throw ln=!1,n}function Fe(n){return(n.f&N)===0&&(n.parent===null||(n.parent.f&vn)===0)}function on(n,t,e,r){if(ln){if(e===null&&(ln=!1),Fe(t))throw n;return}e!==null&&(ln=!0);{Be(n,t);return}}function yt(n){var kn;var t=h,e=w,r=T,l=s,a=M,u=m,i=f,d=n.f;h=null,w=0,T=null,s=d&(x|K)?null:n,M=!B&&(d&k)!==0,m=null,f=n.ctx;try{var _=(0,n.fn)(),c=n.deps;if(h!==null){var p;if(Y(n,w),c!==null&&w>0)for(c.length=w+h.length,p=0;p<h.length;p++)c[w+p]=h[p];else n.deps=c=h;if(!M)for(p=w;p<c.length;p++)((kn=c[p]).reactions??(kn.reactions=[])).push(n)}else c!==null&&w<c.length&&(Y(n,w),c.length=w);return _}finally{h=t,w=e,T=r,s=l,M=a,m=u,f=i}}function Ge(n,t){let e=t.reactions;if(e!==null){var r=e.indexOf(n);if(r!==-1){var l=e.length-1;l===0?e=t.reactions=null:(e[r]=e[l],e.pop())}}e===null&&t.f&g&&(h===null||!h.includes(t))&&(b(t,C),t.f&(k|Q)||(t.f^=Q),Y(t,0))}function Y(n,t){var e=n.deps;if(e!==null)for(var r=t;r<e.length;r++)Ge(n,e[r])}function Z(n){var t=n.f;if(!(t&N)){b(n,y);var e=o,r=f;o=n;try{t&J?ke(n):lt(n),rt(n),et(n);var l=yt(n);n.teardown=typeof l=="function"?l:null,n.version=pt}catch(a){on(a,n,e,r||n.ctx)}finally{o=e}}}function _t(){if(F>1e3){F=0;try{Nt()}catch(n){if(U!==null)on(n,U,null);else throw n}}F++}function wt(n){var t=n.length;if(t!==0){_t();var e=B;B=!0;try{for(var r=0;r<t;r++){var l=n[r];l.f&y||(l.f^=y);var a=[];bt(l,a),He(a)}}finally{B=e}}}function He(n){var t=n.length;if(t!==0)for(var e=0;e<t;e++){var r=n[e];if(!(r.f&(N|P)))try{G(r)&&(Z(r),r.deps===null&&r.first===null&&r.nodes_start===null&&(r.teardown===null?at(r):r.fn=null))}catch(l){on(l,r,null,r.ctx)}}}function Ke(){if(R=!1,F>1001)return;const n=D;D=[],wt(n),R||(F=0,U=null)}function fn(n){an===ct&&(R||(R=!0,queueMicrotask(Ke))),U=n;for(var t=n;t.parent!==null;){t=t.parent;var e=t.f;if(e&(K|x)){if(!(e&y))return;t.f^=y}}D.push(t)}function bt(n,t){var e=n.first,r=[];n:for(;e!==null;){var l=e.f,a=(l&x)!==0,u=a&&(l&y)!==0,i=e.next;if(!u&&!(l&P))if(l&H){if(a)e.f^=y;else try{G(e)&&Z(e)}catch(p){on(p,e,null,e.ctx)}var d=e.first;if(d!==null){e=d;continue}}else l&Dn&&r.push(e);if(i===null){let p=e.parent;for(;p!==null;){if(n===p)break n;var _=p.next;if(_!==null){e=_;continue n}p=p.parent}}e=i}for(var c=0;c<r.length;c++)d=r[c],t.push(d),bt(d,t)}function qn(n){var t=an,e=D;try{_t();const l=[];an=Ne,D=l,R=!1,wt(e);var r=n==null?void 0:n();return Me(),(D.length>0||l.length>0)&&qn(),F=0,U=null,r}finally{an=t,D=e}}async function Le(){await Promise.resolve(),qn()}function On(n){var c;var t=n.f,e=(t&g)!==0;if(e&&t&N){var r=Qn(n);return bn(n),r}if(s!==null){m!==null&&m.includes(n)&&Gt();var l=s.deps;h===null&&l!==null&&l[w]===n?w++:h===null?h=[n]:h.push(n),T!==null&&o!==null&&o.f&y&&!(o.f&x)&&T.includes(n)&&(b(o,E),fn(o))}else if(e&&n.deps===null)for(var a=n,u=a.parent,i=a;u!==null;)if(u.f&g){var d=u;i=d,u=d.parent}else{var _=u;(c=_.deriveds)!=null&&c.includes(i)||(_.deriveds??(_.deriveds=[])).push(i);break}return e&&(a=n,G(a)&&Xn(a)),n.v}function z(n){const t=s;try{return s=null,n()}finally{s=t}}const Re=~(E|C|y);function b(n,t){n.f=n.f&Re|t}function Ue(n,t=!1,e){f={p:f,c:null,e:null,m:!1,s:n,x:null,l:null},I&&!t&&(f.l={s:null,u:null,r1:[],r2:X(!1)})}function Ve(n){const t=f;if(t!==null){n!==void 0&&(t.x=n);const u=t.e;if(u!==null){var e=o,r=s;t.e=null;try{for(var l=0;l<u.length;l++){var a=u[l];W(a.effect),V(a.reaction),gn(a.fn)}}finally{W(e),V(r)}}f=t.p,t.m=!0}return n||{}}function We(n){if(!(typeof n!="object"||!n||n instanceof EventTarget)){if(pn in n)Tn(n);else if(!Array.isArray(n))for(let t in n){const e=n[t];typeof e=="object"&&e&&pn in e&&Tn(e)}}}function Tn(n,t=new Set){if(typeof n=="object"&&n!==null&&!(n instanceof EventTarget)&&!t.has(n)){t.add(n),n instanceof Date&&n.getTime();for(let r in n)try{Tn(n[r],t)}catch{}const e=Sn(n);if(e!==Object.prototype&&e!==Array.prototype&&e!==Map.prototype&&e!==Set.prototype&&e!==Date.prototype){const r=Pn(e);for(let l in r){const a=r[l].get;if(a)try{a.call(n)}catch{}}}}}function gt(n){f===null&&rn(),I&&f.l!==null?Je(f).m.push(n):nt(()=>{const t=z(n);if(typeof t=="function")return t})}function Ye(n){f===null&&rn(),gt(()=>()=>z(n))}function Ze(n,t,{bubbles:e=!1,cancelable:r=!1}={}){return new CustomEvent(n,{detail:t,bubbles:e,cancelable:r})}function ze(){const n=f;return n===null&&rn(),(t,e,r)=>{var a;const l=(a=n.s.$$events)==null?void 0:a[t];if(l){const u=Cn(l)?l.slice():[l],i=Ze(t,e,r);for(const d of u)d.call(n.x,i);return!i.defaultPrevented}return!0}}function Je(n){var t=n.l;return t.u??(t.u={a:[],b:[],m:[]})}export{Wn as $,se as A,ve as B,S as C,E as D,dn as E,fe as F,Ce as G,Gn as H,Te as I,ut as J,v as K,Ct as L,C as M,Et as N,jt as O,X as P,Bt as Q,sn as R,pn as S,Ft as T,re as U,Sn as V,gn as W,nn as X,Se as Y,O as Z,le as _,Ve as a,he as a0,ye as a1,Oe as a2,pe as a3,ce as a4,ie as a5,Le as a6,ze as a7,je as a8,qe as a9,ot as aA,Hn as aB,s as aC,Lt as aD,Rt as aE,Ut as aF,Vt as aG,Wt as aH,q as aI,V as aJ,Nn as aK,Fn as aL,de as aM,yn as aN,wn as aO,It as aP,Ee as aQ,De as aR,Pt as aS,Pn as aT,J as aU,Mn as aV,ne as aW,Xt as aX,At as aY,un as aZ,Ye as a_,ue as aa,ae as ab,we as ac,xe as ad,$t as ae,kt as af,zt as ag,hn as ah,x as ai,K as aj,W as ak,Yt as al,I as am,Zt as an,Jt as ao,Qt as ap,qt as aq,L as ar,A as as,te as at,ee as au,xt as av,P as aw,Rn as ax,xn as ay,_e as az,nt as b,f as c,z as d,cn as e,We as f,On as g,zn as h,Kt as i,_n as j,qn as k,mt as l,Kn as m,Ot as n,gt as o,Ue as p,oe as q,Tt as r,Bn as s,b as t,me as u,o as v,rn as w,Cn as x,tt as y,j as z};
diff --git a/static/v1/_app/immutable/chunks/index-client.CGppiJvc.js.br b/static/v1/_app/immutable/chunks/index-client.CGppiJvc.js.br
new file mode 100644
index 000000000..df3ed678b
Binary files /dev/null and b/static/v1/_app/immutable/chunks/index-client.CGppiJvc.js.br differ
diff --git a/static/v1/_app/immutable/chunks/index-client.CGppiJvc.js.gz b/static/v1/_app/immutable/chunks/index-client.CGppiJvc.js.gz
new file mode 100644
index 000000000..b0f2afd68
Binary files /dev/null and b/static/v1/_app/immutable/chunks/index-client.CGppiJvc.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/index.BU3V9-NS.js b/static/v1/_app/immutable/chunks/index.BU3V9-NS.js
new file mode 100644
index 000000000..46f41b5ba
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/index.BU3V9-NS.js
@@ -0,0 +1,1 @@
+import{n as i,s as h}from"./index-client.CGppiJvc.js";const n=[];function p(s,r=i){let o=null;const u=new Set;function c(e){if(h(s,e)&&(s=e,o)){const f=!n.length;for(const t of u)t[1](),n.push(t,s);if(f){for(let t=0;t<n.length;t+=2)n[t][0](n[t+1]);n.length=0}}}function l(e){c(e(s))}function a(e,f=i){const t=[e,f];return u.add(t),u.size===1&&(o=r(c,l)||i),e(s),()=>{u.delete(t),u.size===0&&o&&(o(),o=null)}}return{set:c,update:l,subscribe:a}}export{p as w};
diff --git a/static/v1/_app/immutable/chunks/index.BU3V9-NS.js.br b/static/v1/_app/immutable/chunks/index.BU3V9-NS.js.br
new file mode 100644
index 000000000..e6cdec72d
Binary files /dev/null and b/static/v1/_app/immutable/chunks/index.BU3V9-NS.js.br differ
diff --git a/static/v1/_app/immutable/chunks/index.BU3V9-NS.js.gz b/static/v1/_app/immutable/chunks/index.BU3V9-NS.js.gz
new file mode 100644
index 000000000..6ce7e4fb7
Binary files /dev/null and b/static/v1/_app/immutable/chunks/index.BU3V9-NS.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js b/static/v1/_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js
new file mode 100644
index 000000000..c9b3cd7f0
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js
@@ -0,0 +1,1 @@
+import{_ as n,j as o,g as u}from"./index-client.CGppiJvc.js";import{p as r}from"./proxy.DB4Km9hY.js";var s={};let e=n(r(typeof process<"u"&&s.DEV_MODE==="true"));function f(){if(typeof process<"u")o(e,s.DEV_MODE==="true");else if(typeof window<"u"){let t=window.document.getElementsByName("rauthy-csrf-token")[0];o(e,t.id==="{{ csrf_token }}")}}function i(){return{get(){return u(e)},set(t){o(e,r(t))}}}export{f as i,i as u};
diff --git a/static/v1/_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js.br b/static/v1/_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js.br
new file mode 100644
index 000000000..231d1423e
Binary files /dev/null and b/static/v1/_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js.br differ
diff --git a/static/v1/_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js.gz b/static/v1/_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js.gz
new file mode 100644
index 000000000..56f66fc33
Binary files /dev/null and b/static/v1/_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/language.svelte.n4n5oz7-.js b/static/v1/_app/immutable/chunks/language.svelte.n4n5oz7-.js
new file mode 100644
index 000000000..61f440e91
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/language.svelte.n4n5oz7-.js
@@ -0,0 +1,1 @@
+import{j as o,g as t,_ as n}from"./index-client.CGppiJvc.js";import{p as r}from"./proxy.DB4Km9hY.js";let e=n("");function a(){typeof document<"u"?o(e,r(document.documentElement.lang.slice(0,2).toLowerCase())):o(e,"en")}function m(){return t(e)}export{a as i,m as u};
diff --git a/static/v1/_app/immutable/chunks/language.svelte.n4n5oz7-.js.br b/static/v1/_app/immutable/chunks/language.svelte.n4n5oz7-.js.br
new file mode 100644
index 000000000..c8c6279b3
Binary files /dev/null and b/static/v1/_app/immutable/chunks/language.svelte.n4n5oz7-.js.br differ
diff --git a/static/v1/_app/immutable/chunks/language.svelte.n4n5oz7-.js.gz b/static/v1/_app/immutable/chunks/language.svelte.n4n5oz7-.js.gz
new file mode 100644
index 000000000..7fccb9a63
Binary files /dev/null and b/static/v1/_app/immutable/chunks/language.svelte.n4n5oz7-.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/legacy-client.CgqodnwN.js b/static/v1/_app/immutable/chunks/legacy-client.CgqodnwN.js
new file mode 100644
index 000000000..f65c760bc
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/legacy-client.CgqodnwN.js
@@ -0,0 +1,1 @@
+var p=s=>{throw TypeError(s)};var g=(s,t,r)=>t.has(s)||p("Cannot "+r);var a=(s,t,r)=>(g(s,t,"read from private field"),r?r.call(s):t.get(s)),f=(s,t,r)=>t.has(s)?p("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,r),l=(s,t,r,o)=>(g(s,t,"write to private field"),o?o.call(s,r):t.set(s,r),r);var h,c;import{g as m,L as v,j as d,k as y,l as x,u as R,m as b,D as j,q as k,t as w,M,v as O,w as P,x as D,c as q}from"./index-client.CGppiJvc.js";import{a as C,m as L,u as Y}from"./render.D4MwAWTL.js";function _(s){return class extends z{constructor(t){super({component:s,...t})}}}class z{constructor(t){f(this,h);f(this,c);var $;var r=new Map,o=(e,n)=>{var u=b(n);return r.set(e,u),u};const i=new Proxy({...t.props||{},$$events:{}},{get(e,n){return m(r.get(n)??o(n,Reflect.get(e,n)))},has(e,n){return n===v?!0:(m(r.get(n)??o(n,Reflect.get(e,n))),Reflect.has(e,n))},set(e,n,u){return d(r.get(n)??o(n,u),u),Reflect.set(e,n,u)}});l(this,c,(t.hydrate?C:L)(t.component,{target:t.target,anchor:t.anchor,props:i,context:t.context,intro:t.intro??!1,recover:t.recover})),(!(($=t==null?void 0:t.props)!=null&&$.$$host)||t.sync===!1)&&y(),l(this,h,i.$$events);for(const e of Object.keys(a(this,c)))e==="$set"||e==="$destroy"||e==="$on"||x(this,e,{get(){return a(this,c)[e]},set(n){a(this,c)[e]=n},enumerable:!0});a(this,c).$set=e=>{Object.assign(i,e)},a(this,c).$destroy=()=>{Y(a(this,c))}}$set(t){a(this,c).$set(t)}$on(t,r){a(this,h)[t]=a(this,h)[t]||[];const o=(...i)=>r.call(this,...i);return a(this,h)[t].push(o),()=>{a(this,h)[t]=a(this,h)[t].filter(i=>i!==o)}}$destroy(){a(this,c).$destroy()}}h=new WeakMap,c=new WeakMap;function A(s){R(()=>{s();var t=O;t.f&j&&(k(),w(t,M))})}function B(){const s=q;return s===null&&P(),t=>r=>{var i;const o=(i=s.s.$$events)==null?void 0:i[t];if(o){const $=D(o)?o.slice():[o];for(const e of $)e.call(s.x,r);return!r.defaultPrevented}return!0}}export{_ as a,B as c,A as r};
diff --git a/static/v1/_app/immutable/chunks/legacy-client.CgqodnwN.js.br b/static/v1/_app/immutable/chunks/legacy-client.CgqodnwN.js.br
new file mode 100644
index 000000000..190d99a56
Binary files /dev/null and b/static/v1/_app/immutable/chunks/legacy-client.CgqodnwN.js.br differ
diff --git a/static/v1/_app/immutable/chunks/legacy-client.CgqodnwN.js.gz b/static/v1/_app/immutable/chunks/legacy-client.CgqodnwN.js.gz
new file mode 100644
index 000000000..37bc32371
Binary files /dev/null and b/static/v1/_app/immutable/chunks/legacy-client.CgqodnwN.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/legacy.BuHyzquP.js b/static/v1/_app/immutable/chunks/legacy.BuHyzquP.js
new file mode 100644
index 000000000..961bdc5f8
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/legacy.BuHyzquP.js
@@ -0,0 +1,1 @@
+import{i as a}from"./index-client.CGppiJvc.js";a();
diff --git a/static/v1/_app/immutable/chunks/legacy.BuHyzquP.js.br b/static/v1/_app/immutable/chunks/legacy.BuHyzquP.js.br
new file mode 100644
index 000000000..0c3775193
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/legacy.BuHyzquP.js.br
@@ -0,0 +1,2 @@
+��import{i as a}from"./index-client.CGppiJvc.js";a();
+
\ No newline at end of file
diff --git a/static/v1/_app/immutable/chunks/legacy.BuHyzquP.js.gz b/static/v1/_app/immutable/chunks/legacy.BuHyzquP.js.gz
new file mode 100644
index 000000000..11e32af50
Binary files /dev/null and b/static/v1/_app/immutable/chunks/legacy.BuHyzquP.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/lifecycle.CRex4y9i.js b/static/v1/_app/immutable/chunks/lifecycle.CRex4y9i.js
new file mode 100644
index 000000000..91aa41c01
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/lifecycle.CRex4y9i.js
@@ -0,0 +1,1 @@
+import{u as b,b as i,c as g,d as h,r as d,e as l,g as u,f as x,h as v}from"./index-client.CGppiJvc.js";function y(n=!1){const s=g,t=s.l.u;if(!t)return;let r=()=>x(s.s);if(n){let f=0,o={};const p=v(()=>{let c=!1;const e=s.s;for(const a in e)e[a]!==o[a]&&(o[a]=e[a],c=!0);return c&&f++,f});r=()=>u(p)}t.b.length&&b(()=>{m(s,r),l(t.b)}),i(()=>{const f=h(()=>t.m.map(d));return()=>{for(const o of f)typeof o=="function"&&o()}}),t.a.length&&i(()=>{m(s,r),l(t.a)})}function m(n,s){if(n.l.s)for(const t of n.l.s)u(t);s()}export{y as i};
diff --git a/static/v1/_app/immutable/chunks/lifecycle.CRex4y9i.js.br b/static/v1/_app/immutable/chunks/lifecycle.CRex4y9i.js.br
new file mode 100644
index 000000000..76a0dcf39
Binary files /dev/null and b/static/v1/_app/immutable/chunks/lifecycle.CRex4y9i.js.br differ
diff --git a/static/v1/_app/immutable/chunks/lifecycle.CRex4y9i.js.gz b/static/v1/_app/immutable/chunks/lifecycle.CRex4y9i.js.gz
new file mode 100644
index 000000000..91461f548
Binary files /dev/null and b/static/v1/_app/immutable/chunks/lifecycle.CRex4y9i.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/pow.r0U0E3f9.js b/static/v1/_app/immutable/chunks/pow.r0U0E3f9.js
new file mode 100644
index 000000000..6692cc889
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/pow.r0U0E3f9.js
@@ -0,0 +1,1 @@
+import{_}from"./preload-helper.CmsKOCeN.js";import{i as s}from"./dataFetching.Dto1xJW6.js";let r,i=(async()=>{r=async function(){let t=await s();if(t.ok){let a=await t.text(),e=(await _(async()=>{const{pow_work_wasm:w}=await import("./spow-wasm.UQjNzBcP.js").then(async o=>(await o.__tla,o));return{pow_work_wasm:w}},[],import.meta.url)).pow_work_wasm;return await e(a)||""}else{let a=await t.json();console.error(a)}}})();export{i as __tla,r as f};
diff --git a/static/v1/_app/immutable/chunks/pow.r0U0E3f9.js.br b/static/v1/_app/immutable/chunks/pow.r0U0E3f9.js.br
new file mode 100644
index 000000000..5219ba06d
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/pow.r0U0E3f9.js.br
@@ -0,0 +1,4 @@
+�`	6.t/D<�k:��c���Ħ$�f�X+l�����s)@ζ�G�(:�Fo[�$�	��[w�_�/1���m�߭��Uu�mN
+g�+G�R����V������^�E��o5��1G\�'4���\f��E��c˱��Ԅ��g�����Z�H��S�_��}}���7�L]��?�Vw	��]ۅ������C;m
+��&
+q����/����v���E	�n5��R�<�X��-a���N=��i�0?��2�����{�2T�70�
\ No newline at end of file
diff --git a/static/v1/_app/immutable/chunks/pow.r0U0E3f9.js.gz b/static/v1/_app/immutable/chunks/pow.r0U0E3f9.js.gz
new file mode 100644
index 000000000..b6b820ce3
Binary files /dev/null and b/static/v1/_app/immutable/chunks/pow.r0U0E3f9.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/preload-helper.CmsKOCeN.js b/static/v1/_app/immutable/chunks/preload-helper.CmsKOCeN.js
new file mode 100644
index 000000000..60446ebfa
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/preload-helper.CmsKOCeN.js
@@ -0,0 +1,1 @@
+const p="modulepreload",y=function(i,o){return new URL(i,o).href},h={},E=function(i,o,a){let d=Promise.resolve();if(o&&o.length>0){const r=document.getElementsByTagName("link"),e=document.querySelector("meta[property=csp-nonce]"),f=(e==null?void 0:e.nonce)||(e==null?void 0:e.getAttribute("nonce"));d=Promise.allSettled(o.map(t=>{if(t=y(t,a),t in h)return;h[t]=!0;const s=t.endsWith(".css"),m=s?'[rel="stylesheet"]':"";if(a)for(let c=r.length-1;c>=0;c--){const l=r[c];if(l.href===t&&(!s||l.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${t}"]${m}`))return;const n=document.createElement("link");if(n.rel=s?"stylesheet":p,s||(n.as="script"),n.crossOrigin="",n.href=t,f&&n.setAttribute("nonce",f),document.head.appendChild(n),s)return new Promise((c,l)=>{n.addEventListener("load",c),n.addEventListener("error",()=>l(new Error(`Unable to preload CSS for ${t}`)))})}))}function u(r){const e=new Event("vite:preloadError",{cancelable:!0});if(e.payload=r,window.dispatchEvent(e),!e.defaultPrevented)throw r}return d.then(r=>{for(const e of r||[])e.status==="rejected"&&u(e.reason);return i().catch(u)})};export{E as _};
diff --git a/static/v1/_app/immutable/chunks/preload-helper.CmsKOCeN.js.br b/static/v1/_app/immutable/chunks/preload-helper.CmsKOCeN.js.br
new file mode 100644
index 000000000..ed449b9e0
Binary files /dev/null and b/static/v1/_app/immutable/chunks/preload-helper.CmsKOCeN.js.br differ
diff --git a/static/v1/_app/immutable/chunks/preload-helper.CmsKOCeN.js.gz b/static/v1/_app/immutable/chunks/preload-helper.CmsKOCeN.js.gz
new file mode 100644
index 000000000..fd3a2a01a
Binary files /dev/null and b/static/v1/_app/immutable/chunks/preload-helper.CmsKOCeN.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/props.Df_pGDSd.js b/static/v1/_app/immutable/chunks/props.Df_pGDSd.js
new file mode 100644
index 000000000..7170b9c58
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/props.Df_pGDSd.js
@@ -0,0 +1,1 @@
+import{n as d,d as P,ad as I,m as L,g as f,j as R,R as q,ae as J,af as M,ag as N,ah as Q,ai as T,aj as U,ak as S,al as V,am as W,an as X,ao as Z,S as z,L as A,h as B,ac as _,v as C,ap as Y,aq as b}from"./index-client.CGppiJvc.js";import{p as rr}from"./proxy.DB4Km9hY.js";function nr(r,n,s){if(r==null)return n(void 0),d;const e=P(()=>r.subscribe(n,s));return e.unsubscribe?()=>e.unsubscribe():e}let g=!1;function er(r,n,s){const e=s[n]??(s[n]={store:null,source:L(void 0),unsubscribe:d});if(e.store!==r)if(e.unsubscribe(),e.store=r??null,r==null)e.source.v=void 0,e.unsubscribe=d;else{var u=!0;e.unsubscribe=nr(r,o=>{u?e.source.v=o:R(e.source,o)}),u=!1}return f(e.source)}function sr(r,n,s){let e=s[n];return e&&e.store!==r&&(e.unsubscribe(),e.unsubscribe=d),r}function tr(){const r={};return I(()=>{for(var n in r)r[n].unsubscribe()}),r}function ur(r){var n=g;try{return g=!1,[r(),g]}finally{g=n}}const or={get(r,n){if(!r.exclude.includes(n))return r.props[n]},set(r,n){return!1},getOwnPropertyDescriptor(r,n){if(!r.exclude.includes(n)&&n in r.props)return{enumerable:!0,configurable:!0,value:r.props[n]}},has(r,n){return r.exclude.includes(n)?!1:n in r.props},ownKeys(r){return Reflect.ownKeys(r.props).filter(n=>!r.exclude.includes(n))}};function ar(r,n,s){return new Proxy({props:r,exclude:n},or)}const ir={get(r,n){let s=r.props.length;for(;s--;){let e=r.props[s];if(b(e)&&(e=e()),typeof e=="object"&&e!==null&&n in e)return e[n]}},set(r,n,s){let e=r.props.length;for(;e--;){let u=r.props[e];b(u)&&(u=u());const o=q(u,n);if(o&&o.set)return o.set(s),!0}return!1},getOwnPropertyDescriptor(r,n){let s=r.props.length;for(;s--;){let e=r.props[s];if(b(e)&&(e=e()),typeof e=="object"&&e!==null&&n in e){const u=q(e,n);return u&&!u.configurable&&(u.configurable=!0),u}}},has(r,n){if(n===z||n===A)return!1;for(let s of r.props)if(b(s)&&(s=s()),s!=null&&n in s)return!0;return!1},ownKeys(r){const n=[];for(let s of r.props){b(s)&&(s=s());for(const e in s)n.includes(e)||n.push(e)}return n}};function lr(...r){return new Proxy({props:r},ir)}function E(r){for(var n=C,s=C;n!==null&&!(n.f&(T|U));)n=n.parent;try{return S(n),r()}finally{S(s)}}function cr(r,n,s,e){var k;var u=(s&V)!==0,o=!W||(s&X)!==0,y=(s&Z)!==0,F=(s&Y)!==0,K=!1,i;y?[i,K]=ur(()=>r[n]):i=r[n];var G=z in r||A in r,p=((k=q(r,n))==null?void 0:k.set)??(G&&y&&n in r?t=>r[n]=t:void 0),a=e,h=!0,m=!1,D=()=>(m=!0,h&&(h=!1,F?a=P(e):a=e),a);i===void 0&&e!==void 0&&(p&&o&&J(),i=D(),p&&p(i));var l;if(o)l=()=>{var t=r[n];return t===void 0?D():(h=!0,m=!1,t)};else{var O=E(()=>(u?B:_)(()=>r[n]));O.f|=M,l=()=>{var t=f(O);return t!==void 0&&(a=void 0),t===void 0?a:t}}if(!(s&N))return l;if(p){var H=r.$$legacy;return function(t,c){return arguments.length>0?((!o||!c||H||K)&&p(c?l():t),t):l()}}var x=!1,$=!1,w=L(i),v=E(()=>B(()=>{var t=l(),c=f(w);return x?(x=!1,$=!0,c):($=!1,w.v=t)}));return u||(v.equals=Q),function(t,c){if(arguments.length>0){const j=c?f(v):o&&y?rr(t):t;return v.equals(j)||(x=!0,R(w,j),m&&a!==void 0&&(a=j),P(()=>f(v))),t}return f(v)}}export{er as a,sr as b,lr as c,cr as p,ar as r,tr as s};
diff --git a/static/v1/_app/immutable/chunks/props.Df_pGDSd.js.br b/static/v1/_app/immutable/chunks/props.Df_pGDSd.js.br
new file mode 100644
index 000000000..6b5bd6a52
Binary files /dev/null and b/static/v1/_app/immutable/chunks/props.Df_pGDSd.js.br differ
diff --git a/static/v1/_app/immutable/chunks/props.Df_pGDSd.js.gz b/static/v1/_app/immutable/chunks/props.Df_pGDSd.js.gz
new file mode 100644
index 000000000..ebb8e7d03
Binary files /dev/null and b/static/v1/_app/immutable/chunks/props.Df_pGDSd.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/proxy.DB4Km9hY.js b/static/v1/_app/immutable/chunks/proxy.DB4Km9hY.js
new file mode 100644
index 000000000..22abe81de
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/proxy.DB4Km9hY.js
@@ -0,0 +1,1 @@
+import{S as b,N as K,O as S,P as l,Q as T,j as f,R,U as s,g as h,v as U,T as x,V as A,x as E}from"./index-client.CGppiJvc.js";function g(i,d=null,M){if(typeof i!="object"||i===null||b in i)return i;const j=A(i);if(j!==K&&j!==S)return i;var n=new Map,c=E(i),m=l(0);c&&n.set("length",l(i.length));var p;return new Proxy(i,{defineProperty(v,r,e){(!("value"in e)||e.configurable===!1||e.enumerable===!1||e.writable===!1)&&T();var t=n.get(r);return t===void 0?(t=l(e.value),n.set(r,t)):f(t,g(e.value,p)),!0},deleteProperty(v,r){var e=n.get(r);if(e===void 0)r in v&&n.set(r,l(s));else{if(c&&typeof r=="string"){var t=n.get("length"),a=Number(r);Number.isInteger(a)&&a<t.v&&f(t,a)}f(e,s),N(m)}return!0},get(v,r,e){var u;if(r===b)return i;var t=n.get(r),a=r in v;if(t===void 0&&(!a||(u=R(v,r))!=null&&u.writable)&&(t=l(g(a?v[r]:s,p)),n.set(r,t)),t!==void 0){var o=h(t);return o===s?void 0:o}return Reflect.get(v,r,e)},getOwnPropertyDescriptor(v,r){var e=Reflect.getOwnPropertyDescriptor(v,r);if(e&&"value"in e){var t=n.get(r);t&&(e.value=h(t))}else if(e===void 0){var a=n.get(r),o=a==null?void 0:a.v;if(a!==void 0&&o!==s)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return e},has(v,r){var o;if(r===b)return!0;var e=n.get(r),t=e!==void 0&&e.v!==s||Reflect.has(v,r);if(e!==void 0||U!==null&&(!t||(o=R(v,r))!=null&&o.writable)){e===void 0&&(e=l(t?g(v[r],p):s),n.set(r,e));var a=h(e);if(a===s)return!1}return t},set(v,r,e,t){var D;var a=n.get(r),o=r in v;if(c&&r==="length")for(var u=e;u<a.v;u+=1){var y=n.get(u+"");y!==void 0?f(y,s):u in v&&(y=l(s),n.set(u+"",y))}a===void 0?(!o||(D=R(v,r))!=null&&D.writable)&&(a=l(void 0),f(a,g(e,p)),n.set(r,a)):(o=a.v!==s,f(a,g(e,p)));var w=Reflect.getOwnPropertyDescriptor(v,r);if(w!=null&&w.set&&w.set.call(t,e),!o){if(c&&typeof r=="string"){var O=n.get("length"),P=Number(r);Number.isInteger(P)&&P>=O.v&&f(O,P+1)}N(m)}return!0},ownKeys(v){h(m);var r=Reflect.ownKeys(v).filter(a=>{var o=n.get(a);return o===void 0||o.v!==s});for(var[e,t]of n)t.v!==s&&!(e in v)&&r.push(e);return r},setPrototypeOf(){x()}})}function N(i,d=1){f(i,i.v+d)}function I(i){return i!==null&&typeof i=="object"&&b in i?i[b]:i}function L(i,d){return Object.is(I(i),I(d))}export{L as i,g as p};
diff --git a/static/v1/_app/immutable/chunks/proxy.DB4Km9hY.js.br b/static/v1/_app/immutable/chunks/proxy.DB4Km9hY.js.br
new file mode 100644
index 000000000..c439f8506
Binary files /dev/null and b/static/v1/_app/immutable/chunks/proxy.DB4Km9hY.js.br differ
diff --git a/static/v1/_app/immutable/chunks/proxy.DB4Km9hY.js.gz b/static/v1/_app/immutable/chunks/proxy.DB4Km9hY.js.gz
new file mode 100644
index 000000000..b7aa8a108
Binary files /dev/null and b/static/v1/_app/immutable/chunks/proxy.DB4Km9hY.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/render.D4MwAWTL.js b/static/v1/_app/immutable/chunks/render.D4MwAWTL.js
new file mode 100644
index 000000000..601004832
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/render.D4MwAWTL.js
@@ -0,0 +1,1 @@
+import{Y as W,z as p,as as x,az as B,aJ as L,ak as E,ad as z,aC as A,v as M,l as R,x as U,ar as K,y as X,aK as Z,aL as $,aI as T,F as w,C as k,K as m,aM as N,aN as O,A as ee,aB as te,aO as ne,aP as oe,av as ae,aQ as re,I as se,p as ue,a as ce,c as ie}from"./index-client.CGppiJvc.js";import{d as le}from"./disclose-version.DZhRUPAc.js";function de(e){return e.endsWith("capture")&&e!=="gotpointercapture"&&e!=="lostpointercapture"}const fe=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function ve(e){return fe.includes(e)}const pe={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject"};function me(e){return e=e.toLowerCase(),pe[e]??e}const he=["touchstart","touchmove"];function _e(e){return he.includes(e)}function we(e,t){if(t){const n=document.body;e.autofocus=!0,W(()=>{document.activeElement===n&&e.focus()})}}function ye(e){p&&x(e)!==null&&B(e)}let D=!1;function J(){D||(D=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const n of e.target.elements)(t=n.__on_r)==null||t.call(n)})},{capture:!0}))}function ge(e,t,n,a=!0){a&&n();for(var r of t)e.addEventListener(r,n);z(()=>{for(var o of t)e.removeEventListener(o,n)})}function P(e){var t=A,n=M;L(null),E(null);try{return e()}finally{L(t),E(n)}}function be(e,t,n,a=n){e.addEventListener(t,()=>P(n));const r=e.__on_r;r?e.__on_r=()=>{r(),a(!0)}:e.__on_r=()=>a(!0),J()}const Q=new Set,S=new Set;function Y(e,t,n,a){function r(o){if(a.capture||g.call(t,o),!o.cancelBubble)return P(()=>n.call(this,o))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?W(()=>{t.addEventListener(e,r,a)}):t.addEventListener(e,r,a),r}function Le(e,t,n,a,r){var o={capture:a,passive:r},i=Y(e,t,n,o);(t===document.body||t===window||t===document)&&z(()=>{t.removeEventListener(e,i,o)})}function Ee(e){for(var t=0;t<e.length;t++)Q.add(e[t]);for(var n of S)n(e)}function g(e){var V;var t=this,n=t.ownerDocument,a=e.type,r=((V=e.composedPath)==null?void 0:V.call(e))||[],o=r[0]||e.target,i=0,h=e.__root;if(h){var f=r.indexOf(h);if(f!==-1&&(t===document||t===window)){e.__root=t;return}var _=r.indexOf(t);if(_===-1)return;f<=_&&(i=f)}if(o=r[i]||e.target,o!==t){R(e,"currentTarget",{configurable:!0,get(){return o||n}});var C=A,l=M;L(null),E(null);try{for(var s,u=[];o!==null;){var d=o.assignedSlot||o.parentNode||o.host||null;try{var v=o["__"+a];if(v!==void 0&&!o.disabled)if(U(v)){var[G,...H]=v;G.apply(o,[e,...H])}else v.call(o,e)}catch(b){s?u.push(b):s=b}if(e.cancelBubble||d===t||d===null)break;o=d}if(s){for(let b of u)queueMicrotask(()=>{throw b});throw s}}finally{e.__root=t,delete e.currentTarget,L(C),E(l)}}}let c;function ke(){c=void 0}function Ce(e){let t=null,n=p;var a;if(p){for(t=m,c===void 0&&(c=x(document.head));c!==null&&(c.nodeType!==8||c.data!==$);)c=T(c);c===null?w(!1):c=k(T(c))}p||(a=document.head.appendChild(K()));try{X(()=>e(a),Z)}finally{n&&(w(!0),c=m,k(t))}}let j=!0;function xe(e,t){var n=t==null?"":typeof t=="object"?t+"":t;n!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=n,e.nodeValue=n==null?"":n+"")}function q(e,t){return F(e,t)}function Me(e,t){N(),t.intro=t.intro??!1;const n=t.target,a=p,r=m;try{for(var o=x(n);o&&(o.nodeType!==8||o.data!==$);)o=T(o);if(!o)throw O;w(!0),k(o),ee();const i=F(e,{...t,anchor:o});if(m===null||m.nodeType!==8||m.data!==te)throw ne(),O;return w(!1),i}catch(i){if(i===O)return t.recover===!1&&oe(),N(),B(n),w(!1),q(e,t);throw i}finally{w(a),k(r),ke()}}const y=new Map;function F(e,{target:t,anchor:n,props:a={},events:r,context:o,intro:i=!0}){N();var h=new Set,f=l=>{for(var s=0;s<l.length;s++){var u=l[s];if(!h.has(u)){h.add(u);var d=_e(u);t.addEventListener(u,g,{passive:d});var v=y.get(u);v===void 0?(document.addEventListener(u,g,{passive:d}),y.set(u,1)):y.set(u,v+1)}}};f(ae(Q)),S.add(f);var _=void 0,C=re(()=>{var l=n??t.appendChild(K());return se(()=>{if(o){ue({});var s=ie;s.c=o}r&&(a.$$events=r),p&&le(l,null),j=i,_=e(l,a)||{},j=!0,p&&(M.nodes_end=m),o&&ce()}),()=>{var d;for(var s of h){t.removeEventListener(s,g);var u=y.get(s);--u===0?(document.removeEventListener(s,g),y.delete(s)):y.set(s,u)}S.delete(f),l!==n&&((d=l.parentNode)==null||d.removeChild(l))}});return I.set(_,C),_}let I=new WeakMap;function Te(e,t){const n=I.get(e);return n?(I.delete(e),n(t)):Promise.resolve()}export{Me as a,J as b,Y as c,Ee as d,Le as e,we as f,ve as g,Ce as h,de as i,j,ge as k,be as l,q as m,me as n,ye as r,xe as s,Te as u,P as w};
diff --git a/static/v1/_app/immutable/chunks/render.D4MwAWTL.js.br b/static/v1/_app/immutable/chunks/render.D4MwAWTL.js.br
new file mode 100644
index 000000000..55b86debf
Binary files /dev/null and b/static/v1/_app/immutable/chunks/render.D4MwAWTL.js.br differ
diff --git a/static/v1/_app/immutable/chunks/render.D4MwAWTL.js.gz b/static/v1/_app/immutable/chunks/render.D4MwAWTL.js.gz
new file mode 100644
index 000000000..778752372
Binary files /dev/null and b/static/v1/_app/immutable/chunks/render.D4MwAWTL.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/snippet.xhmr1ywJ.js b/static/v1/_app/immutable/chunks/snippet.xhmr1ywJ.js
new file mode 100644
index 000000000..7fd7ded2a
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/snippet.xhmr1ywJ.js
@@ -0,0 +1,1 @@
+import{y as i,E as p,I as t,n as c,Z as l,z as m,K as u}from"./index-client.CGppiJvc.js";function E(o,r,...f){var n=o,s=c,a;i(()=>{s!==(s=r())&&(a&&(l(a),a=null),a=t(()=>s(n,...f)))},p),m&&(n=u)}export{E as s};
diff --git a/static/v1/_app/immutable/chunks/snippet.xhmr1ywJ.js.br b/static/v1/_app/immutable/chunks/snippet.xhmr1ywJ.js.br
new file mode 100644
index 000000000..f7123aa65
Binary files /dev/null and b/static/v1/_app/immutable/chunks/snippet.xhmr1ywJ.js.br differ
diff --git a/static/v1/_app/immutable/chunks/snippet.xhmr1ywJ.js.gz b/static/v1/_app/immutable/chunks/snippet.xhmr1ywJ.js.gz
new file mode 100644
index 000000000..fc8247785
Binary files /dev/null and b/static/v1/_app/immutable/chunks/snippet.xhmr1ywJ.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/spow-wasm.UQjNzBcP.js b/static/v1/_app/immutable/chunks/spow-wasm.UQjNzBcP.js
new file mode 100644
index 000000000..a85fe83de
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/spow-wasm.UQjNzBcP.js
@@ -0,0 +1,1 @@
+let k,x,T,A,M,R,q,W,j,C,F,O,U,B,E,L,P,S,z,D,I,J,fn=(async()=>{const K=""+new URL("../assets/spow-wasm_bg.PRnxRq7g.wasm",import.meta.url).href,N=async(n={},e)=>{let _;if(e.startsWith("data:")){const o=e.replace(/^data:.*?base64,/,"");let t;if(typeof Buffer=="function"&&typeof Buffer.from=="function")t=Buffer.from(o,"base64");else if(typeof atob=="function"){const c=atob(o);t=new Uint8Array(c.length);for(let r=0;r<c.length;r++)t[r]=c.charCodeAt(r)}else throw new Error("Cannot decode base64-encoded data URL");_=await WebAssembly.instantiate(t,n)}else{const o=await fetch(e),t=o.headers.get("Content-Type")||"";if("instantiateStreaming"in WebAssembly&&t.startsWith("application/wasm"))_=await WebAssembly.instantiateStreaming(o,n);else{const c=await o.arrayBuffer();_=await WebAssembly.instantiate(c,n)}}return _.instance.exports};let u;F=function(n){u=n};const b=new Array(128).fill(void 0);b.push(void 0,null,!0,!1);function s(n){return b[n]}let d=b.length;function Q(n){n<132||(b[n]=d,d=n)}function h(n){const e=s(n);return Q(n),e}const V=typeof TextDecoder>"u"?(0,module.require)("util").TextDecoder:TextDecoder;let G=new V("utf-8",{ignoreBOM:!0,fatal:!0});G.decode();let g=null;function m(){return(g===null||g.byteLength===0)&&(g=new Uint8Array(u.memory.buffer)),g}function y(n,e){return n=n>>>0,G.decode(m().subarray(n,n+e))}function a(n){d===b.length&&b.push(b.length+1);const e=d;return d=b[e],b[e]=n,e}const H=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>{u.__wbindgen_export_0.get(n.dtor)(n.a,n.b)});function X(n,e,_,o){const t={a:n,b:e,cnt:1,dtor:_},c=(...r)=>{t.cnt++;const i=t.a;t.a=0;try{return o(i,t.b,...r)}finally{--t.cnt===0?(u.__wbindgen_export_0.get(t.dtor)(i,t.b),H.unregister(t)):t.a=i}};return c.original=t,H.register(c,t,t),c}function Y(n,e,_){u._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7eff1fc92a11aeed(n,e,a(_))}let v=0;const Z=typeof TextEncoder>"u"?(0,module.require)("util").TextEncoder:TextEncoder;let p=new Z("utf-8");const $=typeof p.encodeInto=="function"?function(n,e){return p.encodeInto(n,e)}:function(n,e){const _=p.encode(n);return e.set(_),{read:n.length,written:_.length}};function nn(n,e,_){if(_===void 0){const i=p.encode(n),w=e(i.length,1)>>>0;return m().subarray(w,w+i.length).set(i),v=i.length,w}let o=n.length,t=e(o,1)>>>0;const c=m();let r=0;for(;r<o;r++){const i=n.charCodeAt(r);if(i>127)break;c[t+r]=i}if(r!==o){r!==0&&(n=n.slice(r)),t=_(t,o,o=r+n.length*3,1)>>>0;const i=m().subarray(t+r,t+o),w=$(n,i);r+=w.written,t=_(t,o,r,1)>>>0}return v=r,t}J=function(n){const e=nn(n,u.__wbindgen_malloc,u.__wbindgen_realloc),_=v,o=u.pow_work_wasm(e,_);return h(o)};function l(n,e){try{return n.apply(this,e)}catch(_){u.__wbindgen_exn_store(a(_))}}function en(n,e,_,o){u.wasm_bindgen__convert__closures__invoke2_mut__h8d1a7fb8f096da29(n,e,a(_),a(o))}z=function(n){h(n)},D=function(n,e){const _=y(n,e);return a(_)},W=function(n){const e=s(n).queueMicrotask;return a(e)},L=function(n){return typeof s(n)=="function"},B=function(n){const e=h(n).original;return e.cnt--==1?(e.a=0,!0):!1},q=function(n){queueMicrotask(s(n))},C=function(){return l(function(){const n=self.self;return a(n)},arguments)},U=function(){return l(function(){const n=window.window;return a(n)},arguments)},T=function(){return l(function(){const n=globalThis.globalThis;return a(n)},arguments)},A=function(){return l(function(){const n=global.global;return a(n)},arguments)},P=function(n){return s(n)===void 0},R=function(n,e){const _=new Function(y(n,e));return a(_)},k=function(){return l(function(n,e){const _=s(n).call(s(e));return a(_)},arguments)},S=function(n){const e=s(n);return a(e)},x=function(){return l(function(n,e,_){const o=s(n).call(s(e),s(_));return a(o)},arguments)},M=function(n,e){try{var _={a:n,b:e},o=(c,r)=>{const i=_.a;_.a=0;try{return en(i,_.b,c,r)}finally{_.a=i}};const t=new Promise(o);return a(t)}finally{_.a=_.b=0}},j=function(n){const e=Promise.resolve(s(n));return a(e)},O=function(n,e){const _=s(n).then(s(e));return a(_)},I=function(n,e){throw new Error(y(n,e))},E=function(n,e,_){const o=X(n,e,7,Y);return a(o)},URL=globalThis.URL;const f=await N({"./spow-wasm_bg.js":{__wbindgen_object_drop_ref:z,__wbindgen_string_new:D,__wbg_queueMicrotask_48421b3cc9052b68:W,__wbindgen_is_function:L,__wbindgen_cb_drop:B,__wbg_queueMicrotask_12a30234db4045d3:q,__wbg_self_3093d5d1f7bcb682:C,__wbg_window_3bcfc4d31bc012f8:U,__wbg_globalThis_86b222e13bdf32ed:T,__wbg_global_e5a3fe56f8be9485:A,__wbindgen_is_undefined:P,__wbg_newnoargs_76313bd6ff35d0f2:R,__wbg_call_1084a111329e68ce:k,__wbindgen_object_clone_ref:S,__wbg_call_89af060b4e1523f2:x,__wbg_new_b85e72ed1bfd57f9:M,__wbg_resolve_570458cb99d56a43:j,__wbg_then_95e6edc0f89b73b1:O,__wbindgen_throw:I,__wbindgen_closure_wrapper36:E}},K),_n=f.memory,tn=f.pow_work_wasm,on=f.__wbindgen_export_0,rn=f._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7eff1fc92a11aeed,an=f.__wbindgen_malloc,sn=f.__wbindgen_realloc,cn=f.__wbindgen_exn_store,un=f.wasm_bindgen__convert__closures__invoke2_mut__h8d1a7fb8f096da29,bn=Object.freeze(Object.defineProperty({__proto__:null,__wbindgen_exn_store:cn,__wbindgen_export_0:on,__wbindgen_malloc:an,__wbindgen_realloc:sn,_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7eff1fc92a11aeed:rn,memory:_n,pow_work_wasm:tn,wasm_bindgen__convert__closures__invoke2_mut__h8d1a7fb8f096da29:un},Symbol.toStringTag,{value:"Module"}));F(bn)})();export{fn as __tla,k as __wbg_call_1084a111329e68ce,x as __wbg_call_89af060b4e1523f2,T as __wbg_globalThis_86b222e13bdf32ed,A as __wbg_global_e5a3fe56f8be9485,M as __wbg_new_b85e72ed1bfd57f9,R as __wbg_newnoargs_76313bd6ff35d0f2,q as __wbg_queueMicrotask_12a30234db4045d3,W as __wbg_queueMicrotask_48421b3cc9052b68,j as __wbg_resolve_570458cb99d56a43,C as __wbg_self_3093d5d1f7bcb682,F as __wbg_set_wasm,O as __wbg_then_95e6edc0f89b73b1,U as __wbg_window_3bcfc4d31bc012f8,B as __wbindgen_cb_drop,E as __wbindgen_closure_wrapper36,L as __wbindgen_is_function,P as __wbindgen_is_undefined,S as __wbindgen_object_clone_ref,z as __wbindgen_object_drop_ref,D as __wbindgen_string_new,I as __wbindgen_throw,J as pow_work_wasm};
diff --git a/static/v1/_app/immutable/chunks/spow-wasm.UQjNzBcP.js.br b/static/v1/_app/immutable/chunks/spow-wasm.UQjNzBcP.js.br
new file mode 100644
index 000000000..f66f0f55a
Binary files /dev/null and b/static/v1/_app/immutable/chunks/spow-wasm.UQjNzBcP.js.br differ
diff --git a/static/v1/_app/immutable/chunks/spow-wasm.UQjNzBcP.js.gz b/static/v1/_app/immutable/chunks/spow-wasm.UQjNzBcP.js.gz
new file mode 100644
index 000000000..e7e5f020f
Binary files /dev/null and b/static/v1/_app/immutable/chunks/spow-wasm.UQjNzBcP.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/this.B23tdsYu.js b/static/v1/_app/immutable/chunks/this.B23tdsYu.js
new file mode 100644
index 000000000..a24d48a35
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/this.B23tdsYu.js
@@ -0,0 +1,1 @@
+import{W as e,X as f,d as l,Y as b,S as c}from"./index-client.CGppiJvc.js";function o(n,u){return n===u||(n==null?void 0:n[c])===u}function d(n={},u,a,m){return e(()=>{var s,t;return f(()=>{s=t,t=[],l(()=>{n!==a(...t)&&(u(n,...t),s&&o(a(...s),n)&&u(null,...s))})}),()=>{b(()=>{t&&o(a(...t),n)&&u(null,...t)})}}),n}export{d as b};
diff --git a/static/v1/_app/immutable/chunks/this.B23tdsYu.js.br b/static/v1/_app/immutable/chunks/this.B23tdsYu.js.br
new file mode 100644
index 000000000..e0f1a3446
Binary files /dev/null and b/static/v1/_app/immutable/chunks/this.B23tdsYu.js.br differ
diff --git a/static/v1/_app/immutable/chunks/this.B23tdsYu.js.gz b/static/v1/_app/immutable/chunks/this.B23tdsYu.js.gz
new file mode 100644
index 000000000..d58557a13
Binary files /dev/null and b/static/v1/_app/immutable/chunks/this.B23tdsYu.js.gz differ
diff --git a/static/v1/_app/immutable/chunks/tweened.CQQvc4Vq.js b/static/v1/_app/immutable/chunks/tweened.CQQvc4Vq.js
new file mode 100644
index 000000000..29f86b714
--- /dev/null
+++ b/static/v1/_app/immutable/chunks/tweened.CQQvc4Vq.js
@@ -0,0 +1,1 @@
+import{w as E}from"./index.BU3V9-NS.js";import{r as d,l as g}from"./Loading.FF_EHyHU.js";function f(r){return Object.prototype.toString.call(r)==="[object Date]"}function v(r){return r}function O(r){const e=r-1;return e*e*e+1}function l(r,e){if(r===e||r!==r)return()=>r;const i=typeof r;if(i!==typeof e||Array.isArray(r)!==Array.isArray(e))throw new Error("Cannot interpolate values of different type");if(Array.isArray(r)){const s=e.map((t,n)=>l(r[n],t));return t=>s.map(n=>n(t))}if(i==="object"){if(!r||!e)throw new Error("Object cannot be null");if(f(r)&&f(e)){const n=r.getTime(),o=e.getTime()-n;return a=>new Date(n+a*o)}const s=Object.keys(e),t={};return s.forEach(n=>{t[n]=l(r[n],e[n])}),n=>{const o={};return s.forEach(a=>{o[a]=t[a](n)}),o}}if(i==="number"){const s=e-r;return t=>r+t*s}throw new Error(`Cannot interpolate ${i} values`)}function P(r,e={}){const i=E(r);let s,t=r;function n(o,a){if(t=o,r==null)return i.set(r=o),Promise.resolve();let u=s,p=!1,{delay:A=0,duration:c=400,easing:h=v,interpolate:j=l}={...e,...a};if(c===0)return u&&(u.abort(),u=null),i.set(r=t),Promise.resolve();const b=d.now()+A;let m;return s=g(y=>{if(y<b)return!0;p||(m=j(r,o),typeof c=="function"&&(c=c(r,o)),p=!0),u&&(u.abort(),u=null);const w=y-b;return w>c?(i.set(r=o),!1):(i.set(r=m(h(w/c))),!0)}),s.promise}return{set:n,update:(o,a)=>n(o(t,r),a),subscribe:i.subscribe}}export{O as c,f as i,P as t};
diff --git a/static/v1/_app/immutable/chunks/tweened.CQQvc4Vq.js.br b/static/v1/_app/immutable/chunks/tweened.CQQvc4Vq.js.br
new file mode 100644
index 000000000..df035bc2c
Binary files /dev/null and b/static/v1/_app/immutable/chunks/tweened.CQQvc4Vq.js.br differ
diff --git a/static/v1/_app/immutable/chunks/tweened.CQQvc4Vq.js.gz b/static/v1/_app/immutable/chunks/tweened.CQQvc4Vq.js.gz
new file mode 100644
index 000000000..947696dad
Binary files /dev/null and b/static/v1/_app/immutable/chunks/tweened.CQQvc4Vq.js.gz differ
diff --git a/static/v1/_app/immutable/entry/app.Dj8nXbmK.js b/static/v1/_app/immutable/entry/app.Dj8nXbmK.js
new file mode 100644
index 000000000..7cc98f6ef
--- /dev/null
+++ b/static/v1/_app/immutable/entry/app.Dj8nXbmK.js
@@ -0,0 +1,2 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.Cb38Tfsl.js","../chunks/disclose-version.DZhRUPAc.js","../chunks/index-client.CGppiJvc.js","../chunks/if.DUA6Hpfn.js","../chunks/snippet.xhmr1ywJ.js","../chunks/proxy.DB4Km9hY.js","../chunks/is_dev.svelte.sP_MjoCE.js","../chunks/language.svelte.n4n5oz7-.js","../chunks/i18n.svelte.BTGsPiz_.js","../assets/0.BjC-dB5x.css","../nodes/1.DKMdcINp.js","../chunks/legacy.BuHyzquP.js","../chunks/render.D4MwAWTL.js","../chunks/lifecycle.CRex4y9i.js","../chunks/entry.Ddy6icaf.js","../chunks/index.BU3V9-NS.js","../nodes/2.DWHAwZAi.js","../chunks/Button.BH2_dPry.js","../chunks/Loading.FF_EHyHU.js","../chunks/dataFetching.Dto1xJW6.js","../chunks/props.Df_pGDSd.js","../assets/Loading.C3rZw9wZ.css","../chunks/legacy-client.CgqodnwN.js","../assets/Button.BjnyTAiT.css","../chunks/LangSelector.mSh8cV6Q.js","../chunks/OptionSelect.BCgZksOM.js","../assets/OptionSelect.v1wsJTwS.css","../chunks/helpers.DVmWh-6p.js","../assets/LangSelector.O5X7vySz.css","../chunks/AppVersion.DL5DXmu_.js","../assets/AppVersion.DHsV5F-O.css","../chunks/ContentCenter.CsjyBf2d.js","../assets/ContentCenter.BpmtvV5f.css","../assets/2.CZlF3VMn.css","../nodes/3.BgldDfnM.js","../chunks/Loading.wZ55XKP1.js","../assets/Loading.BVnr1IrI.css","../chunks/Devices.BuQD3GeY.js","../chunks/this.B23tdsYu.js","../chunks/tweened.CQQvc4Vq.js","../chunks/Input.Bj_i2TLU.js","../assets/Input.DM5r-cSQ.css","../chunks/CheckIcon.Cjxxxfsf.js","../assets/Devices.BgusA-6p.css","../chunks/PasswordPolicy.D9rZurKD.js","../assets/PasswordPolicy.CpXtnh7y.css","../chunks/PasswordInput.6uXzPAl-.js","../assets/PasswordInput.DaeGq-fv.css","../chunks/WebauthnRequest.CHVZELhw.js","../assets/WebauthnRequest._nhbHN0l.css","../assets/3.CF_aMXlW.css","../nodes/4.o4_Xudri.js","../chunks/AdminMainPre.BC7y4hZJ.js","../assets/AdminMainPre.ZcanbrCY.css","../nodes/5.F9D6MuWR.js","../nodes/6.o4_Xudri.js","../nodes/7.BScIbGWF.js","../nodes/8.DJkHqmWH.js","../nodes/9.5SYTyflJ.js","../nodes/10.mAHy2gv0.js","../nodes/11.CbrcXpmW.js","../nodes/12.DRctYUn3.js","../nodes/13.x64cmFvq.js","../nodes/14.DoJ-tz2B.js","../nodes/15.CUsx6Ptm.js","../nodes/16.eXw--TB9.js","../nodes/17.o4_Xudri.js","../nodes/18.DtlPpkWl.js","../chunks/pow.r0U0E3f9.js","../chunks/preload-helper.CmsKOCeN.js","../assets/18.GNJxucTb.css","../nodes/19.0qOBqwlU.js","../chunks/Error.CsY9Wg-p.js","../assets/Error.BHaKgkRX.css","../nodes/20.0qOBqwlU.js","../nodes/21.0qOBqwlU.js","../nodes/22.0qOBqwlU.js","../nodes/23.CKFyfpgm.js","../assets/23.BGsNSr6e.css","../nodes/24.D6gupSzm.js","../assets/24.GB6k287-.css","../nodes/25.Dh7XjBbD.js","../nodes/26.BxPoozgR.js","../assets/26.HJ4svAjD.css","../nodes/27.gkewKINJ.js","../assets/27.CnT30TCt.css","../nodes/28.DMZ7hk2F.js","../assets/28.CxOoN8ns.css","../nodes/29.Cll9oCQC.js","../assets/29.D1v94sLe.css","../nodes/30.C8nt_tI6.js","../assets/30.DvqR7Iqw.css"])))=>i.map(i=>d[i]);
+import{_ as r}from"../chunks/preload-helper.CmsKOCeN.js";import{a as N}from"../chunks/legacy-client.CgqodnwN.js";import{a as E,b as x,c as D,t as rr}from"../chunks/disclose-version.DZhRUPAc.js";import{z as j,A as tr,y as or,E as _r,I as ar,K as mr,J as er,p as ir,u as sr,b as pr,o as lr,g as l,j as L,a6 as nr,a0 as I,a1 as ur,a as Er,_ as V,a3 as cr,a5 as dr,a2 as Or,h as P}from"../chunks/index-client.CGppiJvc.js";import{s as Ir}from"../chunks/render.D4MwAWTL.js";import{i as R}from"../chunks/if.DUA6Hpfn.js";import{p as Ar}from"../chunks/proxy.DB4Km9hY.js";import{b as T}from"../chunks/this.B23tdsYu.js";import{p as f}from"../chunks/props.Df_pGDSd.js";let $,v,z,q,g,B,C,F,G,Dr=(async()=>{function A(a,t,m){j&&tr();var n=a,s,i;or(()=>{s!==(s=t())&&(i&&(er(i),i=null),s&&(i=ar(()=>m(n,s))))},_r),j&&(n=mr)}B={};var H=x('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),J=x("<!> <!>",1);function K(a,t){ir(t,!0);let m=f(t,"components",23,()=>[]),n=f(t,"data_0",3,null),s=f(t,"data_1",3,null);sr(()=>t.stores.page.set(t.page)),pr(()=>{t.stores,t.page,t.constructors,m(),t.form,n(),s(),t.stores.page.notify()});let i=V(!1),h=V(!1),b=V(null);lr(()=>{const o=t.stores.page.subscribe(()=>{l(i)&&(L(h,!0),nr().then(()=>{L(b,Ar(document.title||"untitled page"))}))});return L(i,!0),o});const M=P(()=>t.constructors[1]);var y=J(),k=I(y);{var Q=o=>{var e=D();const c=P(()=>t.constructors[0]);var d=I(e);A(d,()=>l(c),(p,u)=>{T(u(p,{get data(){return n()},get form(){return t.form},children:(_,Lr)=>{var w=D(),X=I(w);A(X,()=>l(M),(Y,Z)=>{T(Z(Y,{get data(){return s()},get form(){return t.form}}),O=>m()[1]=O,()=>{var O;return(O=m())==null?void 0:O[1]})}),E(_,w)},$$slots:{default:!0}}),_=>m()[0]=_,()=>{var _;return(_=m())==null?void 0:_[0]})}),E(o,e)},S=o=>{var e=D();const c=P(()=>t.constructors[0]);var d=I(e);A(d,()=>l(c),(p,u)=>{T(u(p,{get data(){return n()},get form(){return t.form}}),_=>m()[0]=_,()=>{var _;return(_=m())==null?void 0:_[0]})}),E(o,e)};R(k,o=>{t.constructors[1]?o(Q):o(S,!1)})}var U=ur(k,2);{var W=o=>{var e=H(),c=cr(e);{var d=p=>{var u=rr();Or(()=>Ir(u,l(b))),E(p,u)};R(c,p=>{l(h)&&p(d)})}dr(e),E(o,e)};R(U,o=>{l(i)&&o(W)})}E(a,y),Er()}F=N(K),C=[()=>r(()=>import("../nodes/0.Cb38Tfsl.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),()=>r(()=>import("../nodes/1.DKMdcINp.js"),__vite__mapDeps([10,1,2,11,12,13,14,15]),import.meta.url),()=>r(()=>import("../nodes/2.DWHAwZAi.js"),__vite__mapDeps([16,1,2,12,3,17,4,18,19,20,5,21,22,23,24,25,26,7,27,28,29,30,31,32,6,8,33]),import.meta.url),()=>r(()=>import("../nodes/3.BgldDfnM.js"),__vite__mapDeps([34,1,2,12,3,5,19,35,18,20,21,36,37,25,26,22,4,38,15,39,40,27,41,42,8,7,43,17,23,24,28,44,45,46,47,48,49,31,32,50]),import.meta.url),()=>r(()=>import("../nodes/4.o4_Xudri.js"),__vite__mapDeps([51,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/5.F9D6MuWR.js"),__vite__mapDeps([54,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/6.o4_Xudri.js"),__vite__mapDeps([55,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/7.BScIbGWF.js"),__vite__mapDeps([56,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/8.DJkHqmWH.js"),__vite__mapDeps([57,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/9.5SYTyflJ.js"),__vite__mapDeps([58,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/10.mAHy2gv0.js"),__vite__mapDeps([59,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/11.CbrcXpmW.js"),__vite__mapDeps([60,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/12.DRctYUn3.js"),__vite__mapDeps([61,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/13.x64cmFvq.js"),__vite__mapDeps([62,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/14.DoJ-tz2B.js"),__vite__mapDeps([63,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/15.CUsx6Ptm.js"),__vite__mapDeps([64,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/16.eXw--TB9.js"),__vite__mapDeps([65,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/17.o4_Xudri.js"),__vite__mapDeps([66,1,2,11,52,12,3,5,20,19,18,21,17,4,22,23,37,25,26,38,15,39,40,27,41,42,8,7,43,29,30,46,47,44,45,53]),import.meta.url),()=>r(()=>import("../nodes/18.DtlPpkWl.js"),__vite__mapDeps([67,1,2,12,3,25,19,5,20,26,22,35,18,21,36,24,7,27,28,40,4,41,17,23,68,69,31,32,8,70]),import.meta.url),()=>r(()=>import("../nodes/19.0qOBqwlU.js"),__vite__mapDeps([71,1,2,11,72,12,3,5,24,19,20,25,26,7,27,28,31,4,32,6,73]),import.meta.url),()=>r(()=>import("../nodes/20.0qOBqwlU.js"),__vite__mapDeps([74,1,2,11,72,12,3,5,24,19,20,25,26,7,27,28,31,4,32,6,73]),import.meta.url),()=>r(()=>import("../nodes/21.0qOBqwlU.js"),__vite__mapDeps([75,1,2,11,72,12,3,5,24,19,20,25,26,7,27,28,31,4,32,6,73]),import.meta.url),()=>r(()=>import("../nodes/22.0qOBqwlU.js"),__vite__mapDeps([76,1,2,11,72,12,3,5,24,19,20,25,26,7,27,28,31,4,32,6,73]),import.meta.url),()=>r(()=>import("../nodes/23.CKFyfpgm.js"),__vite__mapDeps([77,1,2,12,3,5,27,17,4,18,19,20,21,22,23,40,41,42,31,32,78]),import.meta.url),()=>r(()=>import("../nodes/24.D6gupSzm.js"),__vite__mapDeps([79,1,2,11,12,3,25,19,5,20,26,18,21,13,40,4,27,41,17,22,23,48,39,15,8,7,49,46,38,47,24,28,31,32,80]),import.meta.url),()=>r(()=>import("../nodes/25.Dh7XjBbD.js"),__vite__mapDeps([81,1,2,11,12,13,18,19,20,5,21]),import.meta.url),()=>r(()=>import("../nodes/26.BxPoozgR.js"),__vite__mapDeps([82,1,2,12,3,5,19,17,4,18,20,21,22,23,8,7,31,32,24,25,26,27,28,83]),import.meta.url),()=>r(()=>import("../nodes/27.gkewKINJ.js"),__vite__mapDeps([84,1,2,12,3,5,19,48,18,20,21,39,15,8,7,49,4,24,25,26,27,28,17,22,23,85]),import.meta.url),()=>r(()=>import("../nodes/28.DMZ7hk2F.js"),__vite__mapDeps([86,1,2,12,3,5,22,40,4,18,19,20,21,27,41,17,23,24,25,26,7,28,68,69,31,32,6,8,87]),import.meta.url),()=>r(()=>import("../nodes/29.Cll9oCQC.js"),__vite__mapDeps([88,1,2,12,5,24,19,20,25,26,7,27,28,17,3,4,18,21,22,23,31,32,8,89]),import.meta.url),()=>r(()=>import("../nodes/30.C8nt_tI6.js"),__vite__mapDeps([90,1,2,12,3,18,19,20,5,21,22,40,4,27,41,17,23,44,8,7,45,46,38,47,48,39,15,49,24,25,26,28,6,91]),import.meta.url)],G=[],z={"/":[2],"/account":[3],"/admin":[4],"/admin/api_keys":[5],"/admin/attributes":[6],"/admin/blacklist":[7],"/admin/clients":[8],"/admin/config":[9],"/admin/docs":[10],"/admin/events":[11],"/admin/groups":[12],"/admin/providers":[13],"/admin/roles":[14],"/admin/scopes":[15],"/admin/sessions":[16],"/admin/users":[17],"/device":[18],"/error":[19],"/error/error":[20],"/error/error/error":[21],"/error/error/error/error":[22],"/fedcm":[23],"/oidc/authorize":[24],"/oidc/callback":[25],"/oidc/logout":[26],"/providers/callback":[27],"/users/register":[28],"/users/{id}/email_confirm/email_confirm":[29],"/users/{id}/reset/reset":[30]},g={handleError:({error:a})=>{console.error(a)},reroute:()=>{},transport:{}},v=Object.fromEntries(Object.entries(g.transport).map(([a,t])=>[a,t.decode])),q=!1,$=(a,t)=>v[a](t)})();export{Dr as __tla,$ as decode,v as decoders,z as dictionary,q as hash,g as hooks,B as matchers,C as nodes,F as root,G as server_loads};
diff --git a/static/v1/_app/immutable/entry/app.Dj8nXbmK.js.br b/static/v1/_app/immutable/entry/app.Dj8nXbmK.js.br
new file mode 100644
index 000000000..385a855c6
Binary files /dev/null and b/static/v1/_app/immutable/entry/app.Dj8nXbmK.js.br differ
diff --git a/static/v1/_app/immutable/entry/app.Dj8nXbmK.js.gz b/static/v1/_app/immutable/entry/app.Dj8nXbmK.js.gz
new file mode 100644
index 000000000..0bdec9a23
Binary files /dev/null and b/static/v1/_app/immutable/entry/app.Dj8nXbmK.js.gz differ
diff --git a/static/v1/_app/immutable/entry/start.Bj78bRRv.js b/static/v1/_app/immutable/entry/start.Bj78bRRv.js
new file mode 100644
index 000000000..9f6995445
--- /dev/null
+++ b/static/v1/_app/immutable/entry/start.Bj78bRRv.js
@@ -0,0 +1,1 @@
+import{a as t}from"../chunks/entry.Ddy6icaf.js";export{t as start};
diff --git a/static/v1/_app/immutable/entry/start.Bj78bRRv.js.br b/static/v1/_app/immutable/entry/start.Bj78bRRv.js.br
new file mode 100644
index 000000000..279114890
Binary files /dev/null and b/static/v1/_app/immutable/entry/start.Bj78bRRv.js.br differ
diff --git a/static/v1/_app/immutable/entry/start.Bj78bRRv.js.gz b/static/v1/_app/immutable/entry/start.Bj78bRRv.js.gz
new file mode 100644
index 000000000..4830707a7
Binary files /dev/null and b/static/v1/_app/immutable/entry/start.Bj78bRRv.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/0.Cb38Tfsl.js b/static/v1/_app/immutable/nodes/0.Cb38Tfsl.js
new file mode 100644
index 000000000..b81d3ad57
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/0.Cb38Tfsl.js
@@ -0,0 +1,1 @@
+import{a as r,b as e,c as v}from"../chunks/disclose-version.DZhRUPAc.js";import{p as d,o as b,a1 as h,a0 as n,a as u,j as g,g as _,_ as j}from"../chunks/index-client.CGppiJvc.js";import{i as k}from"../chunks/if.DUA6Hpfn.js";import{s as y}from"../chunks/snippet.xhmr1ywJ.js";import{p as S}from"../chunks/proxy.DB4Km9hY.js";import{i as C}from"../chunks/is_dev.svelte.sP_MjoCE.js";import{i as O}from"../chunks/language.svelte.n4n5oz7-.js";import{i as w}from"../chunks/i18n.svelte.BTGsPiz_.js";const x=!0,E="never",M=Object.freeze(Object.defineProperty({__proto__:null,prerender:x,trailingSlash:E},Symbol.toStringTag,{value:"Module"}));var q=e("<div><h1>Cookies disabled</h1> <p>You need to enable Cookies.<br> Without them, a safe interaction with Rauthy is not possible.</p></div>"),z=e("<noscript></noscript> <!>",1);function A(m,i){d(i,!0),C(),O(),w();let s=j(!0);b(()=>{g(s,S(navigator.cookieEnabled))});var t=z(),p=h(n(t),2);{var l=a=>{var o=v(),f=n(o);y(f,()=>i.children),r(a,o)},c=a=>{var o=q();r(a,o)};k(p,a=>{_(s)?a(l):a(c,!1)})}r(m,t),u()}export{A as component,M as universal};
diff --git a/static/v1/_app/immutable/nodes/0.Cb38Tfsl.js.br b/static/v1/_app/immutable/nodes/0.Cb38Tfsl.js.br
new file mode 100644
index 000000000..4f88a6366
Binary files /dev/null and b/static/v1/_app/immutable/nodes/0.Cb38Tfsl.js.br differ
diff --git a/static/v1/_app/immutable/nodes/0.Cb38Tfsl.js.gz b/static/v1/_app/immutable/nodes/0.Cb38Tfsl.js.gz
new file mode 100644
index 000000000..a15f54030
Binary files /dev/null and b/static/v1/_app/immutable/nodes/0.Cb38Tfsl.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/1.DKMdcINp.js b/static/v1/_app/immutable/nodes/1.DKMdcINp.js
new file mode 100644
index 000000000..3b2b41b29
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/1.DKMdcINp.js
@@ -0,0 +1,1 @@
+import{a as c,b as d}from"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{p as h,a0 as v,a2 as l,a as b,a1 as k,a3 as o,a5 as u}from"../chunks/index-client.CGppiJvc.js";import{s as m}from"../chunks/render.D4MwAWTL.js";import{i as x}from"../chunks/lifecycle.CRex4y9i.js";import{s as B,p as r}from"../chunks/entry.Ddy6icaf.js";const E={get data(){return r.data},get error(){return r.error},get form(){return r.form},get params(){return r.params},get route(){return r.route},get state(){return r.state},get status(){return r.status},get url(){return r.url}};B.updated.check;const p=E;var _=d("<h1> </h1> <p> </p>",1);function $(n,g){h(g,!1),x();var a=_(),t=v(a),f=o(t,!0);u(t);var s=k(t,2),i=o(s,!0);u(s),l(()=>{var e;m(f,p.status),m(i,(e=p.error)==null?void 0:e.message)}),c(n,a),b()}export{$ as component};
diff --git a/static/v1/_app/immutable/nodes/1.DKMdcINp.js.br b/static/v1/_app/immutable/nodes/1.DKMdcINp.js.br
new file mode 100644
index 000000000..dde9a00fc
Binary files /dev/null and b/static/v1/_app/immutable/nodes/1.DKMdcINp.js.br differ
diff --git a/static/v1/_app/immutable/nodes/1.DKMdcINp.js.gz b/static/v1/_app/immutable/nodes/1.DKMdcINp.js.gz
new file mode 100644
index 000000000..b83f48762
Binary files /dev/null and b/static/v1/_app/immutable/nodes/1.DKMdcINp.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/10.mAHy2gv0.js b/static/v1/_app/immutable/nodes/10.mAHy2gv0.js
new file mode 100644
index 000000000..46ec42040
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/10.mAHy2gv0.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as t}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(o){t(o,{selected:"Docs"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/10.mAHy2gv0.js.br b/static/v1/_app/immutable/nodes/10.mAHy2gv0.js.br
new file mode 100644
index 000000000..ef614bebb
Binary files /dev/null and b/static/v1/_app/immutable/nodes/10.mAHy2gv0.js.br differ
diff --git a/static/v1/_app/immutable/nodes/10.mAHy2gv0.js.gz b/static/v1/_app/immutable/nodes/10.mAHy2gv0.js.gz
new file mode 100644
index 000000000..32238fe77
Binary files /dev/null and b/static/v1/_app/immutable/nodes/10.mAHy2gv0.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/11.CbrcXpmW.js b/static/v1/_app/immutable/nodes/11.CbrcXpmW.js
new file mode 100644
index 000000000..e299e20a4
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/11.CbrcXpmW.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as t}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(o){t(o,{selected:"Events"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/11.CbrcXpmW.js.br b/static/v1/_app/immutable/nodes/11.CbrcXpmW.js.br
new file mode 100644
index 000000000..df223a99a
Binary files /dev/null and b/static/v1/_app/immutable/nodes/11.CbrcXpmW.js.br differ
diff --git a/static/v1/_app/immutable/nodes/11.CbrcXpmW.js.gz b/static/v1/_app/immutable/nodes/11.CbrcXpmW.js.gz
new file mode 100644
index 000000000..303164cd7
Binary files /dev/null and b/static/v1/_app/immutable/nodes/11.CbrcXpmW.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/12.DRctYUn3.js b/static/v1/_app/immutable/nodes/12.DRctYUn3.js
new file mode 100644
index 000000000..8e2dc3f67
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/12.DRctYUn3.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as t}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(o){t(o,{selected:"Groups"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/12.DRctYUn3.js.br b/static/v1/_app/immutable/nodes/12.DRctYUn3.js.br
new file mode 100644
index 000000000..5da3f941b
Binary files /dev/null and b/static/v1/_app/immutable/nodes/12.DRctYUn3.js.br differ
diff --git a/static/v1/_app/immutable/nodes/12.DRctYUn3.js.gz b/static/v1/_app/immutable/nodes/12.DRctYUn3.js.gz
new file mode 100644
index 000000000..84ba5c796
Binary files /dev/null and b/static/v1/_app/immutable/nodes/12.DRctYUn3.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/13.x64cmFvq.js b/static/v1/_app/immutable/nodes/13.x64cmFvq.js
new file mode 100644
index 000000000..b130f5378
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/13.x64cmFvq.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as e}from"../chunks/AdminMainPre.BC7y4hZJ.js";function r(o){e(o,{selected:"Providers"})}export{r as component};
diff --git a/static/v1/_app/immutable/nodes/13.x64cmFvq.js.br b/static/v1/_app/immutable/nodes/13.x64cmFvq.js.br
new file mode 100644
index 000000000..35057007e
Binary files /dev/null and b/static/v1/_app/immutable/nodes/13.x64cmFvq.js.br differ
diff --git a/static/v1/_app/immutable/nodes/13.x64cmFvq.js.gz b/static/v1/_app/immutable/nodes/13.x64cmFvq.js.gz
new file mode 100644
index 000000000..01af2ad66
Binary files /dev/null and b/static/v1/_app/immutable/nodes/13.x64cmFvq.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/14.DoJ-tz2B.js b/static/v1/_app/immutable/nodes/14.DoJ-tz2B.js
new file mode 100644
index 000000000..522c4d730
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/14.DoJ-tz2B.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as e}from"../chunks/AdminMainPre.BC7y4hZJ.js";function t(o){e(o,{selected:"Roles"})}export{t as component};
diff --git a/static/v1/_app/immutable/nodes/14.DoJ-tz2B.js.br b/static/v1/_app/immutable/nodes/14.DoJ-tz2B.js.br
new file mode 100644
index 000000000..5c6f520f8
Binary files /dev/null and b/static/v1/_app/immutable/nodes/14.DoJ-tz2B.js.br differ
diff --git a/static/v1/_app/immutable/nodes/14.DoJ-tz2B.js.gz b/static/v1/_app/immutable/nodes/14.DoJ-tz2B.js.gz
new file mode 100644
index 000000000..8119782a1
Binary files /dev/null and b/static/v1/_app/immutable/nodes/14.DoJ-tz2B.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/15.CUsx6Ptm.js b/static/v1/_app/immutable/nodes/15.CUsx6Ptm.js
new file mode 100644
index 000000000..d1a6fb030
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/15.CUsx6Ptm.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as e}from"../chunks/AdminMainPre.BC7y4hZJ.js";function t(o){e(o,{selected:"Scopes"})}export{t as component};
diff --git a/static/v1/_app/immutable/nodes/15.CUsx6Ptm.js.br b/static/v1/_app/immutable/nodes/15.CUsx6Ptm.js.br
new file mode 100644
index 000000000..57632506b
Binary files /dev/null and b/static/v1/_app/immutable/nodes/15.CUsx6Ptm.js.br differ
diff --git a/static/v1/_app/immutable/nodes/15.CUsx6Ptm.js.gz b/static/v1/_app/immutable/nodes/15.CUsx6Ptm.js.gz
new file mode 100644
index 000000000..ed6384ca5
Binary files /dev/null and b/static/v1/_app/immutable/nodes/15.CUsx6Ptm.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/16.eXw--TB9.js b/static/v1/_app/immutable/nodes/16.eXw--TB9.js
new file mode 100644
index 000000000..99e258d1f
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/16.eXw--TB9.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as e}from"../chunks/AdminMainPre.BC7y4hZJ.js";function t(o){e(o,{selected:"Sessions"})}export{t as component};
diff --git a/static/v1/_app/immutable/nodes/16.eXw--TB9.js.br b/static/v1/_app/immutable/nodes/16.eXw--TB9.js.br
new file mode 100644
index 000000000..5fbccf480
Binary files /dev/null and b/static/v1/_app/immutable/nodes/16.eXw--TB9.js.br differ
diff --git a/static/v1/_app/immutable/nodes/16.eXw--TB9.js.gz b/static/v1/_app/immutable/nodes/16.eXw--TB9.js.gz
new file mode 100644
index 000000000..e6bd47eb1
Binary files /dev/null and b/static/v1/_app/immutable/nodes/16.eXw--TB9.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/17.o4_Xudri.js b/static/v1/_app/immutable/nodes/17.o4_Xudri.js
new file mode 100644
index 000000000..d9bd8b5d3
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/17.o4_Xudri.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as t}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(o){t(o,{selected:"Users"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/17.o4_Xudri.js.br b/static/v1/_app/immutable/nodes/17.o4_Xudri.js.br
new file mode 100644
index 000000000..f9d87bdfb
Binary files /dev/null and b/static/v1/_app/immutable/nodes/17.o4_Xudri.js.br differ
diff --git a/static/v1/_app/immutable/nodes/17.o4_Xudri.js.gz b/static/v1/_app/immutable/nodes/17.o4_Xudri.js.gz
new file mode 100644
index 000000000..a451b9a02
Binary files /dev/null and b/static/v1/_app/immutable/nodes/17.o4_Xudri.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/18.DtlPpkWl.js b/static/v1/_app/immutable/nodes/18.DtlPpkWl.js
new file mode 100644
index 000000000..a7e86c4f1
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/18.DtlPpkWl.js
@@ -0,0 +1,1 @@
+import{a as c,b as k,t as W,c as ve}from"../chunks/disclose-version.DZhRUPAc.js";import{p as ye,_ as f,o as ne,a as Ae,j as t,a2 as n,$ as je,a0 as D,g as s,a1 as l,a3 as r,a5 as o,a4 as _}from"../chunks/index-client.CGppiJvc.js";import{h as Ie,s as d}from"../chunks/render.D4MwAWTL.js";import{i as q}from"../chunks/if.DUA6Hpfn.js";import{e as be,i as Ee}from"../chunks/OptionSelect.BCgZksOM.js";import{p as i}from"../chunks/proxy.DB4Km9hY.js";import{r as Ne}from"../chunks/legacy-client.CgqodnwN.js";import{g as Se,k as Te,r as le,l as Be,p as De,m as Me}from"../chunks/dataFetching.Dto1xJW6.js";import{L as ze}from"../chunks/Loading.wZ55XKP1.js";import{L as Fe}from"../chunks/LangSelector.mSh8cV6Q.js";import{c as He,a as Oe,I as Re}from"../chunks/Input.Bj_i2TLU.js";import{B as X}from"../chunks/Button.BH2_dPry.js";import{f as Ue}from"../chunks/pow.r0U0E3f9.js";import{M as We,C as _e}from"../chunks/ContentCenter.CsjyBf2d.js";import{u as qe}from"../chunks/i18n.svelte.BTGsPiz_.js";var Ge=k('<div class="desc svelte-19xxeot"> </div> <!> <!>',1),Je=k('<div class="desc svelte-19xxeot"><p> </p> <p> </p></div>'),Ke=k('<div class="desc svelte-19xxeot"><p class="declined svelte-19xxeot"> </p> <p> </p></div>'),Pe=k("<li> </li>"),Qe=k('<div class="desc svelte-19xxeot"> <ul></ul></div> <div class="inline svelte-19xxeot"><!> <!></div>',1),Ve=k('<div class="container svelte-19xxeot"><div class="name svelte-19xxeot"><h2> </h2></div> <!> <div class="err svelte-19xxeot"> </div></div>'),Xe=k("<!> <!>",1);function Ye(ue,me){ye(me,!0);const Y="8rem";let e=qe(),Z=f(void 0),M=f(""),I=f(8),x=f(!1),ee=!1,G=f(void 0),se=f(!1),ae=f(!1),b=i({userCode:""}),z=f(i({userCode:""})),te=f(i({}));Ne(()=>{e&&s(I)&&t(te,i(He().shape({userCode:Oe().trim().min(s(I),e.common.errTooShort).max(s(I),e.common.errTooLong).matches(Be,e.common.invalidInput)})))}),ne(()=>{t(I,i(Number.parseInt(window.document.getElementsByName("rauthy-data")[0].id)))}),ne(async()=>{const v=Se();v.code&&(b.userCode=v.code);let E=await Te();E.ok?t(Z,i(await E.json())):v.code?le(`device?code=${v.code}`):le("device")});function pe(){ee&&oe()}async function F(v){var N;if(t(M,""),ee=!0,!await oe())return;t(x,!0);let E=await Ue(),J={user_code:b.userCode,pow:E,device_accepted:v};const w=await De(J);if(w.status===200){const g=await w.json();console.log(g),t(G,i(((N=g.scopes)==null?void 0:N.split(" "))||["openid"]))}else if(w.status===202)t(se,!0),setTimeout(()=>{window.location.replace("/auth/v1/account?v=devices")},2e3);else if(w.status===204)t(ae,!0);else if(w.status===404)t(M,i(e.device.wrongOrExpired));else{const g=await w.json();t(M,i(g.message))}t(x,!1)}async function oe(){try{return await s(te).validate(b,{abortEarly:!1}),t(z,i({userCode:""})),!0}catch(v){return t(z,i(Me(v))),!1}}Ie(v=>{n(()=>je.title=(e==null?void 0:e.device.title)||"Device Authorization")}),We(ue,{children:(v,E)=>{_e(v,{children:(J,w)=>{var N=Xe(),g=D(N);{var fe=y=>{ze(y,{})},xe=y=>{var K=Ve(),P=r(K),re=r(P),he=r(re,!0);o(re),o(P);var ie=l(P,2);{var we=A=>{var S=Ge(),T=D(S),Q=r(T,!0);n(()=>d(Q,e.device.desc.replaceAll("{{count}}",s(I)))),o(T);var H=l(T,2);Re(H,{name:"userCode",autocomplete:"off",get placeholder(){return e.device.userCode},get value(){return b.userCode},set value(a){b.userCode=a},get error(){return s(z).userCode},set error(a){s(z).userCode=a},$$events:{enter:F,input:pe},children:(a,C)=>{_();var u=W();n(()=>d(u,e.device.userCode.toUpperCase())),c(a,u)},$$slots:{default:!0}});var $=l(H,2);X($,{get isLoading(){return s(x)},set isLoading(a){t(x,i(a))},$$events:{click:()=>F("pending")},children:(a,C)=>{_();var u=W();n(()=>d(u,e.device.submit)),c(a,u)},$$slots:{default:!0}}),c(A,S)},ge=A=>{var S=ve(),T=D(S);{var Q=$=>{var a=Je(),C=r(a),u=r(C,!0);o(C);var O=l(C,2),h=r(O,!0);o(O),o(a),n(()=>{d(u,e.device.isAccepted),d(h,e.device.autoRedirectAccount)}),c($,a)},H=$=>{var a=ve(),C=D(a);{var u=h=>{var j=Ke(),L=r(j),R=r(L,!0);o(L);var B=l(L,2),U=r(B,!0);o(B),o(j),n(()=>{d(R,e.device.isDeclined),d(U,e.device.closeWindow)}),c(h,j)},O=h=>{var j=Qe(),L=D(j),R=r(L),B=l(R);be(B,21,()=>s(G),Ee,(m,V)=>{var p=Pe(),ke=r(p,!0);o(p),n(()=>d(ke,s(V))),c(m,p)}),o(B),o(L);var U=l(L,2),de=r(U);X(de,{level:1,width:Y,get isLoading(){return s(x)},set isLoading(m){t(x,i(m))},$$events:{click:()=>F("accept")},children:(m,V)=>{_();var p=W();n(()=>d(p,e.device.accept)),c(m,p)},$$slots:{default:!0}});var Le=l(de,2);X(Le,{level:3,width:Y,get isLoading(){return s(x)},set isLoading(m){t(x,i(m))},$$events:{click:()=>F("decline")},children:(m,V)=>{_();var p=W();n(()=>d(p,e.device.decline)),c(m,p)},$$slots:{default:!0}}),o(U),n(()=>d(R,`${e.device.descScopes??""} `)),c(h,j)};q(C,h=>{s(ae)?h(u):h(O,!1)},!0)}c($,a)};q(T,$=>{s(se)?$(Q):$(H,!1)},!0)}c(A,S)};q(ie,A=>{s(G)===void 0?A(we):A(ge,!1)})}var ce=l(ie,2),Ce=r(ce,!0);o(ce),o(K),n(()=>{d(he,e.device.title),d(Ce,s(M))}),c(y,K)};q(g,y=>{s(Z)?y(xe,!1):y(fe)})}var $e=l(g,2);Fe($e,{absolute:!0}),c(J,N)},$$slots:{default:!0}})},$$slots:{default:!0}}),Ae()}export{Ye as component};
diff --git a/static/v1/_app/immutable/nodes/18.DtlPpkWl.js.br b/static/v1/_app/immutable/nodes/18.DtlPpkWl.js.br
new file mode 100644
index 000000000..92ea80dff
Binary files /dev/null and b/static/v1/_app/immutable/nodes/18.DtlPpkWl.js.br differ
diff --git a/static/v1/_app/immutable/nodes/18.DtlPpkWl.js.gz b/static/v1/_app/immutable/nodes/18.DtlPpkWl.js.gz
new file mode 100644
index 000000000..38799dea5
Binary files /dev/null and b/static/v1/_app/immutable/nodes/18.DtlPpkWl.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/19.0qOBqwlU.js b/static/v1/_app/immutable/nodes/19.0qOBqwlU.js
new file mode 100644
index 000000000..0b67872d3
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/19.0qOBqwlU.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{E as r}from"../chunks/Error.CsY9Wg-p.js";function t(o){r(o,{})}export{t as component};
diff --git a/static/v1/_app/immutable/nodes/19.0qOBqwlU.js.br b/static/v1/_app/immutable/nodes/19.0qOBqwlU.js.br
new file mode 100644
index 000000000..4ff169b7b
Binary files /dev/null and b/static/v1/_app/immutable/nodes/19.0qOBqwlU.js.br differ
diff --git a/static/v1/_app/immutable/nodes/19.0qOBqwlU.js.gz b/static/v1/_app/immutable/nodes/19.0qOBqwlU.js.gz
new file mode 100644
index 000000000..a15946c4a
Binary files /dev/null and b/static/v1/_app/immutable/nodes/19.0qOBqwlU.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/2.DWHAwZAi.js b/static/v1/_app/immutable/nodes/2.DWHAwZAi.js
new file mode 100644
index 000000000..6a97d6d5c
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/2.DWHAwZAi.js
@@ -0,0 +1,1 @@
+import{t as d,a as s,b as k}from"../chunks/disclose-version.DZhRUPAc.js";import{p as A,o as D,a as F,j as G,$ as H,a0 as I,g as J,a1 as i,a2 as l,_ as K,a3 as y,a4 as m,a5 as B}from"../chunks/index-client.CGppiJvc.js";import{h as O,s as c}from"../chunks/render.D4MwAWTL.js";import{i as P}from"../chunks/if.DUA6Hpfn.js";import{B as v}from"../chunks/Button.BH2_dPry.js";import{L as Q}from"../chunks/LangSelector.mSh8cV6Q.js";import{A as R}from"../chunks/AppVersion.DL5DXmu_.js";import{M as S,C as U}from"../chunks/ContentCenter.CsjyBf2d.js";import"../chunks/is_dev.svelte.sP_MjoCE.js";import{u as V}from"../chunks/i18n.svelte.BTGsPiz_.js";var W=k('<div class="btn svelte-1um1rdi"><!> <!> <!></div>'),X=k('<!> <!> <div class="version svelte-1um1rdi"><!></div>',1);function Y(L,j){A(j,!0);const o="9rem";let r=V(),u=K(!1);D(()=>{window.document.getElementsByName("rauthy-data")[0].id,G(u,!0)});function C(){window.location.href="/auth/v1/admin"}function E(){window.location.href="/auth/v1/account"}function M(){window.location.href="/auth/v1/users/register"}O(f=>{H.title="Rauthy"}),S(L,{children:(f,T)=>{var h=X(),$=I(h);U($,{children:(_,Z)=>{var e=W(),g=y(e);{var q=a=>{v(a,{width:o,$$events:{click:M},children:(n,t)=>{m();var b=d();l(()=>c(b,r.index.register)),s(n,b)},$$slots:{default:!0}})};P(g,a=>{J(u)&&a(q)})}var x=i(g,2);v(x,{width:o,$$events:{click:E},children:(a,n)=>{m();var t=d();l(()=>c(t,r.index.accountLogin)),s(a,t)},$$slots:{default:!0}});var z=i(x,2);v(z,{width:o,$$events:{click:C},children:(a,n)=>{m();var t=d();l(()=>c(t,r.index.adminLogin)),s(a,t)},$$slots:{default:!0}}),B(e),s(_,e)},$$slots:{default:!0}});var p=i($,2);Q(p,{absolute:!0});var w=i(p,2),N=y(w);R(N,{}),B(w),s(f,h)},$$slots:{default:!0}}),F()}export{Y as component};
diff --git a/static/v1/_app/immutable/nodes/2.DWHAwZAi.js.br b/static/v1/_app/immutable/nodes/2.DWHAwZAi.js.br
new file mode 100644
index 000000000..369f6a6b3
Binary files /dev/null and b/static/v1/_app/immutable/nodes/2.DWHAwZAi.js.br differ
diff --git a/static/v1/_app/immutable/nodes/2.DWHAwZAi.js.gz b/static/v1/_app/immutable/nodes/2.DWHAwZAi.js.gz
new file mode 100644
index 000000000..762f43fef
Binary files /dev/null and b/static/v1/_app/immutable/nodes/2.DWHAwZAi.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/20.0qOBqwlU.js b/static/v1/_app/immutable/nodes/20.0qOBqwlU.js
new file mode 100644
index 000000000..0b67872d3
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/20.0qOBqwlU.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{E as r}from"../chunks/Error.CsY9Wg-p.js";function t(o){r(o,{})}export{t as component};
diff --git a/static/v1/_app/immutable/nodes/20.0qOBqwlU.js.br b/static/v1/_app/immutable/nodes/20.0qOBqwlU.js.br
new file mode 100644
index 000000000..4ff169b7b
Binary files /dev/null and b/static/v1/_app/immutable/nodes/20.0qOBqwlU.js.br differ
diff --git a/static/v1/_app/immutable/nodes/20.0qOBqwlU.js.gz b/static/v1/_app/immutable/nodes/20.0qOBqwlU.js.gz
new file mode 100644
index 000000000..a15946c4a
Binary files /dev/null and b/static/v1/_app/immutable/nodes/20.0qOBqwlU.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/21.0qOBqwlU.js b/static/v1/_app/immutable/nodes/21.0qOBqwlU.js
new file mode 100644
index 000000000..0b67872d3
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/21.0qOBqwlU.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{E as r}from"../chunks/Error.CsY9Wg-p.js";function t(o){r(o,{})}export{t as component};
diff --git a/static/v1/_app/immutable/nodes/21.0qOBqwlU.js.br b/static/v1/_app/immutable/nodes/21.0qOBqwlU.js.br
new file mode 100644
index 000000000..4ff169b7b
Binary files /dev/null and b/static/v1/_app/immutable/nodes/21.0qOBqwlU.js.br differ
diff --git a/static/v1/_app/immutable/nodes/21.0qOBqwlU.js.gz b/static/v1/_app/immutable/nodes/21.0qOBqwlU.js.gz
new file mode 100644
index 000000000..a15946c4a
Binary files /dev/null and b/static/v1/_app/immutable/nodes/21.0qOBqwlU.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/22.0qOBqwlU.js b/static/v1/_app/immutable/nodes/22.0qOBqwlU.js
new file mode 100644
index 000000000..0b67872d3
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/22.0qOBqwlU.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{E as r}from"../chunks/Error.CsY9Wg-p.js";function t(o){r(o,{})}export{t as component};
diff --git a/static/v1/_app/immutable/nodes/22.0qOBqwlU.js.br b/static/v1/_app/immutable/nodes/22.0qOBqwlU.js.br
new file mode 100644
index 000000000..4ff169b7b
Binary files /dev/null and b/static/v1/_app/immutable/nodes/22.0qOBqwlU.js.br differ
diff --git a/static/v1/_app/immutable/nodes/22.0qOBqwlU.js.gz b/static/v1/_app/immutable/nodes/22.0qOBqwlU.js.gz
new file mode 100644
index 000000000..a15946c4a
Binary files /dev/null and b/static/v1/_app/immutable/nodes/22.0qOBqwlU.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/23.CKFyfpgm.js b/static/v1/_app/immutable/nodes/23.CKFyfpgm.js
new file mode 100644
index 000000000..c41a3c2d8
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/23.CKFyfpgm.js
@@ -0,0 +1,1 @@
+import{a as n,b as h,t as y}from"../chunks/disclose-version.DZhRUPAc.js";import{p as le,_ as p,o as ce,a0 as R,a as de,j as c,a1 as r,a3 as i,g as t,a5 as s,a4 as b,a2 as ve}from"../chunks/index-client.CGppiJvc.js";import{s as z}from"../chunks/render.D4MwAWTL.js";import{i as _}from"../chunks/if.DUA6Hpfn.js";import{p as m}from"../chunks/proxy.DB4Km9hY.js";import{g as ue}from"../chunks/helpers.DVmWh-6p.js";import{B as A}from"../chunks/Button.BH2_dPry.js";import{c as fe,a as K,I as Q}from"../chunks/Input.Bj_i2TLU.js";import{l as S,n as ge,m as pe}from"../chunks/dataFetching.Dto1xJW6.js";import{C as V}from"../chunks/CheckIcon.Cjxxxfsf.js";import{M as me,C as $e}from"../chunks/ContentCenter.CsjyBf2d.js";var he=h("<br>-> enable idp registration:<br> <code>chrome://flags/#fedcm-idp-registration</code>",1),be=h('<p><!></p> <p><!> <!> <!></p> <div class="row svelte-wuqbvo"><b>Logged In:</b> <div class="check svelte-wuqbvo"><!></div></div>',1),Ie=h('<div class="flex-col"><h1>FedCM Testing</h1> <div class="row svelte-wuqbvo"><div><b>FedCM supported:</b></div> <div class="check svelte-wuqbvo"><!></div></div> <!> <!></div>'),we=h('<div class="row svelte-wuqbvo"><b>Credential Type:</b> <span> </span></div> <div class="token svelte-wuqbvo"> </div>',1),Ce=h("<!> <!>",1);function ye(W,X){le(X,!0);let E=p(""),I=p(!1),U=p(!1),M=p(""),T=p(""),l=m({clientId:"fedcm",configUrl:"any"}),u=p(m({}));const Y=fe().shape({clientId:K().required("Client ID is required").trim().matches(S,"Must be URL safe"),configUrl:K().nullable().trim().matches(S,"Must be URL safe")});ce(async()=>{if(c(E,`${window.location.origin}/auth/v1/fed_cm/config`),l.clientId=`${window.location.origin}/auth/v1/fed_cm/client_config`,(await ge()).ok?(console.log("FedCM status is: logged-in"),c(U,!0)):console.log("FedCM status is: logged-out"),window.IdentityProvider&&IdentityProvider.register!=null)console.log("FedCM is supported"),c(I,!0);else{console.error("FedCM is not supported");return}});async function Z(){if(!await k())return;let a=l.configUrl||void 0,f=l.clientId;console.log("using credentials get values: configUrl: "+a+" / clientId: "+f);try{let o=await navigator.credentials.get({identity:{mode:"button",providers:[{configURL:a,clientId:f,nonce:ue(48)}]}});console.log(o),c(T,m(o.type)),c(M,m(o.token)),c(U,!0)}catch(o){console.error("FedCM credentials error: "+o)}}function H(){IdentityProvider.register(t(E))}async function k(){try{return await Y.validate(l,{abortEarly:!1}),c(u,m({})),!0}catch(a){return c(u,m(pe(a))),!1}}var x=Ce(),D=R(x);me(D,{children:(a,f)=>{$e(a,{children:(o,q)=>{var $=Ie(),g=r(i($),2),w=r(i(g),2),re=i(w);V(re,{get check(){return t(I)}}),s(w),s(g);var N=r(g,2);{var te=d=>{var C=he();b(4),n(d,C)};_(N,d=>{t(I)||d(te)})}var oe=r(N,2);{var ae=d=>{var C=be(),F=R(C),ie=i(F);A(ie,{level:3,$$events:{click:H},children:(e,P)=>{b();var v=y("Register IdP");n(e,v)},$$slots:{default:!0}}),s(F);var L=r(F,2),j=i(L);Q(j,{autocomplete:"off",placeholder:"Client Id",get value(){return l.clientId},set value(e){l.clientId=e},get error(){return t(u).clientId},set error(e){t(u).clientId=e},$$events:{input:k},children:(e,P)=>{b();var v=y("CLIENT ID");n(e,v)},$$slots:{default:!0}});var B=r(j,2);Q(B,{autocomplete:"off",placeholder:"Config URL",get value(){return l.configUrl},set value(e){l.configUrl=e},get error(){return t(u).configUrl},set error(e){t(u).configUrl=e},$$events:{input:k},children:(e,P)=>{b();var v=y("CONFIG URL");n(e,v)},$$slots:{default:!0}});var se=r(B,2);A(se,{$$events:{click:Z},children:(e,P)=>{b();var v=y("Login");n(e,v)},$$slots:{default:!0}}),s(L);var G=r(L,2),O=r(i(G),2),ne=i(O);V(ne,{get check(){return t(U)}}),s(O),s(G),n(d,C)};_(oe,d=>{t(I)&&d(ae)})}s($),n(o,$)},$$slots:{default:!0}})},$$slots:{default:!0}});var J=r(D,2);{var ee=a=>{var f=we(),o=R(f),q=r(i(o),2),$=i(q,!0);s(q),s(o);var g=r(o,2),w=i(g,!0);s(g),ve(()=>{z($,t(T)),z(w,t(M))}),n(a,f)};_(J,a=>{t(M)&&a(ee)})}n(W,x),de()}export{ye as component};
diff --git a/static/v1/_app/immutable/nodes/23.CKFyfpgm.js.br b/static/v1/_app/immutable/nodes/23.CKFyfpgm.js.br
new file mode 100644
index 000000000..667b61c3b
Binary files /dev/null and b/static/v1/_app/immutable/nodes/23.CKFyfpgm.js.br differ
diff --git a/static/v1/_app/immutable/nodes/23.CKFyfpgm.js.gz b/static/v1/_app/immutable/nodes/23.CKFyfpgm.js.gz
new file mode 100644
index 000000000..cb899639e
Binary files /dev/null and b/static/v1/_app/immutable/nodes/23.CKFyfpgm.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/24.D6gupSzm.js b/static/v1/_app/immutable/nodes/24.D6gupSzm.js
new file mode 100644
index 000000000..46c1bad72
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/24.D6gupSzm.js
@@ -0,0 +1,2 @@
+import{a as l,n as sa,b as g,t as re,c as Be}from"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{a2 as w,p as ia,o as oa,a8 as se,a9 as la,a as na,j as a,g as e,aa as T,$ as ca,a0 as ie,a1 as j,ab as o,a3 as p,a5 as u,a4 as oe,a6 as da,ac as Ce}from"../chunks/index-client.CGppiJvc.js";import{h as va,s as z,e as Ie}from"../chunks/render.D4MwAWTL.js";import{i as _}from"../chunks/if.DUA6Hpfn.js";import{e as ma}from"../chunks/OptionSelect.BCgZksOM.js";import{s as I,t as ua,a as fa}from"../chunks/Loading.FF_EHyHU.js";import{i as ha}from"../chunks/lifecycle.CRex4y9i.js";import{e as pa,g as ga,m as Le,I as wa,J as $a,_ as ja,P as _a,K as ya,M as ba,N as ka,O as xa}from"../chunks/dataFetching.Dto1xJW6.js";import{I as Ma,c as Na,a as Ta,y as za}from"../chunks/Input.Bj_i2TLU.js";import{B as ce}from"../chunks/Button.BH2_dPry.js";import{W as Ea}from"../chunks/WebauthnRequest.CHVZELhw.js";import{P as Ra}from"../chunks/PasswordInput.6uXzPAl-.js";import{L as qa}from"../chunks/LangSelector.mSh8cV6Q.js";import{p as _e}from"../chunks/props.Df_pGDSd.js";import{M as Ba,C as Ca}from"../chunks/ContentCenter.CsjyBf2d.js";import{u as Ia}from"../chunks/i18n.svelte.BTGsPiz_.js";var La=sa('<svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="m2.25 12 8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"></path></svg>');function Ua(de,W){let d=_e(W,"color",3,"var(--col-text)"),b=_e(W,"opacity",3,.9),D=_e(W,"width",3,24);var y=La();I(y,"stroke-width",2),w(()=>{I(y,"width",D()),I(y,"color",d()),I(y,"opacity",b())}),l(de,y)}var Aa=g('<img alt="No Logo Available">'),Fa=g('<a class="home svelte-1ljcjf3"><!></a>'),Oa=g('<div role="button" tabindex="0" class="forgotten svelte-1ljcjf3"> </div>'),Sa=g("<!> <!>",1),Pa=g('<div class="btn flex-col svelte-1ljcjf3"><!></div>'),Ha=g('<div class="btn flex-col svelte-1ljcjf3"><!></div>'),Ja=g("<!> <!> <!>",1),Wa=g('<div class="flex-inline svelte-1ljcjf3"><img alt="" width="20" height="20"> <span class="providerName svelte-1ljcjf3"> </span></div>'),Da=g('<div class="providers flex-col svelte-1ljcjf3"></div>'),Ka=g('<div class="errMsg errMsgApi svelte-1ljcjf3"> </div>'),Ga=g('<div class="success svelte-1ljcjf3"> </div>'),Qa=g('<a class="reg svelte-1ljcjf3" target="_blank"> </a>'),Va=g('<a class="reg svelte-1ljcjf3" href="/auth/v1/users/register" target="_blank"> </a>'),Xa=g('<div class="btn flex-col svelte-1ljcjf3"><!></div>'),Ya=g('<div class="container svelte-1ljcjf3"><div class="head svelte-1ljcjf3"><div class="logo svelte-1ljcjf3"><!></div> <!></div> <div class="name svelte-1ljcjf3"><h2> </h2></div> <!> <!> <!> <!> <!> <!> <!></div> <!>',1);function Za(de,W){ia(W,!1);let d=Ia(),b=o(),D=o(""),y=o(""),P=o(""),K=o(""),G=o([]),Q=o(),V=o(),X=o(),Y=o(),Z=o(""),ve=o(!1),H=o(),me=o([]),ee=o(),L=o(!1),k=o(""),U=o(!1),A=o(!1),le=o(!1),ne=o(!1),ae=o(!1),F=o(!1),ye="",be=o(!1),s=o({email:"",password:""}),x=o({}),ue=o({});oa(async()=>{const i=window.document.getElementsByName("rauthy-data")[0].id.split(`
+`);a(D,i[0]),a(y,i[1]),a(be,i[2]==="true");const n=window.document.getElementsByName("rauthy-action")[0].id;n==="Refresh"?a(ve,!0):n!=null&&n.startsWith("MfaLogin ")&&a(H,n.replace("MfaLogin ","")),a(Z,window.document.getElementsByName("rauthy-csrf-token")[0].id),pa(e(Z));const v=document.getElementsByTagName("template").namedItem("auth_providers").innerHTML;v&&a(me,JSON.parse(v));const c=ga();a(b,c.client_id),a(P,c.redirect_uri),a(K,c.nonce),a(G,c.scope.split(" ")),a(V,c.state),a(X,c.code_challenge),a(Y,c.code_challenge_method),c.login_hint&&T(s,e(s).email=c.login_hint)});function ke(){a(k,""),a(le,!0),T(s,e(s).password="")}async function fe(){a(k,"");try{await e(ue).validate(e(s),{abortEarly:!1}),a(x,{})}catch(v){a(x,Le(v));return}const i={email:e(s).email,client_id:e(b),redirect_uri:e(P),state:e(V),code_challenge:e(X),code_challenge_method:e(Y),nonce:e(K),scopes:e(G)};if(e(U)&&e(s).email!==e(H)){if(!e(s).password){T(x,e(x).password=d.passwordRequired);return}if(e(s).password.length>256){T(x,e(x).password="max 256");return}i.password=e(s).password}a(L,!0);let n=await wa(i,e(Z));await xe(n)}async function xe(i){if(i.status===202)window.location.replace(i.headers.get("location"));else if(i.status===200)a(k,""),a(ee,await i.json());else if(i.status===406)a(k,d.authorize.clientForceMfa),a(A,!0);else if(i.status===429){let n=Number.parseInt(i.headers.get("x-retry-not-before")),v=$a(n),c=n*1e3-new Date().getTime();a(F,!0),a(k,`${d.authorize.http429} ${v}`),T(s,e(s).email=""),T(s,e(s).password=""),a(U,!1),setTimeout(()=>{a(F,!1),a(k,"")},c)}else e(U)?(a(k,d.authorize.invalidCredentials),a(ne,!0)):(a(U,!0),ye=e(s).email);a(L,!1)}function Ue(){e(U)&&ye!==e(s).email&&(a(U,!1),T(s,e(s).password=""),a(k,""))}function Ae(i){ja(64,(n,{challenge:v,verifier:c})=>{n||(localStorage.setItem(_a,c),Fe(i,v))})}async function Fe(i,n){let v={email:e(s).email||null,client_id:e(b),redirect_uri:e(P),scopes:e(G),state:e(V),nonce:e(K),code_challenge:e(X),code_challenge_method:e(Y),provider_id:i,pkce_challenge:n},c=await ya(v);if(c.ok){const J=await c.text();ba(J),window.location.href=c.headers.get("location")}else{let J=await c.json();a(k,J.message)}}function Oe(){a(ee,void 0)}function Se(i){i&&window.location.replace(i.loc)}async function Pe(){try{await e(ue).validate(e(s),{abortEarly:!1}),a(x,{})}catch(v){a(x,Le(v));return}let i={email:e(s).email};e(y)&&(i.redirect_uri=encodeURI(e(y))),a(L,!0);let n=await xa(i);if(n.ok)a(ae,!0);else{let v=await n.json();a(k,v.message)}a(L,!1)}se(()=>za,()=>{d&&a(ue,Na().shape({email:Ta().required(d.authorize.emailRequired).email(d.authorize.emailBadFormat)}))}),se(()=>(e(ve),e(b),e(P),e(V),e(X),e(Y),e(K),e(G),e(Z)),()=>{var i,n;if(e(ve)&&((i=e(b))==null?void 0:i.length)>0&&((n=e(P))==null?void 0:n.length)>0){a(L,!0);const v={client_id:e(b),redirect_uri:e(P),state:e(V),code_challenge:e(X),code_challenge_method:e(Y),nonce:e(K),scopes:e(G)};da().then(()=>ka(v,e(Z)).then(c=>xe(c)))}}),se(()=>e(H),()=>{e(H)&&T(s,e(s).email=e(H))}),se(()=>e(ae),()=>{e(ae)&&setTimeout(()=>{a(ae,!1),a(le,!1),a(ne,!1)},3e3)}),se(()=>e(Q),()=>{e(Q)&&e(Q).focus()}),la(),ha(),va(i=>{w(()=>ca.title=`Login ${(e(D)||e(b))??""}`)}),Ba(de,{children:(i,n)=>{Ca(i,{children:(v,c)=>{var J=Ya(),he=ie(J),pe=p(he),ge=p(pe),He=p(ge);{var Je=t=>{var r=Aa();w(()=>I(r,"src",`/auth/v1/clients/${e(b)}/logo`)),l(t,r)};_(He,t=>{e(b)&&t(Je)})}u(ge);var We=j(ge,2);{var De=t=>{var r=Fa(),f=p(r);Ua(f,{opacity:.5}),u(r),w(()=>I(r,"href",e(y))),l(t,r)};_(We,t=>{e(y)&&t(De)})}u(pe);var we=j(pe,2),Me=p(we),Ke=p(Me,!0);u(Me),u(we);var Ne=j(we,2);{var Ge=t=>{Ea(t,{t:d,onSuccess:Se,onError:Oe,get data(){return e(ee)},set data(r){a(ee,r)},$$legacy:!0})};_(Ne,t=>{e(ee)&&t(Ge)})}var Te=j(Ne,2);{var Qe=t=>{var r=Ja(),f=ie(r),R=Ce(()=>e(F)||e(A));Ma(f,{type:"email",name:"rauthyEmail",autocomplete:"email",get placeholder(){return d.common.email},get disabled(){return e(R)},get value(){return e(s).email},set value(h){T(s,e(s).email=h)},get error(){return e(x).email},set error(h){T(x,e(x).email=h)},$$events:{enter:fe,input:Ue},children:(h,B)=>{oe();var S=re();w(()=>z(S,d.common.email.toUpperCase())),l(h,S)},$$slots:{default:!0},$$legacy:!0});var O=j(f,2);{var M=h=>{var B=Sa(),S=ie(B),$e=Ce(()=>e(F)||e(A));Ra(S,{name:"rauthyPassword",get error(){return e(x).password},autocomplete:"current-password",get placeholder(){return d.common.password},get disabled(){return e($e)},get bindThis(){return e(Q)},set bindThis(m){a(Q,m)},get value(){return e(s).password},set value(m){T(s,e(s).password=m)},$$events:{enter:fe},children:(m,N)=>{oe();var E=re();w(()=>z(E,d.common.password.toUpperCase())),l(m,E)},$$slots:{default:!0},$$legacy:!0});var je=j(S,2);{var C=m=>{var N=Oa(),E=p(N,!0);u(N),w(()=>z(E,d.authorize.passwordForgotten)),ua(7,N,()=>fa),Ie("click",N,ke),Ie("keypress",N,ke),l(m,N)};_(je,m=>{e(ne)&&!e(F)&&m(C)})}l(h,B)};_(O,h=>{e(U)&&e(H)!==e(s).email&&!e(le)&&h(M)})}var $=j(O,2);{var q=h=>{var B=Be(),S=ie(B);{var $e=C=>{var m=Pa(),N=p(m);ce(N,{$$events:{click:Pe},children:(E,ra)=>{oe();var te=re();w(()=>z(te,d.authorize.passwordRequest)),l(E,te)},$$slots:{default:!0}}),u(m),l(C,m)},je=C=>{var m=Ha(),N=p(m);ce(N,{get isLoading(){return e(L)},set isLoading(E){a(L,E)},$$events:{click:fe},children:(E,ra)=>{oe();var te=re();w(()=>z(te,d.authorize.login)),l(E,te)},$$slots:{default:!0},$$legacy:!0}),u(m),l(C,m)};_(S,C=>{e(le)?C($e):C(je,!1)})}l(h,B)};_($,h=>{!e(F)&&!e(A)&&h(q)})}l(t,r)};_(Te,t=>{e(A)||t(Qe)})}var ze=j(Te,2);{var Ve=t=>{var r=Da();ma(r,5,()=>e(me),f=>f.id,(f,R)=>{ce(f,{level:3,$$events:{click:()=>Ae(e(R).id)},children:(O,M)=>{var $=Wa(),q=p($),h=j(q,2),B=p(h,!0);u(h),u($),w(()=>{I(q,"src",`/auth/v1/providers/${e(R).id}/img`),z(B,e(R).name)}),l(O,$)},$$slots:{default:!0}})}),u(r),l(t,r)};_(ze,t=>{e(me)&&t(Ve)})}var Ee=j(ze,2);{var Xe=t=>{var r=Ka(),f=p(r,!0);u(r),w(()=>z(f,e(k))),l(t,r)};_(Ee,t=>{e(k)&&t(Xe)})}var Re=j(Ee,2);{var Ye=t=>{var r=Ga(),f=p(r,!0);u(r),w(()=>z(f,d.authorize.emailSentMsg)),l(t,r)};_(Re,t=>{e(ae)&&t(Ye)})}var qe=j(Re,2);{var Ze=t=>{var r=Be(),f=ie(r);{var R=M=>{var $=Qa(),q=p($,!0);u($),w(()=>{I($,"href",`/auth/v1/users/register?redirect_uri=${e(y)??""}`),z(q,d.authorize.signUp)}),l(M,$)},O=M=>{var $=Va(),q=p($,!0);u($),w(()=>z(q,d.authorize.signUp)),l(M,$)};_(f,M=>{e(y)?M(R):M(O,!1)})}l(t,r)};_(qe,t=>{e(be)&&!e(A)&&!e(ne)&&!e(F)&&t(Ze)})}var ea=j(qe,2);{var aa=t=>{var r=Xa(),f=p(r);ce(f,{$$events:{click:()=>window.location.href="/auth/v1/account"},children:(R,O)=>{oe();var M=re("ACCOUNT");l(R,M)},$$slots:{default:!0}}),u(r),l(t,r)};_(ea,t=>{e(A)&&t(aa)})}u(he);var ta=j(he,2);qa(ta,{absolute:!0}),w(()=>z(Ke,e(D)||e(b))),l(v,J)},$$slots:{default:!0}})},$$slots:{default:!0}}),na()}export{Za as component};
diff --git a/static/v1/_app/immutable/nodes/24.D6gupSzm.js.br b/static/v1/_app/immutable/nodes/24.D6gupSzm.js.br
new file mode 100644
index 000000000..53d36b7f9
Binary files /dev/null and b/static/v1/_app/immutable/nodes/24.D6gupSzm.js.br differ
diff --git a/static/v1/_app/immutable/nodes/24.D6gupSzm.js.gz b/static/v1/_app/immutable/nodes/24.D6gupSzm.js.gz
new file mode 100644
index 000000000..2ae29cd20
Binary files /dev/null and b/static/v1/_app/immutable/nodes/24.D6gupSzm.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/25.Dh7XjBbD.js b/static/v1/_app/immutable/nodes/25.Dh7XjBbD.js
new file mode 100644
index 000000000..7e17c001a
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/25.Dh7XjBbD.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{p as r,o as c,a as p,$ as d}from"../chunks/index-client.CGppiJvc.js";import{h as m}from"../chunks/render.D4MwAWTL.js";import{i as f}from"../chunks/lifecycle.CRex4y9i.js";import{L as _}from"../chunks/Loading.FF_EHyHU.js";import{g as h,C as w,a as l,b as u,s as k,c as g,d as v,e as L,f as R,R as b,h as j}from"../chunks/dataFetching.Dto1xJW6.js";function y(i,n){r(n,!1),c(async()=>{const a=h(),t=new URLSearchParams;let o=b;a.state&&(a.state==="account"?o=j:a.state.startsWith("device")&&(o=`/auth/v1/${a.state}`)),t.append("grant_type","authorization_code"),t.append("code",a.code),t.append("redirect_uri",o),t.append("client_id",w),t.append("code_verifier",l());let s=await u(t),e=await s.json();k(e.access_token),g(e.id_token),s=await v(e.access_token),e=await s.json(),L(e.csrf_token),R(),window.location.href=o}),f(),m(a=>{d.title="Login"}),_(i,{}),p()}export{y as component};
diff --git a/static/v1/_app/immutable/nodes/25.Dh7XjBbD.js.br b/static/v1/_app/immutable/nodes/25.Dh7XjBbD.js.br
new file mode 100644
index 000000000..0a93feca1
Binary files /dev/null and b/static/v1/_app/immutable/nodes/25.Dh7XjBbD.js.br differ
diff --git a/static/v1/_app/immutable/nodes/25.Dh7XjBbD.js.gz b/static/v1/_app/immutable/nodes/25.Dh7XjBbD.js.gz
new file mode 100644
index 000000000..c6615b7a4
Binary files /dev/null and b/static/v1/_app/immutable/nodes/25.Dh7XjBbD.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/26.BxPoozgR.js b/static/v1/_app/immutable/nodes/26.BxPoozgR.js
new file mode 100644
index 000000000..8a9b30fe4
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/26.BxPoozgR.js
@@ -0,0 +1,1 @@
+import{t as b,a as p,b as F}from"../chunks/disclose-version.DZhRUPAc.js";import{p as G,o as H,a as J,j as h,a2 as n,$ as K,a0 as O,a1 as e,g as P,_ as Q,a3 as l,a5 as c,a4 as j}from"../chunks/index-client.CGppiJvc.js";import{h as R,s as m}from"../chunks/render.D4MwAWTL.js";import{i as S}from"../chunks/if.DUA6Hpfn.js";import{p as T}from"../chunks/proxy.DB4Km9hY.js";import{g as U,e as V,o as z,q as W}from"../chunks/dataFetching.Dto1xJW6.js";import{B}from"../chunks/Button.BH2_dPry.js";import{u as X}from"../chunks/i18n.svelte.BTGsPiz_.js";import{M as Y,C as Z}from"../chunks/ContentCenter.CsjyBf2d.js";import{L as tt}from"../chunks/LangSelector.mSh8cV6Q.js";var at=F('<div class="container svelte-1r6sjfz"><h1> </h1> <p> </p> <div class="btn svelte-1r6sjfz"><!> <!></div> <!></div> <!>',1);function ot(E,N){G(N,!0);let a=X(),w="",i=Q(!1);H(async()=>{const t=U();w=t.post_logout_redirect_uri;const y=t.id_token_hint,u=t.state,k=window.document.getElementsByName("rauthy-csrf-token")[0].id;if(V(k),window.document.getElementsByName("rauthy-action")[0].id==="true"){h(i,!0);let r=await z({id_token_hint:y,post_logout_redirect_uri:w,state:u});await _(r)}});async function $(){window.location.href="/auth/v1"}async function q(){h(i,!0);let t=await z({});await _(t)}async function _(t){W(),t.ok&&t.headers.get("location")?window.location.replace(t.headers.get("location")):await $()}R(t=>{n(()=>K.title=(a==null?void 0:a.logout.logout)||"Logout")}),Y(E,{children:(t,y)=>{Z(t,{children:(u,k)=>{var r=at(),d=O(r),f=l(d),x=l(f,!0);c(f);var g=e(f,2),C=l(g,!0);c(g);var v=e(g,2),L=l(v);B(L,{level:2,get isLoading(){return P(i)},set isLoading(o){h(i,T(o))},$$events:{click:q},children:(o,D)=>{j();var s=b();n(()=>m(s,a.logout.logout)),p(o,s)},$$slots:{default:!0}});var I=e(L,2);B(I,{level:4,$$events:{click:$},children:(o,D)=>{j();var s=b();n(()=>m(s,a.common.cancel)),p(o,s)},$$slots:{default:!0}}),c(v);var M=e(v,2);S(M,o=>{}),c(d);var A=e(d,2);tt(A,{absolute:!0}),n(()=>{m(x,a.logout.logout),m(C,a.logout.confirmMsg)}),p(u,r)},$$slots:{default:!0}})},$$slots:{default:!0}}),J()}export{ot as component};
diff --git a/static/v1/_app/immutable/nodes/26.BxPoozgR.js.br b/static/v1/_app/immutable/nodes/26.BxPoozgR.js.br
new file mode 100644
index 000000000..875861061
Binary files /dev/null and b/static/v1/_app/immutable/nodes/26.BxPoozgR.js.br differ
diff --git a/static/v1/_app/immutable/nodes/26.BxPoozgR.js.gz b/static/v1/_app/immutable/nodes/26.BxPoozgR.js.gz
new file mode 100644
index 000000000..af06d017e
Binary files /dev/null and b/static/v1/_app/immutable/nodes/26.BxPoozgR.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/27.gkewKINJ.js b/static/v1/_app/immutable/nodes/27.gkewKINJ.js
new file mode 100644
index 000000000..7532e0123
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/27.gkewKINJ.js
@@ -0,0 +1,1 @@
+import{a as t,b as $,c as _,t as Q}from"../chunks/disclose-version.DZhRUPAc.js";import{p as O,o as z,a1 as A,a0 as m,a as B,j as o,g as c,_ as b,n as S,$ as U,a3 as F,a4 as Y,a5 as G,a2 as q}from"../chunks/index-client.CGppiJvc.js";import{h as D,s as I}from"../chunks/render.D4MwAWTL.js";import{i as k}from"../chunks/if.DUA6Hpfn.js";import{p}from"../chunks/proxy.DB4Km9hY.js";import{g as J,Q as K,S as V,T as X}from"../chunks/dataFetching.Dto1xJW6.js";import{W as Z}from"../chunks/WebauthnRequest.CHVZELhw.js";import{s as aa}from"../chunks/snippet.xhmr1ywJ.js";import{L as ea}from"../chunks/LangSelector.mSh8cV6Q.js";import{B as oa}from"../chunks/Button.BH2_dPry.js";import{u as sa}from"../chunks/i18n.svelte.BTGsPiz_.js";var ta=$("<div><h2>Cookies disabled</h2> <p>You need to enable Cookies.<br> Without them, a safe login cannot be executed.</p></div>"),ra=$("<noscript></noscript> <!>",1);function ia(j,g){O(g,!0);let x=b(!1),u=b(!1);z(()=>{o(u,p(navigator.cookieEnabled)),o(x,!0)});var s=ra(),n=A(m(s),2);{var y=h=>{var a=_(),C=m(a);{var e=i=>{var l=_(),R=m(l);aa(R,()=>g.children??S),t(i,l)},r=i=>{var l=ta();t(i,l)};k(C,i=>{c(u)?i(e):i(r,!1)})}t(h,a)};k(n,h=>{c(x)&&h(y)})}t(j,s),B()}var na=$('<div class="btn flex-col svelte-1dkpwyo"><!></div>'),ca=$('<div class="error svelte-1dkpwyo"> </div>'),la=$("<!> <!>",1);function va(j,g){O(g,!0);let x=sa(),u=b(!1),s=b(""),n=b(void 0);z(async()=>{const a=J();if(a.error){o(s,`${a.error}: ${a.error_description}`);return}let C={state:a.state,code:a.code,pkce_verifier:K(),xsrf_token:V()},e=await X(C);if(e.status===202)window.location.replace(e.headers.get("location"));else if(e.status===200)o(s,""),o(n,p(await e.json()));else if(e.status===204)window.location.replace("/auth/v1/account");else if(e.status===403){let r=await e.json();console.error(r),o(s,p(r.message))}else if(e.status===406)o(s,p(x.authorize.clientForceMfa)),o(u,!0);else{let r=await e.text();o(s,`HTTP ${e.status}: ${r}`)}});function y(a){o(s,p(a||"ERROR")),o(n,void 0)}function h(a){a&&window.location.replace(a.loc)}D(a=>{U.title="Callback"}),ia(j,{children:(a,C)=>{var e=la(),r=m(e);{var i=v=>{Z(v,{onSuccess:h,onError:y,get data(){return c(n)},set data(E){o(n,p(E))}})},l=v=>{var E=_(),H=m(E);{var M=d=>{var f=na(),W=F(f);oa(W,{$$events:{click:()=>window.location.href="/auth/v1/account"},children:(L,T)=>{Y();var w=Q("ACCOUNT LOGIN");t(L,w)},$$slots:{default:!0}}),G(f),t(d,f)},N=d=>{var f=_(),W=m(f);{var L=T=>{var w=ca(),P=F(w,!0);G(w),q(()=>I(P,c(s))),t(T,w)};k(W,T=>{c(s)&&T(L)},!0)}t(d,f)};k(H,d=>{c(u)?d(M):d(N,!1)},!0)}t(v,E)};k(r,v=>{c(n)?v(i):v(l,!1)})}var R=A(r,2);ea(R,{absolute:!0}),t(a,e)},$$slots:{default:!0}}),B()}export{va as component};
diff --git a/static/v1/_app/immutable/nodes/27.gkewKINJ.js.br b/static/v1/_app/immutable/nodes/27.gkewKINJ.js.br
new file mode 100644
index 000000000..3f68a5493
Binary files /dev/null and b/static/v1/_app/immutable/nodes/27.gkewKINJ.js.br differ
diff --git a/static/v1/_app/immutable/nodes/27.gkewKINJ.js.gz b/static/v1/_app/immutable/nodes/27.gkewKINJ.js.gz
new file mode 100644
index 000000000..4ddfc791b
Binary files /dev/null and b/static/v1/_app/immutable/nodes/27.gkewKINJ.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/28.DMZ7hk2F.js b/static/v1/_app/immutable/nodes/28.DMZ7hk2F.js
new file mode 100644
index 000000000..5fa69f1af
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/28.DMZ7hk2F.js
@@ -0,0 +1,1 @@
+import{t as C,a as v,b as U,c as re}from"../chunks/disclose-version.DZhRUPAc.js";import{p as te,_ as $,o as ie,a as se,j as i,a2 as d,$ as me,a0 as M,a1 as l,g as t,a6 as oe,a3 as N,a5 as y,a4 as _}from"../chunks/index-client.CGppiJvc.js";import{h as le,s as o}from"../chunks/render.D4MwAWTL.js";import{i as T}from"../chunks/if.DUA6Hpfn.js";import{p as n}from"../chunks/proxy.DB4Km9hY.js";import{r as ne}from"../chunks/legacy-client.CgqodnwN.js";import{I as A,c as ce,a as F}from"../chunks/Input.Bj_i2TLU.js";import{g as ve,m as de,u as ue,v as ge,w as fe}from"../chunks/dataFetching.Dto1xJW6.js";import{B as pe}from"../chunks/Button.BH2_dPry.js";import{L as $e}from"../chunks/LangSelector.mSh8cV6Q.js";import{f as Ne}from"../chunks/pow.r0U0E3f9.js";import{M as ye,C as he}from"../chunks/ContentCenter.CsjyBf2d.js";import"../chunks/is_dev.svelte.sP_MjoCE.js";import{u as we}from"../chunks/i18n.svelte.BTGsPiz_.js";var ke=U(" <br> <code> </code>",1),Ee=U('<div class="success svelte-1ks9oi1"> <br> </div>'),xe=U('<div class="err svelte-1ks9oi1"> </div>'),be=U('<div class="container svelte-1ks9oi1"><div class="domainTxt svelte-1ks9oi1"><h1> </h1> <!></div> <!> <!> <!> <!> <!></div> <!>',1);function Ce(P,S){te(S,!0);let a=we(),h=$(void 0),w,x=$(!1),g=$(""),q=$(!1),m=n({email:"",givenName:"",familyName:""}),u=$(n({})),G=$(n({}));ne(()=>{a&&i(G,n(ce().shape({email:F().required(a.common.required).email(a.register.emailBadFormat),givenName:F().required(a.common.required).matches(ge,a.register.regexName),familyName:F().matches(fe,a.register.regexName)})))}),ie(()=>{const c=window.document.getElementsByName("rauthy-data")[0].id;c!=="{{ data }}"&&i(h,n(c)),w=ve().redirect_uri});function B(c){c.detail.code==="Enter"&&Q()}async function Q(){i(q,!1),i(g,"");try{await t(G).validate(m,{abortEarly:!1}),i(u,n({}))}catch(k){i(u,n(de(k)));return}if(t(h)&&!m.email.endsWith(t(h))){i(g,n(a.register.domainErr));return}i(x,!0),await oe();let c=await Ne();const L={email:m.email,given_name:m.givenName,family_name:m.familyName.length>0?m.familyName:void 0,pow:c};w&&(L.redirect_uri=w);const b=await ue(L);if(b.ok)i(g,""),i(q,!0),w&&setTimeout(()=>{window.location.replace(w)},3e3);else{const k=await b.json();k.message.includes("UNIQUE constraint")?i(g,"E-Mail is already registered"):i(g,n(k.message))}i(x,!1)}le(c=>{d(()=>me.title=(a==null?void 0:a.register)||"Register")}),ye(P,{children:(c,L)=>{he(c,{children:(b,k)=>{var z=be(),R=M(z),j=N(R),I=N(j),W=N(I,!0);y(I);var X=l(I,2);{var J=e=>{var s=ke(),r=M(s,!0),f=l(r,2),p=l(f),E=N(p);y(p),d(()=>{o(r,a.register.domainRestricted),o(f,` ${a.register.domainAllowed??""} `),o(E,`@${t(h)??""}`)}),v(e,s)};T(X,e=>{t(h)&&e(J)})}y(j);var D=l(j,2);A(D,{type:"email",autocomplete:"email",get placeholder(){return a.common.email},get value(){return m.email},set value(e){m.email=e},get error(){return t(u).email},set error(e){t(u).email=e},$$events:{keypress:B},children:(e,s)=>{_();var r=C();d(()=>o(r,a.common.email.toUpperCase())),v(e,r)},$$slots:{default:!0}});var H=l(D,2);A(H,{autocomplete:"given-name",get placeholder(){return a.account.givenName},get value(){return m.givenName},set value(e){m.givenName=e},get error(){return t(u).givenName},set error(e){t(u).givenName=e},$$events:{keypress:B},children:(e,s)=>{_();var r=C();d(()=>o(r,a.account.givenName.toUpperCase())),v(e,r)},$$slots:{default:!0}});var K=l(H,2);A(K,{autocomplete:"family-name",get placeholder(){return a.account.familyName},get value(){return m.familyName},set value(e){m.familyName=e},get error(){return t(u).familyName},set error(e){t(u).familyName=e},$$events:{keypress:B},children:(e,s)=>{_();var r=C();d(()=>o(r,a.account.familyName.toUpperCase())),v(e,r)},$$slots:{default:!0}});var O=l(K,2);pe(O,{get isLoading(){return t(x)},set isLoading(e){i(x,n(e))},$$events:{click:Q},children:(e,s)=>{_();var r=C();d(()=>o(r,a.register.register)),v(e,r)},$$slots:{default:!0}});var V=l(O,2);{var Y=e=>{var s=Ee(),r=N(s,!0),f=l(r,2);y(s),d(()=>{o(r,a.register.success),o(f,` ${a.register.emailCheck??""}`)}),v(e,s)},Z=e=>{var s=re(),r=M(s);{var f=p=>{var E=xe(),ae=N(E,!0);y(E),d(()=>o(ae,t(g))),v(p,E)};T(r,p=>{t(g)&&p(f)},!0)}v(e,s)};T(V,e=>{t(q)?e(Y):e(Z,!1)})}y(R);var ee=l(R,2);$e(ee,{absolute:!0}),d(()=>o(W,a.register.userReg)),v(b,z)},$$slots:{default:!0}})},$$slots:{default:!0}}),se()}export{Ce as component};
diff --git a/static/v1/_app/immutable/nodes/28.DMZ7hk2F.js.br b/static/v1/_app/immutable/nodes/28.DMZ7hk2F.js.br
new file mode 100644
index 000000000..b3b624091
Binary files /dev/null and b/static/v1/_app/immutable/nodes/28.DMZ7hk2F.js.br differ
diff --git a/static/v1/_app/immutable/nodes/28.DMZ7hk2F.js.gz b/static/v1/_app/immutable/nodes/28.DMZ7hk2F.js.gz
new file mode 100644
index 000000000..e914bc63f
Binary files /dev/null and b/static/v1/_app/immutable/nodes/28.DMZ7hk2F.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/29.Cll9oCQC.js b/static/v1/_app/immutable/nodes/29.Cll9oCQC.js
new file mode 100644
index 000000000..c02837097
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/29.Cll9oCQC.js
@@ -0,0 +1,1 @@
+import{t as F,a as x,b as G}from"../chunks/disclose-version.DZhRUPAc.js";import{p as H,o as I,a as J,j as y,a2 as v,$ as K,a0 as P,a1 as a,_ as B,a3 as s,a5 as t,a4 as Q,g as E}from"../chunks/index-client.CGppiJvc.js";import{h as R,s as e}from"../chunks/render.D4MwAWTL.js";import{p as M}from"../chunks/proxy.DB4Km9hY.js";import{L as S}from"../chunks/LangSelector.mSh8cV6Q.js";import{B as T}from"../chunks/Button.BH2_dPry.js";import{M as U,C as V}from"../chunks/ContentCenter.CsjyBf2d.js";import{u as W}from"../chunks/i18n.svelte.BTGsPiz_.js";var X=G('<div class="container svelte-1g19pwu"><h1> </h1> <p class="svelte-1g19pwu"> <br> <b> </b> <b> </b></p> <p class="svelte-1g19pwu"> </p> <div class="btn svelte-1g19pwu"><!></div></div> <!>',1);function Y(j,k){H(k,!0);let o=W(),g=B("old@mail.org"),d=B("new@mail.org");I(async()=>{const l=document.getElementsByName("rauthy-data")[0].id,i=[];l.split(",").forEach(r=>i.push(r)),y(g,M(i[0])),y(d,M(i[1]))}),R(l=>{v(()=>K.title=o.emailChange.title||"E-Mail Change Confirm")}),U(j,{children:(l,i)=>{V(l,{children:(r,O)=>{var u=X(),n=P(u),m=s(n),z=s(m,!0);t(m);var p=a(m,2),f=s(p),c=a(f,3),L=s(c,!0);t(c);var $=a(c),C=a($),N=s(C,!0);t(C),t(p);var h=a(p,2),_=s(h,!0);t(h);var b=a(h,2),q=s(b);T(q,{$$events:{click:()=>window.location.replace("/auth/v1/account")},children:(D,Z)=>{Q();var w=F();v(()=>e(w,o.authorize.login)),x(D,w)},$$slots:{default:!0}}),t(b),t(n);var A=a(n,2);S(A,{absolute:!0}),v(()=>{e(z,o.emailChange.title),e(f,`${o.emailChange.textChanged??""}:`),e(L,E(g)),e($,` ${o.emailChange.to??""} `),e(N,E(d)),e(_,o.emailChange.textLogin)}),x(r,u)},$$slots:{default:!0}})},$$slots:{default:!0}}),J()}export{Y as component};
diff --git a/static/v1/_app/immutable/nodes/29.Cll9oCQC.js.br b/static/v1/_app/immutable/nodes/29.Cll9oCQC.js.br
new file mode 100644
index 000000000..3401e0aee
Binary files /dev/null and b/static/v1/_app/immutable/nodes/29.Cll9oCQC.js.br differ
diff --git a/static/v1/_app/immutable/nodes/29.Cll9oCQC.js.gz b/static/v1/_app/immutable/nodes/29.Cll9oCQC.js.gz
new file mode 100644
index 000000000..448f01e19
Binary files /dev/null and b/static/v1/_app/immutable/nodes/29.Cll9oCQC.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/3.BgldDfnM.js b/static/v1/_app/immutable/nodes/3.BgldDfnM.js
new file mode 100644
index 000000000..06686e6fc
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/3.BgldDfnM.js
@@ -0,0 +1,1 @@
+import{a as v,b as T,c as fe,t as H,n as bt}from"../chunks/disclose-version.DZhRUPAc.js";import{p as Me,g as e,a3 as t,a5 as a,a1 as o,j as i,a as Te,_ as q,h as je,a0 as ie,n as yt,o as Be,a2 as b,a4 as J,$ as $t}from"../chunks/index-client.CGppiJvc.js";import{d as ja,e as Da,s as l,r as kt,h as _t}from"../chunks/render.D4MwAWTL.js";import{i as C}from"../chunks/if.DUA6Hpfn.js";import{p as d}from"../chunks/proxy.DB4Km9hY.js";import{J as Ae,x as Z,a1 as ma,a2 as xt,_ as It,P as Nt,a3 as Pt,M as Ut,g as Ct,v as Ea,w as qt,a4 as jt,a5 as Dt,a6 as Et,a7 as Ma,y as Ta,a8 as za,m as He,a9 as Ka,t as La,aa as Mt,F as Je,G as Re,ab as Tt,B as Wa,U as zt,ac as Kt,ad as Lt,A as Wt,ae as Bt,O as Rt,af as Vt,ag as St,ah as At,k as Ot,ai as Ft,r as Ba,aj as Ht}from"../chunks/dataFetching.Dto1xJW6.js";import{L as Jt}from"../chunks/Loading.wZ55XKP1.js";import{c as Y,s as ze,t as We,f as Oe,h as Zt,b as Yt}from"../chunks/Loading.FF_EHyHU.js";import{h as Ra,T as Gt,a as Xt,S as Va,b as Qt,D as er,c as ar}from"../chunks/Devices.BuQD3GeY.js";import{p as me,s as tr,a as rr}from"../chunks/props.Df_pGDSd.js";import{c as sr,r as Fe}from"../chunks/legacy-client.CgqodnwN.js";import{e as Sa}from"../chunks/OptionSelect.BCgZksOM.js";import{a as nr,C as na}from"../chunks/CheckIcon.Cjxxxfsf.js";import{B as Pe}from"../chunks/Button.BH2_dPry.js";import{s as or}from"../chunks/snippet.xhmr1ywJ.js";import{b as ir}from"../chunks/this.B23tdsYu.js";import{u as Le}from"../chunks/i18n.svelte.BTGsPiz_.js";import{c as Ze,a as Ue,b as lr,I as Ke}from"../chunks/Input.Bj_i2TLU.js";import{t as vr}from"../chunks/tweened.CQQvc4Vq.js";import{L as Aa}from"../chunks/LangSelector.mSh8cV6Q.js";import{P as cr}from"../chunks/PasswordPolicy.D9rZurKD.js";import{P as ha}from"../chunks/PasswordInput.6uXzPAl-.js";import{W as dr}from"../chunks/WebauthnRequest.CHVZELhw.js";import{M as ur,C as pr}from"../chunks/ContentCenter.CsjyBf2d.js";function mr(R){return function(...p){var r=p[0];r.target===this&&(R==null||R.apply(this,p))}}var hr=R=>R.stopPropagation(),wr=(R,p)=>e(p).close(),fr=(R,p)=>e(p).close(),gr=T('<dialog role="none" class="svelte-l3vtl3"><div role="none" class="svelte-l3vtl3"><div role="button" tabindex="0" class="close svelte-l3vtl3"><!></div> <div class="inner svelte-l3vtl3"><!></div></div></dialog>');function br(R,p){Me(p,!0),sr();let r=me(p,"showModal",15),y=q(void 0);Fe(()=>{e(y)&&r()&&e(y).showModal()});var n=gr(),w=je(()=>mr(()=>e(y).close()));n.__click=function(...x){var W;(W=e(w))==null||W.apply(this,x)};var $=t(n);$.__click=[hr];var h=t($);h.__click=[wr,y],h.__keydown=[fr,y];var j=t(h);nr(j,{color:"var(--col-err)",width:24}),a(h);var z=o(h,2),I=t(z);{var _=x=>{var W=fe(),U=ie(W);or(U,()=>p.children??yt),v(x,W)};C(I,x=>{r()&&x(_)})}a(z),a($),a(n),ir(n,x=>i(y,x),()=>e(y)),Da("close",n,()=>r(!1)),v(R,n),Te()}ja(["click","keydown"]);var yr=T('<div class="link-err value svelte-bckoh9"> </div>'),$r=T('<div class="fed-btn svelte-bckoh9"><!> <!></div>'),kr=(R,p)=>i(p,!e(p)),_r=T('<div class="flex-inline svelte-bckoh9"><img alt="" width="20" height="20"> <span class="provider-name svelte-bckoh9"> </span></div>'),xr=T('<p> </p> <div class="providers svelte-bckoh9"></div>',1),Ir=T('<div role="button" tabindex="0" class="provider-link svelte-bckoh9"> </div> <!>',1),Nr=T('<div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div>'),Pr=T('<div><div><b>WebID:</b></div> <span class="value svelte-bckoh9"><a target="_blank"><!></a></span></div>'),Ur=T('<div class="container svelte-bckoh9"><div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div> <div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div> <div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div> <div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div> <div><div><b> </b></div> <div><div class="value svelte-bckoh9"> </div> <!></div></div> <div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div> <div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div> <div class="row svelte-bckoh9"><div><b> </b></div> <!></div> <div class="row svelte-bckoh9"><div><b> </b></div> <!></div> <div class="row svelte-bckoh9"><div><b> </b></div> <!></div> <div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div> <div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div> <div><div><b> </b></div> <span class="value svelte-bckoh9"> </span></div> <!> <!></div>');function Oa(R,p){Me(p,!0);let r=me(p,"user",31,()=>d({})),y=me(p,"viewModePhone",3,!1),n=Le(),w=q(!1),$=q(!1),h=q(d([])),j=je(()=>{var V;return(V=r().account_type)==null?void 0:V.startsWith("federated")}),z=je(()=>{var V;return e(j)?`${r().account_type}: ${((V=p.authProvider)==null?void 0:V.name)||""}`:r().account_type}),I=je(()=>y()?"rowPhone":"row"),_=je(()=>y()?"labelPhone":"label");Be(()=>{var te;let V=(te=document==null?void 0:document.getElementsByTagName("template").namedItem("auth_providers"))==null?void 0:te.innerHTML;V&&V!=="{{ auth_providers|safe }}"&&i(h,d(JSON.parse(V)))});function x(V){It(64,(te,{challenge:_e,verifier:xe})=>{te||(localStorage.setItem(Nt,xe),W(V,_e))})}async function W(V,te){let _e={email:r().email,client_id:"rauthy",redirect_uri:window.location.href,provider_id:V,pkce_challenge:te},xe=await Pt(V,_e);if(xe.ok){const Ne=await xe.text();Ut(Ne),window.location.href=xe.headers.get("location")}else{let Ne=await xe.json();console.error(Ne)}}async function U(){let V=await xt(),te=await V.json();V.ok?r(te):i(w,!0)}var S=Ur(),A=t(S),he=t(A),X=t(he),B=t(X);a(X),a(he);var K=o(he,2),re=t(K,!0);a(K),a(A);var ne=o(A,2),se=t(ne),le=t(se),we=t(le);a(le),a(se);var ve=o(se,2),ce=t(ve,!0);a(ve),a(ne);var pe=o(ne,2),D=t(pe),N=t(D),E=t(N);a(N),a(D);var g=o(D,2),k=t(g,!0);a(g),a(pe);var m=o(pe,2),c=t(m),P=t(c),s=t(P);a(P),a(c);var f=o(c,2),u=t(f,!0);a(f),a(m);var L=o(m,2),G=t(L),O=t(G),oe=t(O);a(O),a(G);var de=o(G,2),Ie=t(de),ge=t(Ie,!0);a(Ie);var be=o(Ie,2);{var ye=V=>{var te=$r(),_e=t(te);Pe(_e,{level:3,$$events:{click:U},children:(qe,Ee)=>{J();var Se=H();b(()=>l(Se,n.account.providerUnlink)),v(qe,Se)},$$slots:{default:!0}});var xe=o(_e,2);{var Ne=qe=>{var Ee=yr(),Se=t(Ee,!0);a(Ee),b(()=>l(Se,n.account.providerUnlinkDesc)),v(qe,Ee)};C(xe,qe=>{e(w)&&qe(Ne)})}a(te),v(V,te)},$e=V=>{var te=fe(),_e=ie(te);{var xe=Ne=>{var qe=Ir(),Ee=ie(qe);Ee.__click=[kr,$];var Se=t(Ee,!0);a(Ee);var ht=o(Ee,2);br(ht,{get showModal(){return e($)},set showModal(va){i($,d(va))},children:(va,ls)=>{var Pa=xr(),ca=ie(Pa),wt=t(ca,!0);a(ca);var Ua=o(ca,2);Sa(Ua,21,()=>e(h),da=>da.id,(da,ua)=>{Pe(da,{level:3,$$events:{click:()=>x(e(ua).id)},children:(ft,vs)=>{var pa=_r(),Ca=t(pa),qa=o(Ca,2),gt=t(qa,!0);a(qa),a(pa),b(()=>{ze(Ca,"src",`/auth/v1/providers/${e(ua).id}/img`),l(gt,e(ua).name)}),v(ft,pa)},$$slots:{default:!0}})}),a(Ua),b(()=>l(wt,n.account.providerLinkDesc)),v(va,Pa)},$$slots:{default:!0}}),b(()=>l(Se,n.account.providerLink)),Da("keypress",Ee,()=>i($,!e($))),v(Ne,qe)};C(_e,Ne=>{e(h).length>0&&Ne(xe)},!0)}v(V,te)};C(be,V=>{e(j)?V(ye):V($e,!1)})}a(de),a(L);var M=o(L,2),Q=t(M),ee=t(Q),ue=t(ee);a(ee),a(Q);var F=o(Q,2),ae=t(F,!0);a(F),a(M);var ke=o(M,2),Ce=t(ke),De=t(Ce),Ve=t(De);a(De),a(Ce);var wa=o(Ce,2),Xa=t(wa,!0);a(wa),a(ke);var oa=o(ke,2),Ye=t(oa),fa=t(Ye),Qa=t(fa);a(fa),a(Ye);var et=o(Ye,2),at=je(()=>!!r().webauthn_user_id);na(et,{get check(){return e(at)}}),a(oa);var ia=o(oa,2),Ge=t(ia),ga=t(Ge),tt=t(ga);a(ga),a(Ge);var rt=o(Ge,2);na(rt,{get check(){return r().enabled}}),a(ia);var la=o(ia,2),Xe=t(la),ba=t(Xe),st=t(ba);a(ba),a(Xe);var nt=o(Xe,2);na(nt,{get check(){return r().email_verified}}),a(la);var Qe=o(la,2),ea=t(Qe),ya=t(ea),ot=t(ya);a(ya),a(ea);var $a=o(ea,2),it=t($a,!0);b(()=>l(it,Ae(r().last_login))),a($a),a(Qe);var aa=o(Qe,2),ta=t(aa),ka=t(ta),lt=t(ka);a(ka),a(ta);var _a=o(ta,2),vt=t(_a,!0);b(()=>l(vt,r().password_expires&&Ae(r().password_expires)||n.common.never)),a(_a),a(aa);var ra=o(aa,2),sa=t(ra),xa=t(sa),ct=t(xa);a(xa),a(sa);var Ia=o(sa,2),dt=t(Ia,!0);b(()=>l(dt,Ae(r().created_at))),a(Ia),a(ra);var Na=o(ra,2);{var ut=V=>{var te=Nr(),_e=t(te),xe=t(_e),Ne=t(xe);a(xe),a(_e);var qe=o(_e,2),Ee=t(qe,!0);b(()=>l(Ee,Ae(r().user_expires))),a(qe),a(te),b(()=>{Z(te,Y(e(I)),"svelte-bckoh9"),Z(_e,Y(e(_)),"svelte-bckoh9"),l(Ne,`${n.account.userExpiry??""}:`)}),v(V,te)};C(Na,V=>{r().user_expires&&V(ut)})}var pt=o(Na,2);{var mt=V=>{var te=Pr(),_e=t(te),xe=o(_e,2),Ne=t(xe);b(()=>ze(Ne,"href",ma(r().id)));var qe=t(Ne);Ra(qe,()=>ma(r().id).replace("/auth/","/auth/<wbr/>")),a(Ne),a(xe),a(te),b(()=>{Z(te,Y(e(I)),"svelte-bckoh9"),Z(_e,Y(e(_)),"svelte-bckoh9")}),v(V,te)};C(pt,V=>{p.webIdData&&V(mt)})}a(S),b(()=>{Z(A,Y(e(I)),"svelte-bckoh9"),Z(he,Y(e(_)),"svelte-bckoh9"),l(B,`${n.common.email??""}:`),l(re,r().email),Z(ne,Y(e(I)),"svelte-bckoh9"),Z(se,Y(e(_)),"svelte-bckoh9"),l(we,`${n.account.givenName??""}:`),l(ce,r().given_name),Z(pe,Y(e(I)),"svelte-bckoh9"),Z(D,Y(e(_)),"svelte-bckoh9"),l(E,`${n.account.familyName??""}:`),l(k,r().family_name),Z(m,Y(e(I)),"svelte-bckoh9"),Z(c,Y(e(_)),"svelte-bckoh9"),l(s,`${n.account.user??""} ID:`),l(u,r().id),Z(L,Y(e(I)),"svelte-bckoh9"),Z(G,Y(e(_)),"svelte-bckoh9"),l(oe,`${n.account.accType??""}:`),l(ge,e(z)||""),Z(M,Y(e(I)),"svelte-bckoh9"),Z(Q,Y(e(_)),"svelte-bckoh9"),l(ue,`${n.account.roles??""}:`),l(ae,r().roles||"None"),Z(ke,Y(e(I)),"svelte-bckoh9"),Z(Ce,Y(e(_)),"svelte-bckoh9"),l(Ve,`${n.account.groups??""}:`),l(Xa,r().groups||"None"),Z(Ye,Y(e(_)),"svelte-bckoh9"),l(Qa,`${n.account.mfaActivated??""}:`),Z(Ge,Y(e(_)),"svelte-bckoh9"),l(tt,`${n.account.userEnabled??""}:`),Z(Xe,Y(e(_)),"svelte-bckoh9"),l(st,`${n.account.emailVerified??""}:`),Z(Qe,Y(e(I)),"svelte-bckoh9"),Z(ea,Y(e(_)),"svelte-bckoh9"),l(ot,`${n.account.lastLogin??""}:`),Z(aa,Y(e(I)),"svelte-bckoh9"),Z(ta,Y(e(_)),"svelte-bckoh9"),l(lt,`${n.account.passwordExpiry??""}:`),Z(ra,Y(e(I)),"svelte-bckoh9"),Z(sa,Y(e(_)),"svelte-bckoh9"),l(ct,`${n.account.userCreated??""}:`)}),v(R,S),Te()}ja(["click"]);function Fa(R,p){Me(p,!0);let r=me(p,"selected",15),y=me(p,"showWebId",3,!1),n=Le(),w=d(y()?[n.account.navInfo,n.account.navEdit,n.common.password,n.account.navMfa,"WebID",n.account.devices,n.account.navLogout]:[n.account.navInfo,n.account.navEdit,n.common.password,n.account.navMfa,n.account.devices,n.account.navLogout]);Be(()=>{Ct().v==="devices"&&r(n.account.devices)}),Gt(R,{get labels(){return w},get selected(){return r()},set selected($){r($)}}),Te()}var Cr=T("<p> </p>"),qr=T('<div class="success svelte-1xh7x72">Update successful <!></div>'),jr=T('<div class="err svelte-1xh7x72"> </div>'),Dr=T('<div class="wrapper svelte-1xh7x72"><div class="container svelte-1xh7x72"><!> <!> <!> <div> </div> <!> <!> <!> <!> <!> <!> <!> <div class="bottom svelte-1xh7x72"><!></div></div></div>');function Ha(R,p){Me(p,!0);let r=me(p,"user",31,()=>d({})),y=me(p,"viewModePhone",3,!1),n=Le(),w=je(()=>y()?"calc(100vw - 1.5rem)":"300px");const $="8rem";let h=q(!1),j=q(""),z=q(!1),I=q(!1),_=d({email:r().email,givenName:r().given_name,familyName:r().family_name}),x=q(d({}));const W=Ze().shape({email:Ue().required(n.account.validEmail).email(n.account.validEmail),givenName:Ue().required(n.account.validGivenName).matches(Ea,n.account.validGivenName),familyName:Ue().nullable().matches(qt,n.account.validFamilyName)});let U=q(d({}));const S=Ze().shape({birthdate:Ue().nullable().trim().matches(jt,n.common.invalidInput),phone:Ue().nullable().trim().matches(Dt,"+..."),street:Ue().nullable().trim().matches(Et,n.common.invalidInput),zip:lr().nullable().min(1e3).max(999999),city:Ue().nullable().trim().matches(Ma,n.common.invalidInput),country:Ue().nullable().trim().matches(Ma,n.common.invalidInput)});function A(s){s.code==="Enter"&&he()}async function he(){if(!await X()){i(j,d(n.common.invalidInput));return}i(h,!0);const s={email:_.email,given_name:_.givenName,family_name:_.familyName||null,user_values:r().user_values};s.user_values.phone&&(s.user_values.phone=s.user_values.phone.replaceAll(" ","")),s.user_values.zip&&(s.user_values.zip=Number.parseInt(s.user_values.zip));let f=await za(r().id,s);if(f.ok)i(z,!0),r(r().email=_.email,!0),r(r().given_name=_.givenName,!0),r(r().family_name=_.familyName,!0),f.status===202&&i(I,!0);else{let u=await f.json();i(j,d(u.message))}i(h,!1)}async function X(){let s=!0;try{await W.validate(_,{abortEarly:!1}),i(x,d({}))}catch(f){i(x,d(He(f))),s=!1}try{await S.validate(r().user_values,{abortEarly:!1}),i(U,d({}))}catch(f){i(U,d(He(f))),s=!1}return s}var B=Dr(),K=t(B),re=t(K);Ke(re,{autocomplete:"family-name",get placeholder(){return n.common.email},get width(){return e(w)},get value(){return _.email},set value(s){_.email=s},get error(){return e(x).email},set error(s){e(x).email=s},$$events:{input:X},children:(s,f)=>{J();var u=H();b(()=>l(u,n.common.email.toUpperCase())),v(s,u)},$$slots:{default:!0}});var ne=o(re,2);Ke(ne,{autocomplete:"given-name",get placeholder(){return n.account.givenName},get width(){return e(w)},get value(){return _.givenName},set value(s){_.givenName=s},get error(){return e(x).givenName},set error(s){e(x).givenName=s},$$events:{input:X},children:(s,f)=>{J();var u=H();b(()=>l(u,n.account.givenName.toUpperCase())),v(s,u)},$$slots:{default:!0}});var se=o(ne,2);Ke(se,{autocomplete:"family-name",get placeholder(){return n.account.familyName},get width(){return e(w)},get value(){return _.familyName},set value(s){_.familyName=s},get error(){return e(x).familyName},set error(s){e(x).familyName=s},$$events:{input:X},children:(s,f)=>{J();var u=H();b(()=>l(u,n.account.familyName.toUpperCase())),v(s,u)},$$slots:{default:!0}});var le=o(se,2);Ta(le,"margin",".5rem");var we=t(le,!0);a(le);var ve=o(le,2);Ke(ve,{autocomplete:"street-address",get placeholder(){return n.account.street},get width(){return e(w)},get value(){return r().user_values.street},set value(s){r(r().user_values.street=s,!0)},get error(){return e(U).street},set error(s){e(U).street=s},$$events:{keypress:A,input:X},children:(s,f)=>{J();var u=H();b(()=>l(u,n.account.street.toUpperCase())),v(s,u)},$$slots:{default:!0}});var ce=o(ve,2);Ke(ce,{type:"number",autocomplete:"postal-code",get placeholder(){return n.account.zip},min:1e3,max:999999,get width(){return e(w)},get value(){return r().user_values.zip},set value(s){r(r().user_values.zip=s,!0)},get error(){return e(U).zip},set error(s){e(U).zip=s},$$events:{keypress:A,input:X},children:(s,f)=>{J();var u=H();b(()=>l(u,n.account.zip.toUpperCase())),v(s,u)},$$slots:{default:!0}});var pe=o(ce,2);Ke(pe,{autocomplete:"adress-level2",get placeholder(){return n.account.city},get width(){return e(w)},get value(){return r().user_values.city},set value(s){r(r().user_values.city=s,!0)},get error(){return e(U).city},set error(s){e(U).city=s},$$events:{keypress:A,input:X},children:(s,f)=>{J();var u=H();b(()=>l(u,n.account.city.toUpperCase())),v(s,u)},$$slots:{default:!0}});var D=o(pe,2);Ke(D,{autocomplete:"country",get placeholder(){return n.account.country},get width(){return e(w)},get value(){return r().user_values.country},set value(s){r(r().user_values.country=s,!0)},get error(){return e(U).country},set error(s){e(U).country=s},$$events:{keypress:A,input:X},children:(s,f)=>{J();var u=H();b(()=>l(u,n.account.country.toUpperCase())),v(s,u)},$$slots:{default:!0}});var N=o(D,2);Ke(N,{autocomplete:"tel",get placeholder(){return n.account.phone},get width(){return e(w)},get value(){return r().user_values.phone},set value(s){r(r().user_values.phone=s,!0)},get error(){return e(U).phone},set error(s){e(U).phone=s},$$events:{keypress:A,input:X},children:(s,f)=>{J();var u=H();b(()=>l(u,n.account.phone.toUpperCase())),v(s,u)},$$slots:{default:!0}});var E=o(N,2);Ke(E,{type:"date",autocomplete:"bday",get placeholder(){return n.account.birthdate},get width(){return e(w)},get value(){return r().user_values.birthdate},set value(s){r(r().user_values.birthdate=s,!0)},get error(){return e(U).birthdate},set error(s){e(U).birthdate=s},$$events:{keypress:A,input:X},children:(s,f)=>{J();var u=H();b(()=>l(u,n.account.birthdate.toUpperCase())),v(s,u)},$$slots:{default:!0}});var g=o(E,2);Pe(g,{width:$,level:1,get isLoading(){return e(h)},set isLoading(s){i(h,d(s))},$$events:{click:he},children:(s,f)=>{J();var u=H();b(()=>l(u,n.common.save)),v(s,u)},$$slots:{default:!0}});var k=o(g,2),m=t(k);{var c=s=>{var f=qr(),u=o(t(f));{var L=G=>{var O=Cr(),oe=t(O,!0);a(O),b(()=>l(oe,n.account.emailUpdateConfirm)),v(G,O)};C(u,G=>{e(I)&&G(L)})}a(f),We(3,f,()=>Oe),v(s,f)},P=s=>{var f=fe(),u=ie(f);{var L=G=>{var O=jr(),oe=t(O,!0);a(O),b(()=>l(oe,e(j))),We(3,O,()=>Oe),v(G,O)};C(u,G=>{e(j)&&G(L)},!0)}v(s,f)};C(m,s=>{e(z)?s(c):s(P,!1)})}a(k),a(K),a(B),b(()=>l(we,n.account.optionalValues)),v(R,B),Te()}var Er=bt('<svg fill="none" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M7.864 4.243A7.5 7.5 0 0119.5 10.5c0 2.92-.556 5.709-1.568 8.268M5.742 6.364A7.465 7.465 0 004.5 10.5a7.464 7.464 0 01-1.15 3.993m1.989 3.559A11.209 11.209 0 008.25 10.5a3.75 3.75 0 117.5 0c0 .527-.021 1.049-.064 1.565M12 10.5a14.94 14.94 0 01-3.6 9.75m6.633-4.596a18.666 18.666 0 01-2.485 5.33"></path></svg>');function Mr(R,p){let r=me(p,"opacity",3,.9),y=me(p,"width",3,24),n=me(p,"color",3,"currentColor");var w=Er();ze(w,"stroke-width",2),b(()=>{ze(w,"stroke",n()),ze(w,"width",y()),ze(w,"opacity",r())}),v(R,w)}var Tr=T('<!> <div class="regBtns svelte-q7vfo0"><!> <!></div>',1),zr=T('<div class="regNewBtn svelte-q7vfo0"><!></div>'),Kr=T('<div class="keysHeader svelte-q7vfo0"> </div>'),Lr=T("<div><!></div>"),Wr=T('<div class="row svelte-q7vfo0"><div></div> <div class="deleteBtn svelte-q7vfo0"><!></div></div>'),Br=T('<div class="keyContainer svelte-q7vfo0"><div class="row svelte-q7vfo0"> <div class="nameUv svelte-q7vfo0"><b> </b> <!></div></div> <div class="row svelte-q7vfo0"> <span class="font-mono"> </span></div> <div class="row svelte-q7vfo0"> <span class="font-mono"> </span></div> <!></div>'),Rr=T('<div class="button svelte-q7vfo0"><!></div>'),Vr=T('<div class="container svelte-q7vfo0"><p class="svelte-q7vfo0"> <br><br> </p> <!> <!> <div class="keysContainer svelte-q7vfo0"></div> <!> <div class="svelte-q7vfo0"> </div></div>');function Ja(R,p){Me(p,!0);let r=me(p,"user",19,()=>({})),y=Le(),n=q(!1),w=q(""),$=q(!1),h=q(r().account_type==="password"),j=q(d([]));Fe(()=>{e(j).length>0&&r().account_type==="passkey"&&i(h,e(j).length>1)});let z=d({passkeyName:""}),I=q(d({}));const _=Ze().shape({passkeyName:Ue().required(y.common.invalidInput).matches(Ea,y.mfa.passkeyNameErr)});Be(()=>{W()});function x(){i(n,!1),i(w,"")}async function W(){let g=await Ka(p.sessionInfo.user_id),k=await g.json();g.ok?i(j,d(k)):console.error("error fetching passkeys: "+k.message)}async function U(){if(x(),!await he())return;const g=z.passkeyName;if(g.length<2){i(n,!0),i(w,d(y.mfa.passkeyNameErr));return}let k=await Mt(r().id,{passkey_name:g});if(k.status===200){let m=await k.json();m.publicKey.challenge=Je(m.publicKey.challenge),m.publicKey.user.id=Je(m.publicKey.user.id),m.publicKey.excludeCredentials=m.publicKey.excludeCredentials,m.publicKey.excludeCredentials&&(m.publicKey.excludeCredentials=m.publicKey.excludeCredentials.map(s=>(s.id=Je(s.id),s)));let c=await navigator.credentials.create(m),P={passkey_name:g,data:{id:c.id,rawId:Re(c.rawId),response:{attestationObject:Re(c.response.attestationObject),clientDataJSON:Re(c.response.clientDataJSON)},type:c.type}};k=await Tt(r().id,P),k.status===201?(i($,!1),z.passkeyName="",await W()):console.error(k)}else i(n,!0),i(w,d(y.mfa.errorReg))}async function S(){x();let g=await Wa(r().id,{purpose:"Test"});if(g.status===200){let k=await g.json(),m=k.rcr;m.publicKey.challenge=Je(m.publicKey.challenge);for(let s of m.publicKey.allowCredentials)s.id=Je(s.id);let c;try{c=await navigator.credentials.get(m)}catch{i(n,!0),i(w,d(y.mfa.invalidKeyUsed));return}let P={code:k.code,data:{id:c.id,rawId:Re(c.rawId),response:{authenticatorData:Re(c.response.authenticatorData),clientDataJSON:Re(c.response.clientDataJSON),signature:Re(c.response.signature)},type:c.type}};g=await zt(r().id,P),g.status===202?(i(w,d(y.mfa.testSuccess)),await W()):console.error(g)}else i(n,!0),i(w,d(y.mfa.testError))}async function A(g){let k=await Kt(r().id,g);if(k.status===200)await W();else{let m=await k.json();i(n,!0),i(w,d(m.message))}}async function he(){try{return await _.validate(z,{abortEarly:!1}),i(I,d({})),!0}catch(g){return i(I,d(He(g))),!1}}var X=Vr(),B=t(X),K=t(B),re=o(K,3);a(B);var ne=o(B,2);{var se=g=>{var k=Tr(),m=ie(k);Ke(m,{autocomplete:"off",get placeholder(){return y.mfa.passkeyName},autofocus:!0,get value(){return z.passkeyName},set value(f){z.passkeyName=f},get error(){return e(I).passkeyName},set error(f){e(I).passkeyName=f},$$events:{input:he,enter:U},children:(f,u)=>{J();var L=H();b(()=>l(L,y.mfa.passkeyName)),v(f,L)},$$slots:{default:!0}});var c=o(m,2),P=t(c);Pe(P,{level:1,$$events:{click:U},children:(f,u)=>{J();var L=H();b(()=>l(L,y.mfa.register)),v(f,L)},$$slots:{default:!0}});var s=o(P,2);Pe(s,{level:4,$$events:{click:()=>i($,!1)},children:(f,u)=>{J();var L=H();b(()=>l(L,y.common.cancel)),v(f,L)},$$slots:{default:!0}}),a(c),v(g,k)},le=g=>{var k=zr(),m=t(k);Pe(m,{level:3,$$events:{click:()=>i($,!0)},children:(c,P)=>{J();var s=H();b(()=>l(s,y.mfa.registerNew)),v(c,s)},$$slots:{default:!0}}),a(k),v(g,k)};C(ne,g=>{e($)?g(se):g(le,!1)})}var we=o(ne,2);{var ve=g=>{var k=Kr(),m=t(k,!0);a(k),b(()=>l(m,y.mfa.registerdKeys)),v(g,k)};C(we,g=>{e(j).length>0&&g(ve)})}var ce=o(we,2);Sa(ce,21,()=>e(j),g=>g.name,(g,k)=>{var m=Br(),c=t(m),P=t(c),s=o(P),f=t(s),u=t(f,!0);a(f);var L=o(f,2);{var G=ee=>{Xt(ee,{get text(){return y.account.userVerifiedTooltip},children:(ue,F)=>{var ae=Lr();Ta(ae,"margin-bottom","-.25rem");var ke=t(ae);Mr(ke,{width:18,color:"var(--col-acnt)"}),a(ae),v(ue,ae)},$$slots:{default:!0}})};C(L,ee=>{e(k).user_verified&&ee(G)})}a(s),a(c);var O=o(c,2),oe=t(O),de=o(oe),Ie=t(de,!0);b(()=>l(Ie,Ae(e(k).registered))),a(de),a(O);var ge=o(O,2),be=t(ge),ye=o(be),$e=t(ye,!0);b(()=>l($e,Ae(e(k).last_used))),a(ye),a(ge);var M=o(ge,2);{var Q=ee=>{var ue=Wr(),F=o(t(ue),2),ae=t(F);Pe(ae,{level:4,$$events:{click:()=>A(e(k).name)},children:(ke,Ce)=>{J();var De=H();b(()=>l(De,y.mfa.delete.toUpperCase())),v(ke,De)},$$slots:{default:!0}}),a(F),a(ue),v(ee,ue)};C(M,ee=>{e(h)&&ee(Q)})}a(m),b(()=>{l(P,`${`${y.mfa.passkeyName}: `??""} `),l(u,e(k).name),l(oe,`${`${y.mfa.registerd}: `??""} `),l(be,`${`${y.mfa.lastUsed}: `??""} `)}),v(g,m)}),a(ce);var pe=o(ce,2);{var D=g=>{var k=Rr(),m=t(k);Pe(m,{level:1,$$events:{click:S},children:(c,P)=>{J();var s=H();b(()=>l(s,y.mfa.test)),v(c,s)},$$slots:{default:!0}}),a(k),v(g,k)};C(pe,g=>{e(j).length>0&&g(D)})}var N=o(pe,2),E=t(N,!0);a(N),a(X),b(()=>{l(K,`${y.mfa.p1??""} `),l(re,` ${y.mfa.p2??""}`),La(N,"msg",!e(n)),La(N,"err",e(n)),l(E,e(w))}),v(R,X),Te()}var Sr=T('<div class="container svelte-dpnwj7"><!> <!> <!> <!> <!> <div class="err svelte-dpnwj7"> </div></div>');function Ar(R,p){Me(p,!0);let r=me(p,"formValues",31,()=>d({})),y=me(p,"btnWidth",3,"4rem"),n=me(p,"hideCurrentPassword",3,!1),w=me(p,"isValid",15),$=Le();w(U);let h=q(!1),j=q(""),z=q(void 0),I=q(d({})),_=je(()=>{var B;return((B=r().new)==null?void 0:B.length)>6&&r().new===r().verify});const x=Ze().shape({current:Ue().required($.account.passwordCurrReq),new:Ue().required($.account.passwordNewReq),verify:Ue().required($.account.passwordNoMatch)}),W=Ze().shape({new:Ue().required($.account.passwordNewReq),verify:Ue().required($.account.passwordNoMatch)});Be(async()=>{let B=await Lt(),K=await B.json();B.ok?i(z,d(K)):i(j,d(K.message))});async function U(){if(i(j,""),n())try{await W.validate(r(),{abortEarly:!1}),i(I,d({}))}catch(B){return i(I,d(He(B))),!1}else try{await x.validate(r(),{abortEarly:!1}),i(I,d({}))}catch(B){return i(I,d(He(B))),!1}return e(h)?r().new.length>256?(i(j,"max 256"),!1):r().new!==r().verify?(i(j,d($.account.passwordNoMatch)),!1):!0:(i(j,d($.account.passwordPolicyFollow)),!1)}function S(){const B=e(z).length_min>20?e(z).length_min:20;let K=Wt(B,e(z).include_lower_case,e(z).include_upper_case,e(z).include_digits,e(z).include_special);r(r().new=K,!0),r(r().verify=K,!0)}var A=fe(),he=ie(A);{var X=B=>{var K=Sr(),re=t(K);cr(re,{t:$,get policy(){return e(z)},get password(){return r().new},get accepted(){return e(h)},set accepted(D){i(h,d(D))}});var ne=o(re,2);{var se=D=>{ha(D,{get error(){return e(I).current},autocomplete:"current-password",get placeholder(){return $.account.passwordCurr},get width(){return p.inputWidth},get value(){return r().current},set value(N){r(r().current=N,!0)},$$events:{input:U},children:(N,E)=>{J();var g=H();b(()=>l(g,$.account.passwordCurr.toUpperCase())),v(N,g)},$$slots:{default:!0}})};C(ne,D=>{n()||D(se)})}var le=o(ne,2);ha(le,{get error(){return e(I).new},autocomplete:"new-password",get placeholder(){return $.account.passwordNew},get showCopy(){return e(_)},get width(){return p.inputWidth},get value(){return r().new},set value(D){r(r().new=D,!0)},$$events:{input:U},children:(D,N)=>{J();var E=H();b(()=>l(E,$.account.passwordNew.toUpperCase())),v(D,E)},$$slots:{default:!0}});var we=o(le,2);ha(we,{get error(){return e(I).verify},autocomplete:"new-password",get placeholder(){return $.account.passwordConfirm},get showCopy(){return e(_)},get width(){return p.inputWidth},get value(){return r().verify},set value(D){r(r().verify=D,!0)},$$events:{input:U},children:(D,N)=>{J();var E=H();b(()=>l(E,$.account.passwordConfirm.toUpperCase())),v(D,E)},$$slots:{default:!0}});var ve=o(we,2);Pe(ve,{level:2,get width(){return y()},$$events:{click:S},children:(D,N)=>{J();var E=H();b(()=>l(E,$.account.generateRandom)),v(D,E)},$$slots:{default:!0}});var ce=o(ve,2),pe=t(ce,!0);a(ce),a(K),b(()=>l(pe,e(j))),v(B,K)};C(he,B=>{e(z)&&B(X)})}return v(R,A),Te({isPwdValid:U})}var Or=T('<div class="m-05 svelte-od1aaa"><p class="svelte-od1aaa"> </p> <p class="svelte-od1aaa"><b> </b></p> <p class="svelte-od1aaa"> </p> <!></div>'),Fr=T('<p class="svelte-od1aaa"> </p> <p class="svelte-od1aaa"> </p> <p class="svelte-od1aaa"> </p> <!>',1),Hr=T("<div><!></div>"),Jr=T('<div class="convertPasskey svelte-od1aaa"><h3> </h3> <p class="svelte-od1aaa"> </p> <!></div>'),Zr=T('<div class="success svelte-od1aaa">Update successful</div>'),Yr=T('<div class="err svelte-od1aaa"> </div>'),Gr=T('<div><!> <div><!></div> <!></div> <!> <div class="bottom svelte-od1aaa"><!></div>',1),Xr=T('<div class="wrapper svelte-od1aaa"><div class="container svelte-od1aaa"><!> <!> <!> <!></div></div>');function Za(R,p){Me(p,!0);let r=me(p,"user",19,()=>({})),y=me(p,"viewModePhone",3,!1),n=Le(),w=je(()=>y()?"calc(100vw - 1.5rem)":"300px");const $="13rem";let h=r().account_type,j=q(d([])),z=q(void 0),I=q(!1),_=q(!1),x=q(""),W=q(!1),U=q(void 0),S=q(d({current:"",new:"",verify:""})),A=je(()=>e(j).filter(c=>c.user_verified).length>0);Be(()=>{he()});async function he(){let c=await Ka(r().id),P=await c.json();c.ok?i(j,d(P)):console.error("error fetching passkeys: "+P.message)}async function X(){let c=await Bt(r().id);if(c.ok)window.location.reload();else{let P=await c.json();console.error("error fetching passkeys: "+P.message)}}async function B(){e(j).length>0?await K():await re()}async function K(){if(!await e(z)()){i(x,d(n.common.invalidInput));return}const c=await Wa(r().id,{purpose:"PasswordNew"});i(U,d(await c.json()))}async function re(c){if(!await e(z)()){i(x,d(n.common.invalidInput));return}i(_,!0);let P={password_new:e(S).new};c?P.mfa_code=c:P.password_current=e(S).current;let s=await za(r().id,P);if(s.ok)i(W,!0),i(S,d({})),window.location.reload();else{let f=await s.json();i(x,d(f.message))}i(_,!1)}function ne(){i(U,void 0),i(x,d(n.mfa.errorReg))}function se(c){c&&(i(U,void 0),re(c.code))}async function le(){let c=await Rt({email:r().email});if(c.ok)i(W,!0);else{let P=await c.json();i(x,d(P.message))}}var we=Xr(),ve=t(we),ce=t(ve);{var pe=c=>{dr(c,{purpose:"PasswordNew",onSuccess:se,onError:ne,get data(){return e(U)},set data(P){i(U,d(P))}})};C(ce,c=>{e(U)&&c(pe)})}var D=o(ce,2);{var N=c=>{var P=Or(),s=t(P),f=t(s,!0);a(s);var u=o(s,2),L=t(u),G=t(L,!0);a(L),a(u);var O=o(u,2),oe=t(O,!0);a(O);var de=o(O,2);{var Ie=be=>{na(be,{check:!0})},ge=be=>{Pe(be,{width:$,level:3,$$events:{click:le},children:(ye,$e)=>{J();var M=H();b(()=>l(M,n.account.passwordReset)),v(ye,M)},$$slots:{default:!0}})};C(de,be=>{e(W)?be(Ie):be(ge,!1)})}a(P),b(()=>{l(f,n.account.federatedConvertPassword1),l(G,p.authProvider.name||"UNKNOWN"),l(oe,n.account.federatedConvertPassword2)}),v(c,P)};C(D,c=>{h==="federated"&&c(N)})}var E=o(D,2);{var g=c=>{var P=Fr(),s=ie(P),f=t(s,!0);a(s);var u=o(s,2),L=t(u,!0);a(u);var G=o(u,2),O=t(G,!0);a(G);var oe=o(G,2);Pe(oe,{width:$,level:3,$$events:{click:()=>i(I,!0)},children:(de,Ie)=>{J();var ge=H();b(()=>l(ge,n.account.convertAccount)),v(de,ge)},$$slots:{default:!0}}),b(()=>{l(f,n.account.accTypePasskeyText1),l(L,n.account.accTypePasskeyText2),l(O,n.account.accTypePasskeyText3)}),v(c,P)};C(E,c=>{(h==="passkey"||h==="federated_passkey")&&!e(I)&&c(g)})}var k=o(E,2);{var m=c=>{var P=Gr(),s=ie(P),f=t(s),u=je(()=>!(h==="password"&&e(j).length<1));Ar(f,{btnWidth:$,get inputWidth(){return e(w)},get hideCurrentPassword(){return e(u)},get formValues(){return e(S)},set formValues(M){i(S,d(M))},get isValid(){return e(z)},set isValid(M){i(z,d(M))}});var L=o(f,2),G=t(L);Pe(G,{width:$,level:1,get isLoading(){return e(_)},set isLoading(M){i(_,d(M))},$$events:{click:B},children:(M,Q)=>{J();var ee=H();b(()=>l(ee,n.common.save)),v(M,ee)},$$slots:{default:!0}}),a(L);var O=o(L,2);{var oe=M=>{var Q=Hr(),ee=t(Q);Pe(ee,{width:$,level:4,$$events:{click:()=>i(I,!1)},children:(ue,F)=>{J();var ae=H();b(()=>l(ae,n.common.cancel)),v(ue,ae)},$$slots:{default:!0}}),a(Q),v(M,Q)};C(O,M=>{e(I)&&!e(_)&&M(oe)})}a(s);var de=o(s,2);{var Ie=M=>{var Q=Jr(),ee=t(Q),ue=t(ee,!0);a(ee);var F=o(ee,2),ae=t(F,!0);a(F);var ke=o(F,2);Pe(ke,{width:$,level:3,$$events:{click:X},children:(Ce,De)=>{J();var Ve=H();b(()=>l(Ve,n.account.convertAccount)),v(Ce,Ve)},$$slots:{default:!0}}),a(Q),b(()=>{l(ue,n.account.convertAccount),l(ae,n.account.convertAccountP1)}),v(M,Q)};C(de,M=>{!e(I)&&e(A)&&M(Ie)})}var ge=o(de,2),be=t(ge);{var ye=M=>{var Q=Zr();We(3,Q,()=>Oe),v(M,Q)},$e=M=>{var Q=fe(),ee=ie(Q);{var ue=F=>{var ae=Yr(),ke=t(ae,!0);a(ae),b(()=>l(ke,e(x))),We(3,ae,()=>Oe),v(F,ae)};C(ee,F=>{e(x)&&F(ue)},!0)}v(M,Q)};C(be,M=>{e(W)?M(ye):M($e,!1)})}a(ge),We(1,s,()=>Zt,()=>({duration:350})),v(c,P)};C(k,c=>{(h==="password"||h==="federated_password"||e(I))&&c(m)})}a(ve),a(we),v(R,we),Te()}var Qr=T('<div><p class="svelte-naxx27"> </p>    <textarea class="font-mono text svelte-naxx27"></textarea></div>'),es=T('<div class="success svelte-naxx27">Update successful</div>'),as=T('<div class="err svelte-naxx27"> </div>'),ts=T('<div class="wrapper svelte-naxx27"><div class="container svelte-naxx27"><p class="svelte-naxx27"> </p> <p class="svelte-naxx27"><a target="_blank"><!></a></p> <div class="row svelte-naxx27"><div class="label svelte-naxx27">E-Mail</div> <!></div> <div class="row svelte-naxx27"><div class="label svelte-naxx27"> </div> <!></div> <!> <!> <div class="bottom svelte-naxx27"><!></div></div></div>');function Ya(R,p){Me(p,!0);let r=me(p,"webIdData",15),y=Le();const n="12rem";let w=q(""),$=q(!1),h=q(!!r().custom_triples),j=ma(r().user_id);Fe(()=>{e($)&&setTimeout(()=>{i($,!1)},3e3)});async function z(){i(w,"");let N=await Vt(r().user_id,r());if(N.ok)i($,!0);else{let E=await N.json();i(w,d(E.message))}}var I=ts(),_=t(I),x=t(_),W=t(x,!0);a(x);var U=o(x,2),S=t(U);ze(S,"href",j);var A=t(S);Ra(A,()=>j.replace("/auth/","/auth/<wbr/>")),a(S),a(U);var he=o(U,2),X=o(t(he),2);Va(X,{get selected(){return r().expose_email},set selected(N){r(r().expose_email=N,!0)}}),a(he);var B=o(he,2),K=t(B),re=t(K,!0);a(K);var ne=o(K,2);Va(ne,{get selected(){return e(h)},set selected(N){i(h,d(N))}}),a(B);var se=o(B,2);{var le=N=>{var E=Qr(),g=t(E),k=t(g,!0);a(g);var m=o(g,2);kt(m),ze(m,"rows",15),ze(m,"cols",40),a(E),b(()=>l(k,y.account.webIdDescData)),Qt(m,()=>r().custom_triples,c=>r(r().custom_triples=c,!0)),We(3,E,()=>Yt),v(N,E)};C(se,N=>{e(h)&&N(le)})}var we=o(se,2);Pe(we,{width:n,level:1,$$events:{click:z},children:(N,E)=>{J();var g=H();b(()=>l(g,y.common.save)),v(N,g)},$$slots:{default:!0}});var ve=o(we,2),ce=t(ve);{var pe=N=>{var E=es();We(3,E,()=>Oe),v(N,E)},D=N=>{var E=fe(),g=ie(E);{var k=m=>{var c=as(),P=t(c,!0);a(c),b(()=>l(P,e(w))),We(3,c,()=>Oe),v(m,c)};C(g,m=>{e(w)&&m(k)},!0)}v(N,E)};C(ce,N=>{e($)?N(pe):N(D,!1)})}a(ve),a(_),a(I),b(()=>{l(W,y.account.webIdDesc),l(re,y.account.webIdExpertMode)}),v(R,I),Te()}var rs=T('<div class="container svelte-1nrg3bb"><!></div>');function Ga(R,p){Me(p,!0);var r=rs(),y=t(r);er(y,{get userId(){return p.sessionInfo.user_id}}),a(r),v(R,r),Te()}var ss=T('<div class="wrapper svelte-47czfz"><!> <div class="headerPhone svelte-47czfz"><h3> </h3></div> <div class="container svelte-47czfz"><!> <div class="innerPhone svelte-47czfz"><div><!></div></div></div></div>'),ns=T('<div class="wrapper svelte-47czfz"><!> <div class="header svelte-47czfz"><h3> </h3></div> <div class="container svelte-47czfz"><!> <div class="inner svelte-47czfz"><div><!></div></div></div></div>');function os(R,p){Me(p,!0);const r=tr(),y=()=>rr(_,"$op",r);let n=me(p,"sessionInfo",7),w=me(p,"user",31,()=>d({})),$=me(p,"webIdData",15),h=Le(),j=q(void 0),z=q(void 0),I=q(void 0),_=vr(1,{duration:100}),x=q(d(h.account.navInfo)),W=q(d(h.account.navInfo));Be(async()=>{i(z,d(await St()))});function U(){_.set(0).then(()=>i(x,d(e(W)))).then(()=>_.set(1))}let S=je(()=>e(j)<500);Fe(()=>{e(W)&&U()}),Fe(()=>{e(W)===h.account.navLogout&&At()}),Fe(()=>{var K;e(z)&&((K=w().account_type)!=null&&K.startsWith("federated"))&&i(I,d(e(z).filter(re=>re.id===w().auth_provider_id)[0]))});var A=fe(),he=ie(A);{var X=K=>{var re=ss(),ne=t(re);Aa(ne,{absolute:!0,absoluteRight:!0,updateBackend:!0});var se=o(ne,2),le=t(se),we=t(le,!0);a(le),a(se);var ve=o(se,2),ce=t(ve);Fa(ce,{get selected(){return e(W)},set selected(k){i(W,d(k))}});var pe=o(ce,2),D=t(pe),N=t(D);{var E=k=>{Oa(k,{get webIdData(){return $()},viewModePhone:!0,get authProvider(){return e(I)},get user(){return w()},set user(m){w(m)}})},g=k=>{var m=fe(),c=ie(m);{var P=f=>{Ha(f,{viewModePhone:!0,get user(){return w()},set user(u){w(u)}})},s=f=>{var u=fe(),L=ie(u);{var G=oe=>{Za(oe,{get user(){return w()},get authProvider(){return e(I)},viewModePhone:!0})},O=oe=>{var de=fe(),Ie=ie(de);{var ge=ye=>{Ja(ye,{get sessionInfo(){return n()},get user(){return w()}})},be=ye=>{var $e=fe(),M=ie($e);{var Q=ue=>{Ya(ue,{get webIdData(){return $()},set webIdData(F){$(F)}})},ee=ue=>{var F=fe(),ae=ie(F);{var ke=Ce=>{Ga(Ce,{get sessionInfo(){return n()},set sessionInfo(De){n(De)}})};C(ae,Ce=>{e(x)===h.account.devices&&Ce(ke)},!0)}v(ue,F)};C(M,ue=>{e(x)==="WebID"?ue(Q):ue(ee,!1)},!0)}v(ye,$e)};C(Ie,ye=>{e(x)===h.account.navMfa?ye(ge):ye(be,!1)},!0)}v(oe,de)};C(L,oe=>{e(x)===h.common.password?oe(G):oe(O,!1)},!0)}v(f,u)};C(c,f=>{e(x)===h.account.navEdit?f(P):f(s,!1)},!0)}v(k,m)};C(N,k=>{e(x)===h.account.navInfo?k(E):k(g,!1)})}a(D),a(pe),a(ve),a(re),b(()=>{l(we,h.account.account),ze(D,"style",`opacity: ${y()??""}`)}),v(K,re)},B=K=>{var re=ns(),ne=t(re);Aa(ne,{absolute:!0,updateBackend:!0});var se=o(ne,2),le=t(se),we=t(le,!0);a(le),a(se);var ve=o(se,2),ce=t(ve),pe=je(()=>!!$());Fa(ce,{get showWebId(){return e(pe)},get selected(){return e(W)},set selected(m){i(W,d(m))}});var D=o(ce,2),N=t(D),E=t(N);{var g=m=>{Oa(m,{get webIdData(){return $()},get authProvider(){return e(I)},get user(){return w()},set user(c){w(c)}})},k=m=>{var c=fe(),P=ie(c);{var s=u=>{Ha(u,{get user(){return w()},set user(L){w(L)}})},f=u=>{var L=fe(),G=ie(L);{var O=de=>{Za(de,{get user(){return w()},get authProvider(){return e(I)}})},oe=de=>{var Ie=fe(),ge=ie(Ie);{var be=$e=>{Ja($e,{get sessionInfo(){return n()},get user(){return w()}})},ye=$e=>{var M=fe(),Q=ie(M);{var ee=F=>{Ya(F,{get webIdData(){return $()},set webIdData(ae){$(ae)}})},ue=F=>{var ae=fe(),ke=ie(ae);{var Ce=De=>{Ga(De,{get sessionInfo(){return n()},set sessionInfo(Ve){n(Ve)}})};C(ke,De=>{e(x)===h.account.devices&&De(Ce)},!0)}v(F,ae)};C(Q,F=>{e(x)==="WebID"?F(ee):F(ue,!1)},!0)}v($e,M)};C(ge,$e=>{e(x)===h.account.navMfa?$e(be):$e(ye,!1)},!0)}v(de,Ie)};C(G,de=>{e(x)===h.common.password?de(O):de(oe,!1)},!0)}v(u,L)};C(P,u=>{e(x)===h.account.navEdit?u(s):u(f,!1)},!0)}v(m,c)};C(E,m=>{e(x)===h.account.navInfo?m(g):m(k,!1)})}a(N),a(D),a(ve),a(re),b(()=>{l(we,h.account.account),ze(N,"style",`opacity: ${y()??""}`)}),v(K,re)};C(he,K=>{e(S)?K(X):K(B,!1)})}ar("innerWidth",K=>i(j,d(K))),v(R,A),Te()}function is(R,p){Me(p,!0);let r=Le(),y=q(void 0),n=q(void 0),w=q(void 0),$=q(!1);Be(async()=>{let h=await Ot();h.ok?(i(y,d(await h.json())),h=await Ft(e(y).user_id),h.ok?i(n,d(await h.json())):Ba("account"),h=await Ht(e(y).user_id),h.ok?i(w,d(await h.json())):h.status===404&&i(w,d({user_id:e(y).user_id,is_open:!1})),i($,!0)):Ba("account")}),_t(h=>{b(()=>{var j;return $t.title=`${((r==null?void 0:r.account.account)||"Account")??""} ${((j=e(n))==null?void 0:j.email)??""}`})}),ur(R,{children:(h,j)=>{pr(h,{children:(z,I)=>{var _=fe(),x=ie(_);{var W=S=>{Jt(S,{})},U=S=>{os(S,{get sessionInfo(){return e(y)},get user(){return e(n)},set user(A){i(n,d(A))},get webIdData(){return e(w)},set webIdData(A){i(w,d(A))}})};C(x,S=>{e($)?S(U,!1):S(W)})}v(z,_)},$$slots:{default:!0}})},$$slots:{default:!0}}),Te()}export{is as component};
diff --git a/static/v1/_app/immutable/nodes/3.BgldDfnM.js.br b/static/v1/_app/immutable/nodes/3.BgldDfnM.js.br
new file mode 100644
index 000000000..f9b4949c7
Binary files /dev/null and b/static/v1/_app/immutable/nodes/3.BgldDfnM.js.br differ
diff --git a/static/v1/_app/immutable/nodes/3.BgldDfnM.js.gz b/static/v1/_app/immutable/nodes/3.BgldDfnM.js.gz
new file mode 100644
index 000000000..60680046b
Binary files /dev/null and b/static/v1/_app/immutable/nodes/3.BgldDfnM.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/30.C8nt_tI6.js b/static/v1/_app/immutable/nodes/30.C8nt_tI6.js
new file mode 100644
index 000000000..1768b5021
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/30.C8nt_tI6.js
@@ -0,0 +1,2 @@
+import{a as p,b as U,c as ie,t as k}from"../chunks/disclose-version.DZhRUPAc.js";import{p as es,_ as g,o as ss,a0 as V,a as rs,j as s,a2 as m,$ as ge,g as e,a1 as d,a3 as _,a5 as R,a4 as C,h as as}from"../chunks/index-client.CGppiJvc.js";import{h as ts,s as w}from"../chunks/render.D4MwAWTL.js";import{i as y}from"../chunks/if.DUA6Hpfn.js";import{L as os,t as je,b as qe,s as Ae}from"../chunks/Loading.FF_EHyHU.js";import{y as is,v as ds,A as ns,m as Se,B as ps,D as ls,E as cs,F as he,G as $e,H as us}from"../chunks/dataFetching.Dto1xJW6.js";import{p as l}from"../chunks/proxy.DB4Km9hY.js";import{r as ue}from"../chunks/legacy-client.CgqodnwN.js";import{c as Ue,a as ye,I as ws}from"../chunks/Input.Bj_i2TLU.js";import{B}from"../chunks/Button.BH2_dPry.js";import{P as Oe}from"../chunks/PasswordPolicy.D9rZurKD.js";import{P as we}from"../chunks/PasswordInput.6uXzPAl-.js";import{W as Fe}from"../chunks/WebauthnRequest.CHVZELhw.js";import{L as vs}from"../chunks/LangSelector.mSh8cV6Q.js";import"../chunks/is_dev.svelte.sP_MjoCE.js";import{u as ms}from"../chunks/i18n.svelte.BTGsPiz_.js";var fs=U('<div class="success svelte-189rvns"> <br> </div>'),gs=U("<div><!> <!> <!> <!> <!> <!></div>"),hs=U('<div class="success svelte-189rvns"><p> </p> <p> </p> <!></div>'),$s=U("<div><!> <!> <!></div>"),ys=U('<!> <h1> </h1> <p> </p> <p> <a target="_blank" class="svelte-189rvns">FIDO Alliance</a></p> <div><!> <!></div> <!>',1),bs=U('<div class="success svelte-189rvns"> <br> <br> <a class="svelte-189rvns">Link</a></div>'),ks=U("<!> <h1>Password Reset</h1> <!> <!> <!> <!> <!> <!>",1),_s=U('<div class="err svelte-189rvns"> </div>'),Rs=U('<!> <div class="container svelte-189rvns"><!> <!></div> <!>',1);function Cs(Ve,Be){es(Be,!0);const O="150px",Q="320px";let r=ms(),de="",W=g(void 0),be=g(!0),ke=!1,N=g(!1),I=g(""),X="",Y=g(""),Z=g(""),ne="",ee=g(void 0),f=g(!1),se=g(!1),re=g(!1),j=g(void 0),n=g(l({passkeyName:"",password:"",passwordConfirm:""})),x=g(l({})),_e=g(void 0),Re=g(void 0);ss(async()=>{let a;a="10, 128, 1, 1, 1, 1, 3";const t=[];a.split(",").forEach(i=>t.push(i)),s(W,l({length_min:Number.parseInt(t[0]),length_max:Number.parseInt(t[1]),include_lower_case:Number.parseInt(t[2]),include_upper_case:Number.parseInt(t[3]),include_digits:Number.parseInt(t[4]),include_special:Number.parseInt(t[5]),not_recently_used:Number.parseInt(t[6])})),ke=t[7]=="true",de=window.document.getElementsByName("rauthy-csrf-token")[0].id,X=window.location.href.split("/users/")[1].split("/")[0],ne=window.location.href.split("/reset/")[1].split("?")[0],s(Y,"password_reset"),s(be,!0)});function Ce(){window.location.replace("/auth/v1/account")}function Ne(){const a=e(W).length_min>24?e(W).length_min:24;let t=ns(a,e(W).include_lower_case,e(W).include_upper_case,e(W).include_digits,e(W).include_special);e(n).password=t,e(n).passwordConfirm=t}async function Ie(){s(I,"");try{await e(_e).validate(e(n),{abortEarly:!1}),s(x,l({}))}catch(i){s(x,l(Se(i)));return}const a=e(n).passkeyName;if(a.length<2){s(I,l(r.mfa.passkeyNameErr));return}let t=await cs(X,{passkey_name:a,magic_link_id:ne},de);if(t.status===200){let i=await t.json();i.publicKey.authenticatorSelection.userVerification="required",i.publicKey.challenge=he(i.publicKey.challenge),i.publicKey.user.id=he(i.publicKey.user.id),i.publicKey.excludeCredentials=i.publicKey.excludeCredentials,i.publicKey.excludeCredentials&&(i.publicKey.excludeCredentials=i.publicKey.excludeCredentials.map(h=>(h.id=he(h.id),h)));let b=await navigator.credentials.create(i),D={passkey_name:a,data:{id:b.id,rawId:$e(b.rawId),response:{attestationObject:$e(b.response.attestationObject),clientDataJSON:$e(b.response.clientDataJSON)},type:b.type},magic_link_id:ne};t=await us(X,D,de),t.status===201?(s(n,l({passkeyName:"",password:"",passwordConfirm:""})),s(f,!0)):(pe(),console.error(t))}else{pe();let i=await t.json();console.error(i.error),console.error(i.message)}}async function Le(){try{await e(Re).validate(e(n),{abortEarly:!1}),s(x,l({}))}catch(a){s(x,l(Se(a)));return}if(e(se)){if(e(n).password.length>256){s(I,"max 256");return}if(e(n).password!==e(n).passwordConfirm){s(I,l(r.passwordReset.passwordNoMatch));return}else s(I,"");if(ke){let a=await ps(X,{purpose:"PasswordReset"}),t=await a.json();if(!a.ok){s(I,l(t.message)),s(N,!1);return}if(t.user_id!==X){s(I,"MFA user ID does not match - this should never happen"),s(N,!1);return}s(j,l(t))}else await De()}}async function De(a){s(N,!0);const t={password:e(n).password,magic_link_id:ne,mfa_code:a},i=await ls(X,t,de);if(i.ok)s(I,""),s(n,l({passkeyName:"",password:"",passwordConfirm:""})),s(ee,l(i.headers.get("Location"))),console.log("redirectUri: "+e(ee)),s(f,!0);else{const b=await i.json();s(I,l(b.message))}s(N,!1)}function pe(){s(j,void 0),s(I,l(r.mfa.errorReg))}function Ee(a){a&&(s(j,void 0),De(a.code))}ue(()=>{r&&(s(_e,l(Ue().shape({passkeyName:ye().required(r.common.required).matches(ds,r.mfa.passkeyNameErr)}))),s(Re,l(Ue().shape({password:ye().required(r.common.required),passwordConfirm:ye().required(r.common.required)}))))}),ue(()=>{e(Z)&&s(n,l({passkeyName:"",password:"",passwordConfirm:""}))}),ue(()=>{var a;((a=e(n).password)==null?void 0:a.length)>0&&e(n).password===e(n).passwordConfirm&&s(re,!0)}),ue(()=>{e(f)&&setTimeout(()=>{e(ee)?window.location.replace(e(ee)):Ce()},5e3)});var xe=Rs();ts(a=>{var t=ie(),i=V(t);{var b=h=>{var q=ie(),ae=V(q);{var F=K=>{m(()=>ge.title=r.passwordReset.newAccount)},G=K=>{var P=ie(),J=V(P);{var te=z=>{m(()=>ge.title=r.passwordReset.passwordReset)};y(J,z=>{e(Y)==="password_reset"&&z(te)},!0)}p(K,P)};y(ae,K=>{e(Y).startsWith("new_user")?K(F):K(G,!1)})}p(h,q)},D=h=>{ge.title="Password"};y(i,h=>{r?h(b):h(D,!1)})}p(a,t)});var Ke=V(xe);{var Ge=a=>{os(a,{})};y(Ke,a=>{e(be)||a(Ge)})}var ve=d(Ke,2),Pe=_(ve);{var Je=a=>{var t=ys(),i=V(t);{var b=o=>{Fe(o,{onSuccess:Ee,onError:pe,get data(){return e(j)},set data($){s(j,l($))}})};y(i,o=>{e(j)&&o(b)})}var D=d(i,2),h=_(D,!0);R(D);var q=d(D,2),ae=_(q,!0);R(q);var F=d(q,2),G=_(F,!0),K=d(G);R(F);var P=d(F,2);is(P,"margin-bottom","1rem");var J=_(P);B(J,{width:O,level:2,get isDisabled(){return e(f)},get isLoading(){return e(N)},set isLoading(o){s(N,l(o))},$$events:{click:()=>s(Z,"passkey")},children:(o,$)=>{C();var L=k();m(()=>w(L,r.passwordReset.passwordless)),p(o,L)},$$slots:{default:!0}});var te=d(J,2);B(te,{width:O,level:3,get isDisabled(){return e(f)},get isLoading(){return e(N)},set isLoading(o){s(N,l(o))},$$events:{click:()=>s(Z,"password")},children:(o,$)=>{C();var L=k();m(()=>w(L,r.passwordReset.password)),p(o,L)},$$slots:{default:!0}}),R(P);var z=d(P,2);{var u=o=>{var $=gs(),L=_($);Oe(L,{get policy(){return e(W)},get password(){return e(n).password},get accepted(){return e(se)},set accepted(v){s(se,l(v))}});var le=d(L,2);we(le,{get error(){return e(x).password},autocomplete:"new-password",get placeholder(){return r.passwordReset.password},width:Q,get showCopy(){return e(re)},get disabled(){return e(f)},get value(){return e(n).password},set value(v){e(n).password=v},children:(v,A)=>{C();var c=k();m(()=>w(c,r.passwordReset.password.toUpperCase())),p(v,c)},$$slots:{default:!0}});var H=d(le,2);we(H,{get error(){return e(x).passwordConfirm},autocomplete:"new-password",get placeholder(){return r.passwordReset.passwordConfirm},width:Q,get showCopy(){return e(re)},get disabled(){return e(f)},get value(){return e(n).passwordConfirm},set value(v){e(n).passwordConfirm=v},children:(v,A)=>{C();var c=k();m(()=>w(c,r.passwordReset.passwordConfirm.toUpperCase())),p(v,c)},$$slots:{default:!0}});var M=d(H,2);B(M,{width:O,level:3,get isDisabled(){return e(f)},$$events:{click:Ne},children:(v,A)=>{C();var c=k();m(()=>w(c,r.passwordReset.generate)),p(v,c)},$$slots:{default:!0}});var oe=d(M,2);B(oe,{width:O,level:2,get isDisabled(){return e(f)},get isLoading(){return e(N)},set isLoading(v){s(N,l(v))},$$events:{click:Le},children:(v,A)=>{C();var c=k();m(()=>w(c,r.common.save)),p(v,c)},$$slots:{default:!0}});var ce=d(oe,2);{var me=v=>{var A=fs(),c=_(A),T=d(c,2);R(A),m(()=>{w(c,`${r.passwordReset.success1??""} `),w(T,` ${r.passwordReset.success2??""}`)}),p(v,A)};y(ce,v=>{e(f)&&v(me)})}R($),je(3,$,()=>qe),p(o,$)},E=o=>{var $=ie(),L=V($);{var le=H=>{var M=$s(),oe=_(M);ws(oe,{autocomplete:"off",get placeholder(){return r.mfa.passkeyName},width:Q,get disabled(){return e(f)},get value(){return e(n).passkeyName},set value(c){e(n).passkeyName=c},get error(){return e(x).passkeyName},set error(c){e(x).passkeyName=c},$$events:{enter:Ie},children:(c,T)=>{C();var S=k();m(()=>w(S,r.mfa.passkeyName)),p(c,S)},$$slots:{default:!0}});var ce=d(oe,2),me=as(()=>e(f)?2:1);B(ce,{width:O,get level(){return e(me)},get isDisabled(){return e(f)},$$events:{click:Ie},children:(c,T)=>{C();var S=k();m(()=>w(S,r.mfa.register)),p(c,S)},$$slots:{default:!0}});var v=d(ce,2);{var A=c=>{var T=hs(),S=_(T),He=_(S,!0);R(S);var fe=d(S,2),Qe=_(fe,!0);R(fe);var Ye=d(fe,2);B(Ye,{width:O,level:1,$$events:{click:Ce},children:(Ze,Ns)=>{C();var We=k();m(()=>w(We,r.passwordReset.accountLogin)),p(Ze,We)},$$slots:{default:!0}}),R(T),m(()=>{w(He,r.passwordReset.successPasskey1),w(Qe,r.passwordReset.successPasskey2)}),p(c,T)};y(v,c=>{e(f)&&c(A)})}R(M),je(3,M,()=>qe),p(H,M)};y(L,H=>{e(Z)==="passkey"&&H(le)},!0)}p(o,$)};y(z,o=>{e(Z)==="password"?o(u):o(E,!1)})}m(()=>{w(h,r.passwordReset.newAccount),w(ae,r.passwordReset.newAccDesc1),w(G,r.passwordReset.newAccDesc2),Ae(K,"href",r.passwordReset.fidoLink)}),p(a,t)},Me=a=>{var t=ie(),i=V(t);{var b=D=>{var h=ks(),q=V(h);{var ae=u=>{Fe(u,{purpose:"PasswordReset",onSuccess:Ee,onError:pe,get data(){return e(j)},set data(E){s(j,l(E))}})};y(q,u=>{e(j)&&u(ae)})}var F=d(q,4);Oe(F,{get policy(){return e(W)},get password(){return e(n).password},get accepted(){return e(se)},set accepted(u){s(se,l(u))}});var G=d(F,2);we(G,{get error(){return e(x).password},autocomplete:"new-password",get placeholder(){return r.passwordReset.password},width:Q,get showCopy(){return e(re)},get value(){return e(n).password},set value(u){e(n).password=u},children:(u,E)=>{C();var o=k();m(()=>w(o,r.passwordReset.password.toUpperCase())),p(u,o)},$$slots:{default:!0}});var K=d(G,2);we(K,{get error(){return e(x).passwordConfirm},autocomplete:"new-password",get placeholder(){return r.passwordReset.passwordConfirm},width:Q,get showCopy(){return e(re)},get value(){return e(n).passwordConfirm},set value(u){e(n).passwordConfirm=u},children:(u,E)=>{C();var o=k();m(()=>w(o,r.passwordReset.passwordConfirm.toUpperCase())),p(u,o)},$$slots:{default:!0}});var P=d(K,2);B(P,{width:O,level:3,$$events:{click:Ne},children:(u,E)=>{C();var o=k();m(()=>w(o,r.passwordReset.generate)),p(u,o)},$$slots:{default:!0}});var J=d(P,2);B(J,{width:O,level:2,get isLoading(){return e(N)},set isLoading(u){s(N,l(u))},$$events:{click:Le},children:(u,E)=>{C();var o=k();m(()=>w(o,r.common.save)),p(u,o)},$$slots:{default:!0}});var te=d(J,2);{var z=u=>{var E=bs(),o=_(E),$=d(o,2),L=d($,3);R(E),m(()=>{w(o,`${r.passwordReset.success1??""}
+                ${r.passwordReset.success2??""} `),w($,` ${r.passwordReset.success3??""} `),Ae(L,"href",e(ee)||"/auth/v1/account")}),p(u,E)};y(te,u=>{e(f)&&u(z)})}p(D,h)};y(i,D=>{e(Y).startsWith("password_reset")&&D(b)},!0)}p(a,t)};y(Pe,a=>{e(Y).startsWith("new_user")?a(Je):a(Me,!1)})}var Te=d(Pe,2);{var Xe=a=>{var t=_s(),i=_(t,!0);R(t),m(()=>w(i,e(I))),p(a,t)};y(Te,a=>{e(I)&&a(Xe)})}R(ve);var ze=d(ve,2);vs(ze,{absolute:!0}),p(Ve,xe),rs()}export{Cs as component};
diff --git a/static/v1/_app/immutable/nodes/30.C8nt_tI6.js.br b/static/v1/_app/immutable/nodes/30.C8nt_tI6.js.br
new file mode 100644
index 000000000..becc5aa2c
Binary files /dev/null and b/static/v1/_app/immutable/nodes/30.C8nt_tI6.js.br differ
diff --git a/static/v1/_app/immutable/nodes/30.C8nt_tI6.js.gz b/static/v1/_app/immutable/nodes/30.C8nt_tI6.js.gz
new file mode 100644
index 000000000..41d4aea2c
Binary files /dev/null and b/static/v1/_app/immutable/nodes/30.C8nt_tI6.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/4.o4_Xudri.js b/static/v1/_app/immutable/nodes/4.o4_Xudri.js
new file mode 100644
index 000000000..d9bd8b5d3
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/4.o4_Xudri.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as t}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(o){t(o,{selected:"Users"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/4.o4_Xudri.js.br b/static/v1/_app/immutable/nodes/4.o4_Xudri.js.br
new file mode 100644
index 000000000..f9d87bdfb
Binary files /dev/null and b/static/v1/_app/immutable/nodes/4.o4_Xudri.js.br differ
diff --git a/static/v1/_app/immutable/nodes/4.o4_Xudri.js.gz b/static/v1/_app/immutable/nodes/4.o4_Xudri.js.gz
new file mode 100644
index 000000000..a451b9a02
Binary files /dev/null and b/static/v1/_app/immutable/nodes/4.o4_Xudri.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/5.F9D6MuWR.js b/static/v1/_app/immutable/nodes/5.F9D6MuWR.js
new file mode 100644
index 000000000..a23e93392
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/5.F9D6MuWR.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as t}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(o){t(o,{selected:"ApiKeys"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/5.F9D6MuWR.js.br b/static/v1/_app/immutable/nodes/5.F9D6MuWR.js.br
new file mode 100644
index 000000000..4a7340b63
Binary files /dev/null and b/static/v1/_app/immutable/nodes/5.F9D6MuWR.js.br differ
diff --git a/static/v1/_app/immutable/nodes/5.F9D6MuWR.js.gz b/static/v1/_app/immutable/nodes/5.F9D6MuWR.js.gz
new file mode 100644
index 000000000..27dda2ddc
Binary files /dev/null and b/static/v1/_app/immutable/nodes/5.F9D6MuWR.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/6.o4_Xudri.js b/static/v1/_app/immutable/nodes/6.o4_Xudri.js
new file mode 100644
index 000000000..d9bd8b5d3
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/6.o4_Xudri.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as t}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(o){t(o,{selected:"Users"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/6.o4_Xudri.js.br b/static/v1/_app/immutable/nodes/6.o4_Xudri.js.br
new file mode 100644
index 000000000..f9d87bdfb
Binary files /dev/null and b/static/v1/_app/immutable/nodes/6.o4_Xudri.js.br differ
diff --git a/static/v1/_app/immutable/nodes/6.o4_Xudri.js.gz b/static/v1/_app/immutable/nodes/6.o4_Xudri.js.gz
new file mode 100644
index 000000000..a451b9a02
Binary files /dev/null and b/static/v1/_app/immutable/nodes/6.o4_Xudri.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/7.BScIbGWF.js b/static/v1/_app/immutable/nodes/7.BScIbGWF.js
new file mode 100644
index 000000000..c3d49b66d
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/7.BScIbGWF.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as o}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(t){o(t,{selected:"Blacklist"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/7.BScIbGWF.js.br b/static/v1/_app/immutable/nodes/7.BScIbGWF.js.br
new file mode 100644
index 000000000..2b6f8a043
Binary files /dev/null and b/static/v1/_app/immutable/nodes/7.BScIbGWF.js.br differ
diff --git a/static/v1/_app/immutable/nodes/7.BScIbGWF.js.gz b/static/v1/_app/immutable/nodes/7.BScIbGWF.js.gz
new file mode 100644
index 000000000..ce131313c
Binary files /dev/null and b/static/v1/_app/immutable/nodes/7.BScIbGWF.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/8.DJkHqmWH.js b/static/v1/_app/immutable/nodes/8.DJkHqmWH.js
new file mode 100644
index 000000000..a7561c7fc
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/8.DJkHqmWH.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as t}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(o){t(o,{selected:"Clients"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/8.DJkHqmWH.js.br b/static/v1/_app/immutable/nodes/8.DJkHqmWH.js.br
new file mode 100644
index 000000000..0a83c4960
Binary files /dev/null and b/static/v1/_app/immutable/nodes/8.DJkHqmWH.js.br differ
diff --git a/static/v1/_app/immutable/nodes/8.DJkHqmWH.js.gz b/static/v1/_app/immutable/nodes/8.DJkHqmWH.js.gz
new file mode 100644
index 000000000..1b436dc05
Binary files /dev/null and b/static/v1/_app/immutable/nodes/8.DJkHqmWH.js.gz differ
diff --git a/static/v1/_app/immutable/nodes/9.5SYTyflJ.js b/static/v1/_app/immutable/nodes/9.5SYTyflJ.js
new file mode 100644
index 000000000..bb168b119
--- /dev/null
+++ b/static/v1/_app/immutable/nodes/9.5SYTyflJ.js
@@ -0,0 +1,1 @@
+import"../chunks/disclose-version.DZhRUPAc.js";import"../chunks/legacy.BuHyzquP.js";import{A as t}from"../chunks/AdminMainPre.BC7y4hZJ.js";function e(o){t(o,{selected:"Config"})}export{e as component};
diff --git a/static/v1/_app/immutable/nodes/9.5SYTyflJ.js.br b/static/v1/_app/immutable/nodes/9.5SYTyflJ.js.br
new file mode 100644
index 000000000..685cf0907
Binary files /dev/null and b/static/v1/_app/immutable/nodes/9.5SYTyflJ.js.br differ
diff --git a/static/v1/_app/immutable/nodes/9.5SYTyflJ.js.gz b/static/v1/_app/immutable/nodes/9.5SYTyflJ.js.gz
new file mode 100644
index 000000000..8ef036a57
Binary files /dev/null and b/static/v1/_app/immutable/nodes/9.5SYTyflJ.js.gz differ
diff --git a/static/v1/_app/version.json b/static/v1/_app/version.json
new file mode 100644
index 000000000..ef27f6a17
--- /dev/null
+++ b/static/v1/_app/version.json
@@ -0,0 +1,1 @@
+{"version":"1737373816864"}
\ No newline at end of file
diff --git a/static/v1/_app/version.json.br b/static/v1/_app/version.json.br
new file mode 100644
index 000000000..659ee235d
Binary files /dev/null and b/static/v1/_app/version.json.br differ
diff --git a/static/v1/_app/version.json.gz b/static/v1/_app/version.json.gz
new file mode 100644
index 000000000..21e5bd3dd
Binary files /dev/null and b/static/v1/_app/version.json.gz differ
diff --git a/static/v1/assets/favicon.svg b/static/v1/assets/favicon.svg
new file mode 100644
index 000000000..95213a5b9
--- /dev/null
+++ b/static/v1/assets/favicon.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 512 138" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
+    <g transform="matrix(1,0,0,1,0,-11)">
+        <g transform="matrix(1,0,0,1,0,-176)">
+            <g transform="matrix(0.920325,0,0,1.84151,45.9279,26.459)">
+                <rect x="27.741" y="151.57" width="200.517" height="10.148" style="fill:rgb(4,7,11);"/>
+            </g>
+            <g transform="matrix(1.93472,0,0,1.82732,8.35618,28.7533)">
+                <rect x="33.307" y="97.15" width="94.693" height="54.42" style="fill:rgb(4,7,11);stroke:rgb(4,7,11);stroke-width:1.06px;"/>
+            </g>
+            <g transform="matrix(1.82732,0,0,1.82732,-160.822,70.1806)">
+                <g transform="matrix(72,0,0,72,227.174,123.417)">
+                </g>
+                <text x="128.982px" y="123.417px" style="font-family:'Calibri-Bold', 'Calibri', sans-serif;font-weight:700;font-size:72px;fill:white;">r<tspan x="152.994px 188.537px " y="123.417px 123.417px ">au</tspan></text>
+            </g>
+            <g transform="matrix(1,0,0,1.01617,-1.42109e-14,-5.24492)">
+                <path d="M440.936,322.643L439.204,324.266L255.482,324.266L255.482,305.721L440.936,305.721L440.936,322.643Z" style="fill:url(#_Linear1);"/>
+            </g>
+            <g transform="matrix(0.920191,0,0,1.84121,46.2464,-91.3383)">
+                <rect x="27.741" y="151.57" width="200.517" height="10.148" style="fill:url(#_Linear2);"/>
+            </g>
+            <g transform="matrix(1.97598,0,0,1.84619,190.187,26.062)">
+                <rect x="33.307" y="97.15" width="94.693" height="54.42" style="fill:rgb(43,65,107);"/>
+            </g>
+            <path d="M439.204,187.734L440.557,189.007L440.557,206.279L256,206.279L256,187.734L439.204,187.734Z" style="fill:rgb(43,65,107);"/>
+            <g transform="matrix(1.82732,0,0,1.82732,-154.661,70.1806)">
+                <g transform="matrix(72,0,0,72,323.045,123.417)">
+                </g>
+                <text x="226.646px" y="123.417px" style="font-family:'Calibri-Bold', 'Calibri', sans-serif;font-weight:700;font-size:72px;fill:white;">th<tspan x="288.943px " y="123.417px ">y</tspan></text>
+            </g>
+            <g transform="matrix(2,0,0,2,0,0)">
+                <path d="M219.602,93.867L256,128L219.602,162.133L219.602,93.867Z" style="fill:rgb(43,65,107);"/>
+            </g>
+            <g transform="matrix(2,0,0,1.95739,0,3.99997)">
+                <path d="M36.398,93.867L0,93.867L35.908,128.524L0,163.619L36.398,163.619" style="fill:rgb(4,7,11);"/>
+            </g>
+        </g>
+    </g>
+    <defs>
+        <linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(185.454,0,0,18.5443,255.482,314.994)"><stop offset="0" style="stop-color:rgb(4,7,11);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(43,65,107);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(200.517,0,0,10.1483,27.7414,156.645)"><stop offset="0" style="stop-color:rgb(4,7,11);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(43,65,107);stop-opacity:1"/></linearGradient>
+    </defs>
+</svg>
diff --git a/static/v1/assets/favicon.svg.br b/static/v1/assets/favicon.svg.br
new file mode 100644
index 000000000..c10464133
Binary files /dev/null and b/static/v1/assets/favicon.svg.br differ
diff --git a/static/v1/assets/favicon.svg.gz b/static/v1/assets/favicon.svg.gz
new file mode 100644
index 000000000..f1c66435f
Binary files /dev/null and b/static/v1/assets/favicon.svg.gz differ
diff --git a/static/v1/assets/rauthy-logo.svg b/static/v1/assets/rauthy-logo.svg
new file mode 100644
index 000000000..95213a5b9
--- /dev/null
+++ b/static/v1/assets/rauthy-logo.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 512 138" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
+    <g transform="matrix(1,0,0,1,0,-11)">
+        <g transform="matrix(1,0,0,1,0,-176)">
+            <g transform="matrix(0.920325,0,0,1.84151,45.9279,26.459)">
+                <rect x="27.741" y="151.57" width="200.517" height="10.148" style="fill:rgb(4,7,11);"/>
+            </g>
+            <g transform="matrix(1.93472,0,0,1.82732,8.35618,28.7533)">
+                <rect x="33.307" y="97.15" width="94.693" height="54.42" style="fill:rgb(4,7,11);stroke:rgb(4,7,11);stroke-width:1.06px;"/>
+            </g>
+            <g transform="matrix(1.82732,0,0,1.82732,-160.822,70.1806)">
+                <g transform="matrix(72,0,0,72,227.174,123.417)">
+                </g>
+                <text x="128.982px" y="123.417px" style="font-family:'Calibri-Bold', 'Calibri', sans-serif;font-weight:700;font-size:72px;fill:white;">r<tspan x="152.994px 188.537px " y="123.417px 123.417px ">au</tspan></text>
+            </g>
+            <g transform="matrix(1,0,0,1.01617,-1.42109e-14,-5.24492)">
+                <path d="M440.936,322.643L439.204,324.266L255.482,324.266L255.482,305.721L440.936,305.721L440.936,322.643Z" style="fill:url(#_Linear1);"/>
+            </g>
+            <g transform="matrix(0.920191,0,0,1.84121,46.2464,-91.3383)">
+                <rect x="27.741" y="151.57" width="200.517" height="10.148" style="fill:url(#_Linear2);"/>
+            </g>
+            <g transform="matrix(1.97598,0,0,1.84619,190.187,26.062)">
+                <rect x="33.307" y="97.15" width="94.693" height="54.42" style="fill:rgb(43,65,107);"/>
+            </g>
+            <path d="M439.204,187.734L440.557,189.007L440.557,206.279L256,206.279L256,187.734L439.204,187.734Z" style="fill:rgb(43,65,107);"/>
+            <g transform="matrix(1.82732,0,0,1.82732,-154.661,70.1806)">
+                <g transform="matrix(72,0,0,72,323.045,123.417)">
+                </g>
+                <text x="226.646px" y="123.417px" style="font-family:'Calibri-Bold', 'Calibri', sans-serif;font-weight:700;font-size:72px;fill:white;">th<tspan x="288.943px " y="123.417px ">y</tspan></text>
+            </g>
+            <g transform="matrix(2,0,0,2,0,0)">
+                <path d="M219.602,93.867L256,128L219.602,162.133L219.602,93.867Z" style="fill:rgb(43,65,107);"/>
+            </g>
+            <g transform="matrix(2,0,0,1.95739,0,3.99997)">
+                <path d="M36.398,93.867L0,93.867L35.908,128.524L0,163.619L36.398,163.619" style="fill:rgb(4,7,11);"/>
+            </g>
+        </g>
+    </g>
+    <defs>
+        <linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(185.454,0,0,18.5443,255.482,314.994)"><stop offset="0" style="stop-color:rgb(4,7,11);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(43,65,107);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(200.517,0,0,10.1483,27.7414,156.645)"><stop offset="0" style="stop-color:rgb(4,7,11);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(43,65,107);stop-opacity:1"/></linearGradient>
+    </defs>
+</svg>
diff --git a/static/v1/assets/rauthy-logo.svg.br b/static/v1/assets/rauthy-logo.svg.br
new file mode 100644
index 000000000..c10464133
Binary files /dev/null and b/static/v1/assets/rauthy-logo.svg.br differ
diff --git a/static/v1/assets/rauthy-logo.svg.gz b/static/v1/assets/rauthy-logo.svg.gz
new file mode 100644
index 000000000..f1c66435f
Binary files /dev/null and b/static/v1/assets/rauthy-logo.svg.gz differ
diff --git a/templates/html/_app/env.js b/templates/html/_app/env.js
new file mode 100644
index 000000000..f5427da6b
--- /dev/null
+++ b/templates/html/_app/env.js
@@ -0,0 +1,1 @@
+export const env={}
\ No newline at end of file
diff --git a/templates/html/_app/env.js.br b/templates/html/_app/env.js.br
new file mode 100644
index 000000000..30f17bb08
--- /dev/null
+++ b/templates/html/_app/env.js.br
@@ -0,0 +1,1 @@
+	�export const env={}
\ No newline at end of file
diff --git a/templates/html/_app/env.js.gz b/templates/html/_app/env.js.gz
new file mode 100644
index 000000000..e9f837d74
Binary files /dev/null and b/templates/html/_app/env.js.gz differ
diff --git a/templates/html/account.html b/templates/html/account.html
new file mode 100644
index 000000000..89f7773f0
--- /dev/null
+++ b/templates/html/account.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="./assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-zq6QSf4cCBxyCTzGxytVdjc5AZlZbLad4eSqJtiq9aI='; style-src 'self' 'unsafe-inline'">
+		<link href="./_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/3.CF_aMXlW.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Loading.BVnr1IrI.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/WebauthnRequest._nhbHN0l.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="./_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="./_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/3.BgldDfnM.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Loading.wZ55XKP1.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/PasswordPolicy.D9rZurKD.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/WebauthnRequest.CHVZELhw.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/ContentCenter.CsjyBf2d.js"><!--[--><!--]--><title>User Account </title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><!--[--><div class="container svelte-10pff2x global background"><div class="inner svelte-10pff2x" style="margin-top: 0px"><!--[--><div class="circle svelte-10pff2x"></div><!--]--> <!--[!--><!--]--> <!--[!--><!--]--></div></div><!--]--><!----></div><!----></main><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL(".", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("./_app/immutable/entry/start.Bj78bRRv.js"),
+						import("./_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 3],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/account.html.br b/templates/html/account.html.br
new file mode 100644
index 000000000..de189e527
Binary files /dev/null and b/templates/html/account.html.br differ
diff --git a/templates/html/account.html.gz b/templates/html/account.html.gz
new file mode 100644
index 000000000..cac930176
Binary files /dev/null and b/templates/html/account.html.gz differ
diff --git a/templates/html/admin.html b/templates/html/admin.html
new file mode 100644
index 000000000..0fe352c66
--- /dev/null
+++ b/templates/html/admin.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="./assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-T9C/q+ajAXld0vKstGmRB53Y1OLevh559e0mQsUieSA='; style-src 'self' 'unsafe-inline'">
+		<link href="./_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="./_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="./_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/4.o4_Xudri.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL(".", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("./_app/immutable/entry/start.Bj78bRRv.js"),
+						import("./_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 4],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin.html.br b/templates/html/admin.html.br
new file mode 100644
index 000000000..cdf61cc8f
Binary files /dev/null and b/templates/html/admin.html.br differ
diff --git a/templates/html/admin.html.gz b/templates/html/admin.html.gz
new file mode 100644
index 000000000..32554740c
Binary files /dev/null and b/templates/html/admin.html.gz differ
diff --git a/templates/html/admin/api_keys.html b/templates/html/admin/api_keys.html
new file mode 100644
index 000000000..3d5b3d142
--- /dev/null
+++ b/templates/html/admin/api_keys.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-VI/7O6sOvvk7Oots76j2MNx+d5KtjX7ra1GeajmMjmA='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/5.F9D6MuWR.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 5],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/api_keys.html.br b/templates/html/admin/api_keys.html.br
new file mode 100644
index 000000000..a3ea6004c
Binary files /dev/null and b/templates/html/admin/api_keys.html.br differ
diff --git a/templates/html/admin/api_keys.html.gz b/templates/html/admin/api_keys.html.gz
new file mode 100644
index 000000000..ac183c75a
Binary files /dev/null and b/templates/html/admin/api_keys.html.gz differ
diff --git a/templates/html/admin/attributes.html b/templates/html/admin/attributes.html
new file mode 100644
index 000000000..88c428a2f
--- /dev/null
+++ b/templates/html/admin/attributes.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-LxjrKQzgDMx9iJzvdqtuFax0KZ+KBqHyCPiS+rE2S8E='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/6.o4_Xudri.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 6],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/attributes.html.br b/templates/html/admin/attributes.html.br
new file mode 100644
index 000000000..6e3fe2aab
Binary files /dev/null and b/templates/html/admin/attributes.html.br differ
diff --git a/templates/html/admin/attributes.html.gz b/templates/html/admin/attributes.html.gz
new file mode 100644
index 000000000..18895e7a6
Binary files /dev/null and b/templates/html/admin/attributes.html.gz differ
diff --git a/templates/html/admin/blacklist.html b/templates/html/admin/blacklist.html
new file mode 100644
index 000000000..3d332be64
--- /dev/null
+++ b/templates/html/admin/blacklist.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-XQR4dOuJrvbatGaBh/22b98KB+NpB6q8z9dO+qkQv48='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/7.BScIbGWF.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 7],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/blacklist.html.br b/templates/html/admin/blacklist.html.br
new file mode 100644
index 000000000..312929d47
Binary files /dev/null and b/templates/html/admin/blacklist.html.br differ
diff --git a/templates/html/admin/blacklist.html.gz b/templates/html/admin/blacklist.html.gz
new file mode 100644
index 000000000..166430f43
Binary files /dev/null and b/templates/html/admin/blacklist.html.gz differ
diff --git a/templates/html/admin/clients.html b/templates/html/admin/clients.html
new file mode 100644
index 000000000..f576c5260
--- /dev/null
+++ b/templates/html/admin/clients.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-hQ6T2yRPOJA/t534skOWlJtCmvxc181Ixg/PGfI+bTA='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/8.DJkHqmWH.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 8],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/clients.html.br b/templates/html/admin/clients.html.br
new file mode 100644
index 000000000..e47ecd9cb
Binary files /dev/null and b/templates/html/admin/clients.html.br differ
diff --git a/templates/html/admin/clients.html.gz b/templates/html/admin/clients.html.gz
new file mode 100644
index 000000000..73debd120
Binary files /dev/null and b/templates/html/admin/clients.html.gz differ
diff --git a/templates/html/admin/config.html b/templates/html/admin/config.html
new file mode 100644
index 000000000..86b3cf301
--- /dev/null
+++ b/templates/html/admin/config.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-xI2GSIXyB5APrgyzds4pGmJju3BVqWYeA9rSf7Ss3tM='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/9.5SYTyflJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 9],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/config.html.br b/templates/html/admin/config.html.br
new file mode 100644
index 000000000..6c25b16c7
Binary files /dev/null and b/templates/html/admin/config.html.br differ
diff --git a/templates/html/admin/config.html.gz b/templates/html/admin/config.html.gz
new file mode 100644
index 000000000..cc9eba2fa
Binary files /dev/null and b/templates/html/admin/config.html.gz differ
diff --git a/templates/html/admin/docs.html b/templates/html/admin/docs.html
new file mode 100644
index 000000000..74268e25f
--- /dev/null
+++ b/templates/html/admin/docs.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-R+hqPf3vRH/49F4NZZjjhTmvJnl91xc3z9F6ySGhyS8='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/10.mAHy2gv0.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 10],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/docs.html.br b/templates/html/admin/docs.html.br
new file mode 100644
index 000000000..7201e27ab
Binary files /dev/null and b/templates/html/admin/docs.html.br differ
diff --git a/templates/html/admin/docs.html.gz b/templates/html/admin/docs.html.gz
new file mode 100644
index 000000000..01717ca92
Binary files /dev/null and b/templates/html/admin/docs.html.gz differ
diff --git a/templates/html/admin/events.html b/templates/html/admin/events.html
new file mode 100644
index 000000000..67cf82558
--- /dev/null
+++ b/templates/html/admin/events.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-l1xZdR3olIPnMRFc67wzgI+Y1ah0Bre0prhkE1p2Oas='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/11.CbrcXpmW.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 11],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/events.html.br b/templates/html/admin/events.html.br
new file mode 100644
index 000000000..f2b71df78
Binary files /dev/null and b/templates/html/admin/events.html.br differ
diff --git a/templates/html/admin/events.html.gz b/templates/html/admin/events.html.gz
new file mode 100644
index 000000000..6eb0c976e
Binary files /dev/null and b/templates/html/admin/events.html.gz differ
diff --git a/templates/html/admin/groups.html b/templates/html/admin/groups.html
new file mode 100644
index 000000000..93c714a3e
--- /dev/null
+++ b/templates/html/admin/groups.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-Fi6igoskRzVJXNCfPJCpWLcXOWFryztPQJBC36ZNUPo='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/12.DRctYUn3.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 12],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/groups.html.br b/templates/html/admin/groups.html.br
new file mode 100644
index 000000000..36b56ccd1
Binary files /dev/null and b/templates/html/admin/groups.html.br differ
diff --git a/templates/html/admin/groups.html.gz b/templates/html/admin/groups.html.gz
new file mode 100644
index 000000000..937cae1db
Binary files /dev/null and b/templates/html/admin/groups.html.gz differ
diff --git a/templates/html/admin/providers.html b/templates/html/admin/providers.html
new file mode 100644
index 000000000..a1b62d77f
--- /dev/null
+++ b/templates/html/admin/providers.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-iS1DP8m+8rERDlXgj5MX1ZlMeAYLoYTuqmXP2TTXyrY='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/13.x64cmFvq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 13],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/providers.html.br b/templates/html/admin/providers.html.br
new file mode 100644
index 000000000..7f2c7c869
Binary files /dev/null and b/templates/html/admin/providers.html.br differ
diff --git a/templates/html/admin/providers.html.gz b/templates/html/admin/providers.html.gz
new file mode 100644
index 000000000..5b4c90e27
Binary files /dev/null and b/templates/html/admin/providers.html.gz differ
diff --git a/templates/html/admin/roles.html b/templates/html/admin/roles.html
new file mode 100644
index 000000000..82a523058
--- /dev/null
+++ b/templates/html/admin/roles.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-9k1X7JVpVlNVvUt3HHVH8mBUMaORoPWMueahqqSrwEA='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/14.DoJ-tz2B.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 14],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/roles.html.br b/templates/html/admin/roles.html.br
new file mode 100644
index 000000000..f5dfe118c
Binary files /dev/null and b/templates/html/admin/roles.html.br differ
diff --git a/templates/html/admin/roles.html.gz b/templates/html/admin/roles.html.gz
new file mode 100644
index 000000000..f7bfb0522
Binary files /dev/null and b/templates/html/admin/roles.html.gz differ
diff --git a/templates/html/admin/scopes.html b/templates/html/admin/scopes.html
new file mode 100644
index 000000000..0188ed988
--- /dev/null
+++ b/templates/html/admin/scopes.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-zWThaRa0OYHITf9CJIA3+1UL568qxGYDrvxsYZsOusA='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/15.CUsx6Ptm.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 15],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/scopes.html.br b/templates/html/admin/scopes.html.br
new file mode 100644
index 000000000..fee35623b
Binary files /dev/null and b/templates/html/admin/scopes.html.br differ
diff --git a/templates/html/admin/scopes.html.gz b/templates/html/admin/scopes.html.gz
new file mode 100644
index 000000000..d016db71d
Binary files /dev/null and b/templates/html/admin/scopes.html.gz differ
diff --git a/templates/html/admin/sessions.html b/templates/html/admin/sessions.html
new file mode 100644
index 000000000..40d332f4d
--- /dev/null
+++ b/templates/html/admin/sessions.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-7KRIly9Qp+RHi+GCO2SUOsxoNCwK5Dgya9N8KKx/7qc='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/16.eXw--TB9.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 16],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/sessions.html.br b/templates/html/admin/sessions.html.br
new file mode 100644
index 000000000..aa5146797
Binary files /dev/null and b/templates/html/admin/sessions.html.br differ
diff --git a/templates/html/admin/sessions.html.gz b/templates/html/admin/sessions.html.gz
new file mode 100644
index 000000000..967e25d67
Binary files /dev/null and b/templates/html/admin/sessions.html.gz differ
diff --git a/templates/html/admin/users.html b/templates/html/admin/users.html
new file mode 100644
index 000000000..f82eb2134
--- /dev/null
+++ b/templates/html/admin/users.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-B+LWt7HSSOoSw+mJQjggfz/5+xvv6baLbvIfAwjzeTM='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AdminMainPre.ZcanbrCY.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Devices.BgusA-6p.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/17.o4_Xudri.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AdminMainPre.BC7y4hZJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Devices.BuQD3GeY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js"><!--[--><!--]--><title>Admin</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[--><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 17],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/admin/users.html.br b/templates/html/admin/users.html.br
new file mode 100644
index 000000000..7fd0548f6
Binary files /dev/null and b/templates/html/admin/users.html.br differ
diff --git a/templates/html/admin/users.html.gz b/templates/html/admin/users.html.gz
new file mode 100644
index 000000000..ac8bd7fa7
Binary files /dev/null and b/templates/html/admin/users.html.gz differ
diff --git a/templates/html/device.html b/templates/html/device.html
new file mode 100644
index 000000000..9026485a1
--- /dev/null
+++ b/templates/html/device.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="./assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-TrhbLNloVySSZDE3SC36yoBtFbmjjHoOBpxAssQM7wU='; style-src 'self' 'unsafe-inline'">
+		<link href="./_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/18.GNJxucTb.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Loading.BVnr1IrI.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="./_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="./_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/18.DtlPpkWl.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Loading.wZ55XKP1.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/pow.r0U0E3f9.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/ContentCenter.CsjyBf2d.js"><!--[--><!--]--><title>Device Authorization</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><!--[--><div class="container svelte-10pff2x global background"><div class="inner svelte-10pff2x" style="margin-top: 0px"><!--[--><div class="circle svelte-10pff2x"></div><!--]--> <!--[!--><!--]--> <!--[!--><!--]--></div></div><!--]--> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----><!----></div><!----></main><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL(".", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("./_app/immutable/entry/start.Bj78bRRv.js"),
+						import("./_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 18],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/device.html.br b/templates/html/device.html.br
new file mode 100644
index 000000000..f13808f44
Binary files /dev/null and b/templates/html/device.html.br differ
diff --git a/templates/html/device.html.gz b/templates/html/device.html.gz
new file mode 100644
index 000000000..fab24cfa6
Binary files /dev/null and b/templates/html/device.html.gz differ
diff --git a/templates/html/error.html b/templates/html/error.html
new file mode 100644
index 000000000..90a89710a
--- /dev/null
+++ b/templates/html/error.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="./assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-CliHpAG9EzCVn08T6UiTT8M7TTBzrRfs4d0nuiw/jgw='; style-src 'self' 'unsafe-inline'">
+		<link href="./_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Error.BHaKgkRX.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="./_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="./_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/19.0qOBqwlU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Error.CsY9Wg-p.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/ContentCenter.CsjyBf2d.js">
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!----> <!----> <main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="flex-col"><h1></h1> <br> <p></p> <!--[!--><!--]--> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----></div><!----></div><!----></main><!----><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL(".", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("./_app/immutable/entry/start.Bj78bRRv.js"),
+						import("./_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 19],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/error.html.br b/templates/html/error.html.br
new file mode 100644
index 000000000..75e199500
Binary files /dev/null and b/templates/html/error.html.br differ
diff --git a/templates/html/error.html.gz b/templates/html/error.html.gz
new file mode 100644
index 000000000..d98bc49ed
Binary files /dev/null and b/templates/html/error.html.gz differ
diff --git a/templates/html/error/error.html b/templates/html/error/error.html
new file mode 100644
index 000000000..2e0f538f5
--- /dev/null
+++ b/templates/html/error/error.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-bu2W8Cju7P7dknv+SNT9AHRCPJDQAQLlm/60o7PJJfM='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Error.BHaKgkRX.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/20.0qOBqwlU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Error.CsY9Wg-p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/ContentCenter.CsjyBf2d.js">
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!----> <!----> <main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="flex-col"><h1></h1> <br> <p></p> <!--[!--><!--]--> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----></div><!----></div><!----></main><!----><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 20],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/error/error.html.br b/templates/html/error/error.html.br
new file mode 100644
index 000000000..0a6623664
Binary files /dev/null and b/templates/html/error/error.html.br differ
diff --git a/templates/html/error/error.html.gz b/templates/html/error/error.html.gz
new file mode 100644
index 000000000..1b2ce6879
Binary files /dev/null and b/templates/html/error/error.html.gz differ
diff --git a/templates/html/error/error/error.html b/templates/html/error/error/error.html
new file mode 100644
index 000000000..c5c68e907
--- /dev/null
+++ b/templates/html/error/error/error.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-YbXq5O1yD7FJ8WJMW16obAJNf465htYmpMjXkxqHZfk='; style-src 'self' 'unsafe-inline'">
+		<link href="../../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../../_app/immutable/assets/Error.BHaKgkRX.css" rel="stylesheet">
+		<link href="../../_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="../../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../../_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="../../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../../_app/immutable/nodes/21.0qOBqwlU.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/Error.CsY9Wg-p.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../../_app/immutable/chunks/ContentCenter.CsjyBf2d.js">
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!----> <!----> <main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="flex-col"><h1></h1> <br> <p></p> <!--[!--><!--]--> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----></div><!----></div><!----></main><!----><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("../..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 21],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/error/error/error.html.br b/templates/html/error/error/error.html.br
new file mode 100644
index 000000000..b8672321f
Binary files /dev/null and b/templates/html/error/error/error.html.br differ
diff --git a/templates/html/error/error/error.html.gz b/templates/html/error/error/error.html.gz
new file mode 100644
index 000000000..02eaf304c
Binary files /dev/null and b/templates/html/error/error/error.html.gz differ
diff --git a/templates/html/error/error/error/error.html b/templates/html/error/error/error/error.html
new file mode 100644
index 000000000..fa98a0704
--- /dev/null
+++ b/templates/html/error/error/error/error.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../../../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-z1kIi6pJbHXIkFEZqrcUD7qXFHsoVPCNnYoG/VpxHvg='; style-src 'self' 'unsafe-inline'">
+		<link href="../../../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/Error.BHaKgkRX.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="../../../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../../../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../../../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../../../_app/immutable/nodes/22.0qOBqwlU.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/Error.CsY9Wg-p.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/ContentCenter.CsjyBf2d.js">
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!----> <!----> <main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="flex-col"><h1></h1> <br> <p></p> <!--[!--><!--]--> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----></div><!----></div><!----></main><!----><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("../../..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../../../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../../../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 22],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/error/error/error/error.html.br b/templates/html/error/error/error/error.html.br
new file mode 100644
index 000000000..07e21b3e2
Binary files /dev/null and b/templates/html/error/error/error/error.html.br differ
diff --git a/templates/html/error/error/error/error.html.gz b/templates/html/error/error/error/error.html.gz
new file mode 100644
index 000000000..09da63a83
Binary files /dev/null and b/templates/html/error/error/error/error.html.gz differ
diff --git a/templates/html/fedcm.html b/templates/html/fedcm.html
new file mode 100644
index 000000000..20f9a7f17
--- /dev/null
+++ b/templates/html/fedcm.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="./assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-MymJCti6bXxRYHKshuDjoKxTfQCGWwHsufbPQB6wos0='; style-src 'self' 'unsafe-inline'">
+		<link href="./_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/23.BGsNSr6e.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="./_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="./_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/23.CKFyfpgm.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/CheckIcon.Cjxxxfsf.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/ContentCenter.CsjyBf2d.js">
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="flex-col"><h1>FedCM Testing</h1> <div class="row svelte-wuqbvo"><div><b>FedCM supported:</b></div> <div class="check svelte-wuqbvo"><!--[!--><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" color="var(--col-err)" opacity="0.9"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path></svg><!--]--><!----></div></div> <!--[--><br>-> enable idp registration:<br> <code>chrome://flags/#fedcm-idp-registration</code><!--]--> <!--[!--><!--]--></div><!----></div><!----></main><!----> <!--[!--><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL(".", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("./_app/immutable/entry/start.Bj78bRRv.js"),
+						import("./_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 23],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/fedcm.html.br b/templates/html/fedcm.html.br
new file mode 100644
index 000000000..aeba6977b
Binary files /dev/null and b/templates/html/fedcm.html.br differ
diff --git a/templates/html/fedcm.html.gz b/templates/html/fedcm.html.gz
new file mode 100644
index 000000000..8967d0d4a
Binary files /dev/null and b/templates/html/fedcm.html.gz differ
diff --git a/templates/html/index.html b/templates/html/index.html
new file mode 100644
index 000000000..3cc8e974d
--- /dev/null
+++ b/templates/html/index.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="./assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-aFm5IgDUQULK+PaNYbpJpofjElgf6CK3c3r1a6CgO+c='; style-src 'self' 'unsafe-inline'">
+		<link href="./_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/2.CZlF3VMn.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/AppVersion.DHsV5F-O.css" rel="stylesheet">
+		<link href="./_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="./_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="./_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="./_app/immutable/nodes/2.DWHAwZAi.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/AppVersion.DL5DXmu_.js">
+		<link rel="modulepreload" href="./_app/immutable/chunks/ContentCenter.CsjyBf2d.js"><!--[--><!--]--><title>Rauthy</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="btn svelte-1um1rdi"><!--[!--><!--]--> <button style="width: 9rem; cursor: pointer;" class="font-label l2 svelte-103k7bs"><!--[!--><!--[--><div class="txt svelte-103k7bs"><!---->Account<!----></div><!--]--><!--]--></button><!----> <button style="width: 9rem; cursor: pointer;" class="font-label l2 svelte-103k7bs"><!--[!--><!--[--><div class="txt svelte-103k7bs"><!---->Admin<!----></div><!--]--><!--]--></button><!----></div><!----></div><!----> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----> <div class="version svelte-1um1rdi"><!--[!--><div class="ver svelte-zcqypp">v</div><!--]--><!----></div><!----></main><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL(".", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("./_app/immutable/entry/start.Bj78bRRv.js"),
+						import("./_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 2],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/index.html.br b/templates/html/index.html.br
new file mode 100644
index 000000000..0e7d8cc12
Binary files /dev/null and b/templates/html/index.html.br differ
diff --git a/templates/html/index.html.gz b/templates/html/index.html.gz
new file mode 100644
index 000000000..a155a1afa
Binary files /dev/null and b/templates/html/index.html.gz differ
diff --git a/templates/html/oidc/authorize.html b/templates/html/oidc/authorize.html
new file mode 100644
index 000000000..40bbbce13
--- /dev/null
+++ b/templates/html/oidc/authorize.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-y33vXMUQhxwxZqee5MV0V1K/1oyALVmtHa7RRE2spUs='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/24.GB6k287-.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/WebauthnRequest._nhbHN0l.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/24.D6gupSzm.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/lifecycle.CRex4y9i.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/WebauthnRequest.CHVZELhw.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/ContentCenter.CsjyBf2d.js"><!--[--><!--]--><title>Login </title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="container svelte-1ljcjf3"><div class="head svelte-1ljcjf3"><div class="logo svelte-1ljcjf3"><!--[!--><!--]--></div> <!--[!--><!--]--></div> <div class="name svelte-1ljcjf3"><h2></h2></div> <!--[!--><!--]--> <!--[--><div style="width: calc(250px + 12px);" class="container svelte-x8kgzj"><div class="label svelte-x8kgzj"><div style="background: var(--col-bg);" class="labelInner font-label noselect svelte-x8kgzj"><label for="rauthyEmail"><!---->E-MAIL<!----></label></div></div> <input name="rauthyEmail" value="" autocomplete="email" type="email" placeholder="E-Mail" style="width: 250px;" class="svelte-x8kgzj"> <!--[!--><!--]--></div><!----> <!--[!--><!--]--> <!--[--><!--[!--><div class="btn flex-col svelte-1ljcjf3"><button style="width: inherit; cursor: pointer;" class="font-label l2 svelte-103k7bs"><!--[!--><!--[--><div class="txt svelte-103k7bs"><!---->Login<!----></div><!--]--><!--]--></button><!----></div><!--]--><!--]--><!--]--> <!--[--><div class="providers flex-col svelte-1ljcjf3"><!--[--><!--]--></div><!--]--> <!--[!--><!--]--> <!--[!--><!--]--> <!--[!--><!--]--> <!--[!--><!--]--></div> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----><!----></div><!----></main><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 24],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/oidc/authorize.html.br b/templates/html/oidc/authorize.html.br
new file mode 100644
index 000000000..31c8188af
Binary files /dev/null and b/templates/html/oidc/authorize.html.br differ
diff --git a/templates/html/oidc/authorize.html.gz b/templates/html/oidc/authorize.html.gz
new file mode 100644
index 000000000..6e4ed75af
Binary files /dev/null and b/templates/html/oidc/authorize.html.gz differ
diff --git a/templates/html/oidc/callback.html b/templates/html/oidc/callback.html
new file mode 100644
index 000000000..d05b1276a
--- /dev/null
+++ b/templates/html/oidc/callback.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-2TWgfyqgQIk1vAAZw71lyWuQabomiTzngjCOew33aaI='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/25.Dh7XjBbD.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy.BuHyzquP.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/lifecycle.CRex4y9i.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js"><!--[--><!--]--><title>Login</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><div class="container svelte-2cwfk8 local"><div class="loading svelte-2cwfk8" style="margin-top: 0px;"><div style="background: var(--col-acnt);" class="loading-1 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-2 svelte-2cwfk8"></div> <div style="background: var(--col-acnt);" class="loading-3 svelte-2cwfk8"></div></div></div><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 25],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/oidc/callback.html.br b/templates/html/oidc/callback.html.br
new file mode 100644
index 000000000..0f122dafb
Binary files /dev/null and b/templates/html/oidc/callback.html.br differ
diff --git a/templates/html/oidc/callback.html.gz b/templates/html/oidc/callback.html.gz
new file mode 100644
index 000000000..3a040d961
Binary files /dev/null and b/templates/html/oidc/callback.html.gz differ
diff --git a/templates/html/oidc/logout.html b/templates/html/oidc/logout.html
new file mode 100644
index 000000000..78c359bd2
--- /dev/null
+++ b/templates/html/oidc/logout.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-9MSaogoiAwHvoIi8iZsVvjmNyFGbUeFNDfANtE/8fyM='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/26.HJ4svAjD.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/26.BxPoozgR.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/ContentCenter.CsjyBf2d.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js"><!--[--><!--]--><title>Logout</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="container svelte-1r6sjfz"><h1>Logout</h1> <p>Do you really want to logout and end your session?</p> <div class="btn svelte-1r6sjfz"><button style="width: inherit; cursor: pointer;" class="font-label l2 svelte-103k7bs"><!--[!--><!--[--><div class="txt svelte-103k7bs"><!---->Logout<!----></div><!--]--><!--]--></button><!----> <button style="width: inherit; cursor: pointer;" class="font-label l4 svelte-103k7bs"><!--[!--><!--[--><div class="txt svelte-103k7bs"><!---->Cancel<!----></div><!--]--><!--]--></button><!----></div> <!--[!--><!--]--></div> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----><!----></div><!----></main><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 26],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/oidc/logout.html.br b/templates/html/oidc/logout.html.br
new file mode 100644
index 000000000..4155b982d
Binary files /dev/null and b/templates/html/oidc/logout.html.br differ
diff --git a/templates/html/oidc/logout.html.gz b/templates/html/oidc/logout.html.gz
new file mode 100644
index 000000000..3e017afa7
Binary files /dev/null and b/templates/html/oidc/logout.html.gz differ
diff --git a/templates/html/providers/callback.html b/templates/html/providers/callback.html
new file mode 100644
index 000000000..5b3147749
--- /dev/null
+++ b/templates/html/providers/callback.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-m7DqMp3EXTYO8zpVU+w6FSLn6o9+zWSUdEX1hhWNaaY='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/27.CnT30TCt.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/WebauthnRequest._nhbHN0l.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/27.gkewKINJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/WebauthnRequest.CHVZELhw.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js"><!--[--><!--]--><title>Callback</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[!--><!--]--><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 27],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/providers/callback.html.br b/templates/html/providers/callback.html.br
new file mode 100644
index 000000000..25efefc7b
Binary files /dev/null and b/templates/html/providers/callback.html.br differ
diff --git a/templates/html/providers/callback.html.gz b/templates/html/providers/callback.html.gz
new file mode 100644
index 000000000..29b62f73b
Binary files /dev/null and b/templates/html/providers/callback.html.gz differ
diff --git a/templates/html/theme/{{client_id}} b/templates/html/theme/{{client_id}}
new file mode 100644
index 000000000..917c1f769
--- /dev/null
+++ b/templates/html/theme/{{client_id}}
@@ -0,0 +1,1 @@
+body{--text:208 10 40;--text-high:208 20 20;--bg:228 2 98;--bg-high:228 8 84;--action:34 100 59;--accent:246 60 53;--error:15 100 37;--btn-text:white;--theme-sun:hsla(var(--action), .7);--theme-moon:hsla(var(--accent), .85);--border-radius:5px;}.theme-dark{--text:228 2 70;--text-high:228 8 90;--bg:208 90 4;--bg-high:208 30 19;--action:34 100 59;--accent:246 60 53;--error:15 100 37;--btn-text:hsl(var(--bg));--theme-sun:hsla(var(--action), .7);--theme-moon:hsla(var(--accent), .85);}@media (prefers-color-scheme: dark){body{--text:228 2 70;--text-high:228 8 90;--bg:208 90 4;--bg-high:208 30 19;--action:34 100 59;--accent:246 60 53;--error:15 100 37;--btn-text:hsl(var(--bg));--theme-sun:hsla(var(--action), .7);--theme-moon:hsla(var(--accent), .85);}.theme-light{--text:208 10 40;--text-high:208 20 20;--bg:228 2 98;--bg-high:228 8 84;--action:34 100 59;--accent:246 60 53;--error:15 100 37;--btn-text:white;--theme-sun:hsla(var(--action), .7);--theme-moon:hsla(var(--accent), .85);}}
\ No newline at end of file
diff --git a/templates/html/users/register.html b/templates/html/users/register.html
new file mode 100644
index 000000000..8d9374839
--- /dev/null
+++ b/templates/html/users/register.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-p1Z7PKaDswMnRHS7lcB3c7uG119TTlXWOSPqo5/P6Wk='; style-src 'self' 'unsafe-inline'">
+		<link href="../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/28.CxOoN8ns.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../_app/immutable/nodes/28.DMZ7hk2F.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/pow.r0U0E3f9.js">
+		<link rel="modulepreload" href="../_app/immutable/chunks/ContentCenter.CsjyBf2d.js"><!--[--><!--]--><title>[object Object]</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="container svelte-1ks9oi1"><div class="domainTxt svelte-1ks9oi1"><h1>User Registration</h1> <!--[!--><!--]--></div> <div style="width: calc(250px + 12px);" class="container svelte-x8kgzj"><div class="label svelte-x8kgzj"><div style="background: var(--col-bg);" class="labelInner font-label noselect svelte-x8kgzj"><label for="ALo5odJk"><!---->E-MAIL<!----></label></div></div> <input name="ALo5odJk" value="" autocomplete="email" type="email" placeholder="E-Mail" style="width: 250px;" class="svelte-x8kgzj"> <!--[!--><!--]--></div><!----> <div style="width: calc(250px + 12px);" class="container svelte-x8kgzj"><div class="label svelte-x8kgzj"><div style="background: var(--col-bg);" class="labelInner font-label noselect svelte-x8kgzj"><label for="lll5QXNZ"><!---->GIVEN NAME<!----></label></div></div> <input name="lll5QXNZ" value="" autocomplete="given-name" placeholder="Given Name" style="width: 250px;" class="svelte-x8kgzj"> <!--[!--><!--]--></div><!----> <div style="width: calc(250px + 12px);" class="container svelte-x8kgzj"><div class="label svelte-x8kgzj"><div style="background: var(--col-bg);" class="labelInner font-label noselect svelte-x8kgzj"><label for="tOYol4CA"><!---->FAMILY NAME<!----></label></div></div> <input name="tOYol4CA" value="" autocomplete="family-name" placeholder="Family Name" style="width: 250px;" class="svelte-x8kgzj"> <!--[!--><!--]--></div><!----> <button style="width: inherit; cursor: pointer;" class="font-label l2 svelte-103k7bs"><!--[!--><!--[--><div class="txt svelte-103k7bs"><!---->Register<!----></div><!--]--><!--]--></button><!----> <!--[!--><!--[!--><!--]--><!--]--></div> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----><!----></div><!----></main><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 28],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/users/register.html.br b/templates/html/users/register.html.br
new file mode 100644
index 000000000..1eb725b23
Binary files /dev/null and b/templates/html/users/register.html.br differ
diff --git a/templates/html/users/register.html.gz b/templates/html/users/register.html.gz
new file mode 100644
index 000000000..4a3315892
Binary files /dev/null and b/templates/html/users/register.html.gz differ
diff --git a/templates/html/users/{id}/email_confirm/email_confirm.html b/templates/html/users/{id}/email_confirm/email_confirm.html
new file mode 100644
index 000000000..7258ca9e1
--- /dev/null
+++ b/templates/html/users/{id}/email_confirm/email_confirm.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../../../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-qSJoF3Iy1YRrNa+j/RN83UKheASJ33frtgz7nCNS1wM='; style-src 'self' 'unsafe-inline'">
+		<link href="../../../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/29.D1v94sLe.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/ContentCenter.BpmtvV5f.css" rel="stylesheet">
+		<link rel="modulepreload" href="../../../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../../../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../../../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../../../_app/immutable/nodes/29.Cll9oCQC.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/OptionSelect.BCgZksOM.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/ContentCenter.CsjyBf2d.js"><!--[--><!--]--><title>E-Mail Change confirmed</title>
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><main class="svelte-1w3gfbz"><div class="svelte-vtwvgl"><div class="container svelte-1g19pwu"><h1>E-Mail Change confirmed</h1> <p class="svelte-1g19pwu">Your E-Mail address has been changed from:<br> <b>old@mail.org</b> to <b>new@mail.org</b></p> <p class="svelte-1g19pwu">You can now log in using your new address.</p> <div class="btn svelte-1g19pwu"><button style="width: inherit; cursor: pointer;" class="font-label l2 svelte-103k7bs"><!--[!--><!--[--><div class="txt svelte-103k7bs"><!---->Login<!----></div><!--]--><!--]--></button><!----></div></div> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----><!----></div><!----></main><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("../../..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../../../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../../../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 29],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/users/{id}/email_confirm/email_confirm.html.br b/templates/html/users/{id}/email_confirm/email_confirm.html.br
new file mode 100644
index 000000000..2d5941d04
Binary files /dev/null and b/templates/html/users/{id}/email_confirm/email_confirm.html.br differ
diff --git a/templates/html/users/{id}/email_confirm/email_confirm.html.gz b/templates/html/users/{id}/email_confirm/email_confirm.html.gz
new file mode 100644
index 000000000..53fa5249f
Binary files /dev/null and b/templates/html/users/{id}/email_confirm/email_confirm.html.gz differ
diff --git a/templates/html/users/{id}/reset/reset.html b/templates/html/users/{id}/reset/reset.html
new file mode 100644
index 000000000..6fff9e3e6
--- /dev/null
+++ b/templates/html/users/{id}/reset/reset.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html>
+<html lang="{{lang}}">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="robots" content="noindex, nofollow">
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title>Rauthy</title>
+    <link rel="icon" href="../../../assets/favicon.svg"/>
+    <link rel="stylesheet" href="/auth/v1/theme/{{client_id}}"/>
+    <style>
+        :root {
+            --col-act1: {{ col_act1 }};
+            --col-act1a: {{ col_act1a }};
+            --col-act2: {{ col_act2 }};
+            --col-act2a: {{ col_act2a }};
+            --col-acnt: {{ col_acnt }};
+            --col-acnta: {{ col_acnta }};
+            --col-ok: {{ col_ok }};
+            --col-err: {{ col_err }};
+            --col-glow: {{ col_glow }};
+            --col-gmid: {{ col_gmid }};
+            --col-ghigh: {{ col_ghigh }};
+            --col-text: {{ col_text }};
+            --col-bg: {{ col_bg }};
+
+            --width-events: 12.5rem;
+            --width-events-collapsed: 2.5rem;
+            --width-events-wide: 30rem;
+        }
+
+        body {
+            color: var(--col-text);
+            background: var(--col-bg);
+        }
+
+        a, a:visited {
+            color: var(--col-act2)
+        }
+
+        a:hover {
+            color: var(--col-act2a)
+        }
+    </style>
+    <meta http-equiv="content-security-policy" content="default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self' 'wasm-unsafe-eval' 'sha256-hjLUWP+mYu+dY7BIS6OaO146MPgfHL2eF80xMaQHk2g='; style-src 'self' 'unsafe-inline'">
+		<link href="../../../_app/immutable/assets/0.BjC-dB5x.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/30.DvqR7Iqw.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/Loading.C3rZw9wZ.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/Input.DM5r-cSQ.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/Button.BjnyTAiT.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/PasswordPolicy.CpXtnh7y.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/PasswordInput.DaeGq-fv.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/WebauthnRequest._nhbHN0l.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/LangSelector.O5X7vySz.css" rel="stylesheet">
+		<link href="../../../_app/immutable/assets/OptionSelect.v1wsJTwS.css" rel="stylesheet">
+		<link rel="modulepreload" href="../../../_app/immutable/entry/start.Bj78bRRv.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/entry.Ddy6icaf.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/index-client.CGppiJvc.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/index.BU3V9-NS.js">
+		<link rel="modulepreload" href="../../../_app/immutable/entry/app.Dj8nXbmK.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/preload-helper.CmsKOCeN.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/legacy-client.CgqodnwN.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/render.D4MwAWTL.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/disclose-version.DZhRUPAc.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/if.DUA6Hpfn.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/proxy.DB4Km9hY.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/this.B23tdsYu.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/props.Df_pGDSd.js">
+		<link rel="modulepreload" href="../../../_app/immutable/nodes/0.Cb38Tfsl.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/snippet.xhmr1ywJ.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/is_dev.svelte.sP_MjoCE.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/language.svelte.n4n5oz7-.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/i18n.svelte.BTGsPiz_.js">
+		<link rel="modulepreload" href="../../../_app/immutable/nodes/30.C8nt_tI6.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/Loading.FF_EHyHU.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/dataFetching.Dto1xJW6.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/Input.Bj_i2TLU.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/helpers.DVmWh-6p.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/Button.BH2_dPry.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/PasswordPolicy.D9rZurKD.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/PasswordInput.6uXzPAl-.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/WebauthnRequest.CHVZELhw.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/tweened.CQQvc4Vq.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/LangSelector.mSh8cV6Q.js">
+		<link rel="modulepreload" href="../../../_app/immutable/chunks/OptionSelect.BCgZksOM.js"><!--[--><!--[--><!--[!--><!--[!--><!--]--><!--]--><!--]--><!--]-->
+</head>
+<body>
+<div class="hidden" aria-hidden="true">
+    <input name="rauthy-csrf-token" id="{{ csrf_token }}" type="hidden"/>
+    <input name="rauthy-data" id="{{ data }}" type="hidden"/>
+    <input name="rauthy-action" id="{{ action }}" type="hidden"/>
+    {%- for tpl in templates -%}
+    <template id="{{ tpl.id() }}">{{ tpl.inner()|safe }}</template>
+    {%- endfor %}
+</div>
+<div style="display: contents"><!--[--><!--[--><!----><noscript><h2>You need to enable JavaScript</h2></noscript> <!--[--><!----><!--[!--><!--]--> <div class="container svelte-189rvns"><!--[!--><!--[!--><!--]--><!--]--> <!--[!--><!--]--></div> <div class="svelte-s2vujs absolute absoluteLeft"><select style="width: inherit;" class="svelte-ysgm66"><!--[--><option class="opt svelte-ysgm66" value="de">de</option><option class="opt svelte-ysgm66" value="en">en</option><option class="opt svelte-ysgm66" value="zh">zh</option><option class="opt svelte-ysgm66" value="ko">ko</option><!--]--></select><!----></div><!----><!----><!----><!--]--><!----><!--]--> <!--[!--><!--]--><!--]-->
+			
+			<script>
+				{
+					__sveltekit_zeckhh = {
+						base: new URL("../../..", location).pathname.slice(0, -1),
+						assets: "/auth/v1"
+					};
+
+					const element = document.currentScript.parentElement;
+
+					Promise.all([
+						import("../../../_app/immutable/entry/start.Bj78bRRv.js"),
+						import("../../../_app/immutable/entry/app.Dj8nXbmK.js")
+					]).then(([kit, app]) => {
+						kit.start(app, element, {
+							node_ids: [0, 30],
+							data: [null,null],
+							form: null,
+							error: null
+						});
+					});
+				}
+			</script>
+		</div>
+</body>
+</html>
diff --git a/templates/html/users/{id}/reset/reset.html.br b/templates/html/users/{id}/reset/reset.html.br
new file mode 100644
index 000000000..a2a9f5839
Binary files /dev/null and b/templates/html/users/{id}/reset/reset.html.br differ
diff --git a/templates/html/users/{id}/reset/reset.html.gz b/templates/html/users/{id}/reset/reset.html.gz
new file mode 100644
index 000000000..9598e5f1e
Binary files /dev/null and b/templates/html/users/{id}/reset/reset.html.gz differ


Test patch: