@axium/server 0.22.14 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/build/client/_app/immutable/chunks/{yn3BP4nH.js → B1E1cVbi.js} +1 -1
  2. package/build/client/_app/immutable/chunks/B1E1cVbi.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/B1E1cVbi.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/BsKf3IcD.js +3 -0
  5. package/build/client/_app/immutable/chunks/BsKf3IcD.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BsKf3IcD.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/DJeR1n-B.js +51 -0
  8. package/build/client/_app/immutable/chunks/DJeR1n-B.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/DJeR1n-B.js.gz +0 -0
  10. package/build/client/_app/immutable/entry/{app.TYOJB9mi.js → app.BxLzwmdq.js} +2 -2
  11. package/build/client/_app/immutable/entry/app.BxLzwmdq.js.br +0 -0
  12. package/build/client/_app/immutable/entry/app.BxLzwmdq.js.gz +0 -0
  13. package/build/client/_app/immutable/entry/start.DlQnoNJq.js +1 -0
  14. package/build/client/_app/immutable/entry/start.DlQnoNJq.js.br +2 -0
  15. package/build/client/_app/immutable/entry/start.DlQnoNJq.js.gz +0 -0
  16. package/build/client/_app/immutable/nodes/{1.BEkAhyaK.js → 1.CSxEoi31.js} +1 -1
  17. package/build/client/_app/immutable/nodes/1.CSxEoi31.js.br +0 -0
  18. package/build/client/_app/immutable/nodes/1.CSxEoi31.js.gz +0 -0
  19. package/build/client/_app/immutable/nodes/3.CVudd8x2.js +7 -0
  20. package/build/client/_app/immutable/nodes/3.CVudd8x2.js.br +0 -0
  21. package/build/client/_app/immutable/nodes/3.CVudd8x2.js.gz +0 -0
  22. package/build/client/_app/immutable/nodes/{4.nypsK3Xd.js → 4.Dhj0R0r7.js} +1 -1
  23. package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.br +0 -0
  24. package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.gz +0 -0
  25. package/build/client/_app/immutable/nodes/5.CGoBaVII.js +1 -0
  26. package/build/client/_app/immutable/nodes/5.CGoBaVII.js.br +0 -0
  27. package/build/client/_app/immutable/nodes/5.CGoBaVII.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/{6.BmolHYUc.js → 6.BtB2uWXy.js} +1 -1
  29. package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.gz +0 -0
  31. package/build/client/_app/version.json +1 -1
  32. package/build/client/_app/version.json.br +0 -0
  33. package/build/client/_app/version.json.gz +0 -0
  34. package/build/server/chunks/{1-BKZYjYH5.js → 1-DC8DScCf.js} +2 -2
  35. package/build/server/chunks/{1-BKZYjYH5.js.map → 1-DC8DScCf.js.map} +1 -1
  36. package/build/server/chunks/{3-maTOJHa5.js → 3-CGT4Ugys.js} +3 -3
  37. package/build/server/chunks/{3-maTOJHa5.js.map → 3-CGT4Ugys.js.map} +1 -1
  38. package/build/server/chunks/{4-D7Y8Awy7.js → 4-BscEiwUk.js} +3 -3
  39. package/build/server/chunks/{4-D7Y8Awy7.js.map → 4-BscEiwUk.js.map} +1 -1
  40. package/build/server/chunks/{5-DTm_FXHj.js → 5-H0ePIJBE.js} +3 -3
  41. package/build/server/chunks/{5-DTm_FXHj.js.map → 5-H0ePIJBE.js.map} +1 -1
  42. package/build/server/chunks/{6-DL0k26vY.js → 6-BrPpcagX.js} +3 -3
  43. package/build/server/chunks/{6-DL0k26vY.js.map → 6-BrPpcagX.js.map} +1 -1
  44. package/build/server/chunks/{FormDialog-ChxZzD05.js → FormDialog-CB-2YGWi.js} +29 -26
  45. package/build/server/chunks/{FormDialog-ChxZzD05.js.map → FormDialog-CB-2YGWi.js.map} +1 -1
  46. package/build/server/chunks/{Logout-DC_uy9Jy.js → Logout-LKOt-AST.js} +2 -2
  47. package/build/server/chunks/{Logout-DC_uy9Jy.js.map → Logout-LKOt-AST.js.map} +1 -1
  48. package/build/server/chunks/_page.svelte-B1LK5J87.js +11 -0
  49. package/build/server/chunks/{_page.svelte-BJBxetxZ.js.map → _page.svelte-B1LK5J87.js.map} +1 -1
  50. package/build/server/chunks/{_page.svelte-oj9dk99v.js → _page.svelte-CMtkwvbP.js} +3 -3
  51. package/build/server/chunks/{_page.svelte-oj9dk99v.js.map → _page.svelte-CMtkwvbP.js.map} +1 -1
  52. package/build/server/chunks/{_page.svelte-EHty6_n4.js → _page.svelte-CbI2KxeA.js} +3 -3
  53. package/build/server/chunks/{_page.svelte-EHty6_n4.js.map → _page.svelte-CbI2KxeA.js.map} +1 -1
  54. package/build/server/chunks/{_page.svelte-Dv4KnGf2.js → _page.svelte-d01Hl2Ia.js} +8 -5
  55. package/build/server/chunks/_page.svelte-d01Hl2Ia.js.map +1 -0
  56. package/build/server/chunks/{hooks.server-Dv3r7VGT.js → hooks.server-Cm-MXWdk.js} +172 -154
  57. package/build/server/chunks/hooks.server-Cm-MXWdk.js.map +1 -0
  58. package/build/server/chunks/{index-C0x4afZE.js → index-CvHf_GW2.js} +2 -2
  59. package/build/server/chunks/{index-C0x4afZE.js.map → index-CvHf_GW2.js.map} +1 -1
  60. package/build/server/chunks/{string-DCbyDSv6.js → string-DLbvtT1R.js} +8 -1
  61. package/build/server/chunks/string-DLbvtT1R.js.map +1 -0
  62. package/build/server/index.js +2 -2
  63. package/build/server/index.js.map +1 -1
  64. package/build/server/manifest.js +6 -6
  65. package/build/server/manifest.js.map +1 -1
  66. package/dist/api/metadata.js +3 -4
  67. package/dist/api/passkeys.js +1 -1
  68. package/dist/api/register.js +3 -3
  69. package/dist/api/users.js +5 -4
  70. package/dist/apps.d.ts +1 -4
  71. package/dist/apps.js +0 -5
  72. package/dist/auth.d.ts +1 -3
  73. package/dist/auth.js +1 -1
  74. package/dist/cli.js +1 -1
  75. package/dist/config.d.ts +8 -6
  76. package/dist/config.js +3 -0
  77. package/dist/plugins.d.ts +12 -0
  78. package/dist/plugins.js +8 -0
  79. package/dist/routes.js +2 -2
  80. package/dist/sveltekit.js +1 -1
  81. package/package.json +2 -2
  82. package/build/client/_app/immutable/chunks/BBSYhZYW.js +0 -51
  83. package/build/client/_app/immutable/chunks/BBSYhZYW.js.br +0 -0
  84. package/build/client/_app/immutable/chunks/BBSYhZYW.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/XQHPY6R6.js +0 -3
  86. package/build/client/_app/immutable/chunks/XQHPY6R6.js.br +0 -0
  87. package/build/client/_app/immutable/chunks/XQHPY6R6.js.gz +0 -0
  88. package/build/client/_app/immutable/chunks/yn3BP4nH.js.br +0 -0
  89. package/build/client/_app/immutable/chunks/yn3BP4nH.js.gz +0 -0
  90. package/build/client/_app/immutable/entry/app.TYOJB9mi.js.br +0 -0
  91. package/build/client/_app/immutable/entry/app.TYOJB9mi.js.gz +0 -0
  92. package/build/client/_app/immutable/entry/start.CQd8kYe6.js +0 -1
  93. package/build/client/_app/immutable/entry/start.CQd8kYe6.js.br +0 -2
  94. package/build/client/_app/immutable/entry/start.CQd8kYe6.js.gz +0 -0
  95. package/build/client/_app/immutable/nodes/1.BEkAhyaK.js.br +0 -0
  96. package/build/client/_app/immutable/nodes/1.BEkAhyaK.js.gz +0 -0
  97. package/build/client/_app/immutable/nodes/3.Du8X4x3W.js +0 -7
  98. package/build/client/_app/immutable/nodes/3.Du8X4x3W.js.br +0 -0
  99. package/build/client/_app/immutable/nodes/3.Du8X4x3W.js.gz +0 -0
  100. package/build/client/_app/immutable/nodes/4.nypsK3Xd.js.br +0 -0
  101. package/build/client/_app/immutable/nodes/4.nypsK3Xd.js.gz +0 -0
  102. package/build/client/_app/immutable/nodes/5.CutNgrff.js +0 -1
  103. package/build/client/_app/immutable/nodes/5.CutNgrff.js.br +0 -0
  104. package/build/client/_app/immutable/nodes/5.CutNgrff.js.gz +0 -0
  105. package/build/client/_app/immutable/nodes/6.BmolHYUc.js.br +0 -0
  106. package/build/client/_app/immutable/nodes/6.BmolHYUc.js.gz +0 -0
  107. package/build/server/chunks/_page.svelte-BJBxetxZ.js +0 -11
  108. package/build/server/chunks/_page.svelte-Dv4KnGf2.js.map +0 -1
  109. package/build/server/chunks/hooks.server-Dv3r7VGT.js.map +0 -1
  110. package/build/server/chunks/string-DCbyDSv6.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page.svelte-d01Hl2Ia.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/account/_page.svelte.js"],"sourcesContent":["import { u as push, z as spread_attributes, F as attr, w as pop, G as props_id, J as copy_payload, K as assign_payload, N as bind_props, O as css_props, P as ensure_array_like, Q as maybe_selected, y as escape_html, T as stringify, V as head, W as attr_style } from \"../../../chunks/index.js\";\nimport { p as preferenceDefaults, a as preferenceSchemas, b as preferenceLabels, g as getUserImage, d as deleteUser, u as updatePasskey, c as deletePasskey, l as logout, e as logoutAll, f as updateUser } from \"../../../chunks/user.js\";\nimport \"mime\";\nimport { F as FormDialog } from \"../../../chunks/FormDialog.js\";\nimport \"clsx\";\nimport { getByString, pick } from \"utilium\";\nimport { L as Logout } from \"../../../chunks/Logout.js\";\nfunction zIs(schema, type) {\n return schema.def.type == type;\n}\nconst $$css$4 = {\n hash: \"svelte-1l501sr\",\n code: \"svg.svelte-1l501sr {width:var(--size, 1em);height:var(--size, 1em);display:inline-block;fill:var(--fill, hsl(var(--hue) 0 var(--fg-light)));}\"\n};\nfunction Icon($$payload, $$props) {\n $$payload.css.add($$css$4);\n push();\n const { i, $$slots, $$events, ...rest } = $$props;\n const [style, id] = i.includes(\"/\") ? i.split(\"/\") : [\"solid\", i];\n const href = `/icons/${style}.svg#${id}`;\n $$payload.out.push(`<svg${spread_attributes(\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n width: \"1em\",\n height: \"1em\",\n ...rest\n },\n \"svelte-1l501sr\",\n void 0,\n void 0,\n 3\n )}><use${attr(\"href\", href)}></use></svg>`);\n pop();\n}\nconst $$css$3 = {\n hash: \"svelte-g409dh\",\n code: \"button.svelte-g409dh {position:relative;display:inline-block;width:1em;height:1em;border:none;background:transparent;}span.svelte-g409dh {position:absolute;inset:0;}\"\n};\nfunction ClipboardCopy($$payload, $$props) {\n $$payload.css.add($$css$3);\n push();\n $$payload.out.push(`<button class=\"svelte-g409dh\">`);\n {\n $$payload.out.push(\"<!--[!-->\");\n $$payload.out.push(`<span class=\"svelte-g409dh\">`);\n Icon($$payload, { i: \"copy\" });\n $$payload.out.push(`<!----></span>`);\n }\n $$payload.out.push(`<!--]--></button>`);\n pop();\n}\nconst $$css$2 = {\n hash: \"svelte-23hpnn\",\n code: \"input[type='checkbox'].svelte-23hpnn {display:none;}label.checkbox.svelte-23hpnn {cursor:pointer;width:1.5em;height:1.5em;border:1px solid var(--border-accent);border-radius:0.5em;display:inline-flex;justify-content:center;align-items:center;}\"\n};\nfunction Preference_1($$payload, $$props) {\n $$payload.css.add($$css$2);\n push();\n const id = props_id($$payload);\n let { preferences = void 0, userId, path, schema, optional = false } = $$props;\n let checked = schema.def.type == \"boolean\" && getByString(preferences, path);\n const initialValue = getByString(preferences, path) ?? getByString(preferenceDefaults, path);\n function dateAttr(date, format) {\n if (!date) return null;\n const pad = (n) => String(n).padStart(2, \"0\");\n const yyyy = date.getFullYear();\n const mm = pad(date.getMonth() + 1);\n const dd = pad(date.getDate());\n const dateStr = `${yyyy}-${mm}-${dd}`;\n const HH = pad(date.getHours());\n const MM = pad(date.getMinutes());\n const timeStr = `${HH}:${MM}`;\n switch (format) {\n case \"date\":\n return dateStr;\n case \"time\":\n return timeStr;\n case \"time+sec\":\n return `${timeStr}:${pad(date.getSeconds())}`;\n case \"datetime\":\n default:\n return `${dateStr}T${timeStr}`;\n }\n }\n function _in($$payload2, rest) {\n $$payload2.out.push(`<input${spread_attributes({ id, ...rest, value: initialValue, required: !optional }, \"svelte-23hpnn\")}/>`);\n }\n let $$settled = true;\n let $$inner_payload;\n function $$render_inner($$payload2) {\n if (zIs(schema, \"string\")) {\n $$payload2.out.push(\"<!--[-->\");\n _in($$payload2, {\n type: schema.format == \"email\" ? \"email\" : \"text\",\n ...pick(schema, \"minLength\", \"maxLength\")\n });\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"number\")) {\n $$payload2.out.push(\"<!--[-->\");\n _in($$payload2, {\n type: \"number\",\n min: schema.minValue,\n max: schema.maxValue,\n step: schema.format?.includes(\"int\") ? 1 : 0.1\n });\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"bigint\")) {\n $$payload2.out.push(\"<!--[-->\");\n _in($$payload2, {\n type: \"number\",\n min: Number(schema.minValue),\n max: Number(schema.maxValue),\n step: 1\n });\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"boolean\")) {\n $$payload2.out.push(\"<!--[-->\");\n $$payload2.out.push(`<input${attr(\"checked\", checked, true)}${attr(\"id\", id)} type=\"checkbox\"${attr(\"required\", !optional, true)} class=\"svelte-23hpnn\"/> <label${attr(\"for\", id)} class=\"checkbox svelte-23hpnn\">`);\n if (checked) {\n $$payload2.out.push(\"<!--[-->\");\n css_props($$payload2, true, { \"--size\": \"1.3em\" }, () => {\n Icon($$payload2, { i: \"check\" });\n });\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n }\n $$payload2.out.push(`<!--]--></label>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"date\")) {\n $$payload2.out.push(\"<!--[-->\");\n _in($$payload2, {\n type: \"date\",\n min: dateAttr(schema.minDate, \"date\"),\n max: dateAttr(schema.maxDate, \"date\")\n });\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"file\")) {\n $$payload2.out.push(\"<!--[-->\");\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"literal\")) {\n $$payload2.out.push(\"<!--[-->\");\n const each_array = ensure_array_like(schema.values);\n $$payload2.out.push(`<select${attr(\"id\", id)}${attr(\"required\", !optional, true)}><!--[-->`);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let value = each_array[$$index];\n $$payload2.out.push(`<option${attr(\"value\", value)}${maybe_selected($$payload2, value)}${attr(\"selected\", initialValue === value, true)}>${escape_html(value)}</option>`);\n }\n $$payload2.out.push(`<!--]--></select>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"template_literal\")) {\n $$payload2.out.push(\"<!--[-->\");\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"nullable\") || zIs(schema, \"optional\")) {\n $$payload2.out.push(\"<!--[-->\");\n Preference_1($$payload2, {\n userId,\n path,\n schema: schema.def.innerType,\n optional: true,\n get preferences() {\n return preferences;\n },\n set preferences($$value) {\n preferences = $$value;\n $$settled = false;\n }\n });\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"array\")) {\n $$payload2.out.push(\"<!--[-->\");\n const each_array_1 = ensure_array_like(initialValue);\n $$payload2.out.push(`<div class=\"pref-sub\"><!--[-->`);\n for (let i = 0, $$length = each_array_1.length; i < $$length; i++) {\n $$payload2.out.push(`<div class=\"pref-record-entry\">`);\n Preference_1($$payload2, {\n userId,\n path: `${stringify(path)}.${stringify(i)}`,\n schema: schema.element,\n get preferences() {\n return preferences;\n },\n set preferences($$value) {\n preferences = $$value;\n $$settled = false;\n }\n });\n $$payload2.out.push(`<!----></div>`);\n }\n $$payload2.out.push(`<!--]--></div>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"record\")) {\n $$payload2.out.push(\"<!--[-->\");\n const each_array_2 = ensure_array_like(Object.keys(initialValue));\n $$payload2.out.push(`<div class=\"pref-sub\"><!--[-->`);\n for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n let key = each_array_2[$$index_2];\n $$payload2.out.push(`<div class=\"pref-record-entry\"><label${attr(\"for\", id)}>${escape_html(key)}</label> `);\n Preference_1($$payload2, {\n userId,\n path: `${stringify(path)}.${stringify(key)}`,\n schema: schema.valueType,\n get preferences() {\n return preferences;\n },\n set preferences($$value) {\n preferences = $$value;\n $$settled = false;\n }\n });\n $$payload2.out.push(`<!----></div>`);\n }\n $$payload2.out.push(`<!--]--></div>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"object\")) {\n $$payload2.out.push(\"<!--[-->\");\n const each_array_3 = ensure_array_like(Object.entries(schema.shape));\n $$payload2.out.push(`<!--[-->`);\n for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {\n let [key, value] = each_array_3[$$index_3];\n $$payload2.out.push(`<div class=\"pref-sub\"><label${attr(\"for\", id)}>${escape_html(key)}</label> `);\n Preference_1($$payload2, {\n userId,\n path: `${stringify(path)}.${stringify(key)}`,\n schema: value,\n get preferences() {\n return preferences;\n },\n set preferences($$value) {\n preferences = $$value;\n $$settled = false;\n }\n });\n $$payload2.out.push(`<!----></div>`);\n }\n $$payload2.out.push(`<!--]-->`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"tuple\")) {\n $$payload2.out.push(\"<!--[-->\");\n const each_array_4 = ensure_array_like(schema.def.items);\n $$payload2.out.push(`<div class=\"pref-sub\"${attr(\"data-rest\", schema.def.rest)}><!--[-->`);\n for (let i = 0, $$length = each_array_4.length; i < $$length; i++) {\n let item = each_array_4[i];\n Preference_1($$payload2, {\n userId,\n path: `${stringify(path)}.${stringify(i)}`,\n schema: item,\n get preferences() {\n return preferences;\n },\n set preferences($$value) {\n preferences = $$value;\n $$settled = false;\n }\n });\n }\n $$payload2.out.push(`<!--]--></div>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (zIs(schema, \"enum\")) {\n $$payload2.out.push(\"<!--[-->\");\n const each_array_5 = ensure_array_like(Object.entries(schema.enum));\n $$payload2.out.push(`<select${attr(\"id\", id)}${attr(\"required\", !optional, true)}><!--[-->`);\n for (let $$index_5 = 0, $$length = each_array_5.length; $$index_5 < $$length; $$index_5++) {\n let [key, value] = each_array_5[$$index_5];\n $$payload2.out.push(`<option${attr(\"value\", value)}${maybe_selected($$payload2, value)}${attr(\"selected\", initialValue === value, true)}>${escape_html(key)}</option>`);\n }\n $$payload2.out.push(`<!--]--></select>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n $$payload2.out.push(`<i class=\"error-text\">Invalid preference type: ${escape_html(JSON.stringify(schema?.def?.type))}</i>`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_payload = copy_payload($$payload);\n $$render_inner($$inner_payload);\n } while (!$$settled);\n assign_payload($$payload, $$inner_payload);\n bind_props($$props, { preferences });\n pop();\n}\nconst $$css$1 = {\n hash: \"svelte-b9ddyh\",\n code: \".pref.svelte-b9ddyh {display:grid;grid-template-columns:1fr 1fr;gap:1em;}\"\n};\nfunction Preferences($$payload, $$props) {\n $$payload.css.add($$css$1);\n push();\n const id = props_id($$payload);\n let { preferences = void 0, userId } = $$props;\n let $$settled = true;\n let $$inner_payload;\n function $$render_inner($$payload2) {\n const each_array = ensure_array_like(Object.keys(preferenceSchemas));\n $$payload2.out.push(`<!--[-->`);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let path = each_array[$$index];\n $$payload2.out.push(`<div class=\"pref svelte-b9ddyh\"><label${attr(\"for\", id)}>${escape_html(preferenceLabels[path])}</label> `);\n Preference_1($$payload2, {\n userId,\n path,\n schema: preferenceSchemas[path],\n get preferences() {\n return preferences;\n },\n set preferences($$value) {\n preferences = $$value;\n $$settled = false;\n }\n });\n $$payload2.out.push(`<!----></div>`);\n }\n $$payload2.out.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_payload = copy_payload($$payload);\n $$render_inner($$inner_payload);\n } while (!$$settled);\n assign_payload($$payload, $$inner_payload);\n bind_props($$props, { preferences });\n pop();\n}\nconst $$css = {\n hash: \"svelte-c74k6c\",\n code: \"#pfp-container.svelte-c74k6c {width:100px;height:100px;margin-top:3em;.MenuToggle {float:right;position:relative;top:-24px;}}#pfp.svelte-c74k6c {width:100px;height:100px;border-radius:50%;border:1px solid #8888;}.greeting.svelte-c74k6c {font-size:2em;}.signout.svelte-c74k6c {margin-top:2em;}.section.svelte-c74k6c {width:50%;padding-top:4em;\\n\\n\t\t/* This is causing duplicate separators when removing sessions/passkeys\\n\t\t> div:has(+ div) {\\n\t\t\tborder-bottom: 1px solid #8888;\\n\t\t}\\n\t\t*/}.section.svelte-c74k6c .item:where(.svelte-c74k6c) {display:grid;align-items:center;width:100%;gap:1em;text-wrap:nowrap;border-top:1px solid #8888;padding-bottom:1em;}.info.svelte-c74k6c {grid-template-columns:10em 1fr 2em;> :where(.svelte-c74k6c):first-child {margin-left:1em;}> :where(.svelte-c74k6c):nth-child(2) {text-overflow:ellipsis;overflow:hidden;}}.passkey.svelte-c74k6c {grid-template-columns:1em 1em 1fr 1fr 1em 1em;dfn:where(.svelte-c74k6c):not(.disabled) {cursor:help;}}.session.svelte-c74k6c {grid-template-columns:1fr 1fr 1fr 1em;.current:where(.svelte-c74k6c) {border-radius:2em;padding:0 0.5em;background-color:#337;}.elevated:where(.svelte-c74k6c) {border-radius:2em;padding:0 0.5em;background-color:#733;}}\"\n};\nfunction _page($$payload, $$props) {\n $$payload.css.add($$css);\n push();\n const { data } = $$props;\n const { canVerify } = data;\n const dialogs = {};\n let currentSession = data.currentSession;\n let user = data.user;\n let passkeys = data.passkeys;\n let sessions = data.sessions;\n async function _editUser(data2) {\n const result = await updateUser(user.id, data2);\n user = result;\n }\n function action($$payload2, name, i = \"pen\") {\n $$payload2.out.push(`<button class=\"svelte-c74k6c\"${attr_style(\"\", { display: \"contents\" })}>`);\n css_props($$payload2, true, { \"--size\": \"16px\" }, () => {\n Icon($$payload2, { i });\n });\n $$payload2.out.push(`</button>`);\n }\n let $$settled = true;\n let $$inner_payload;\n function $$render_inner($$payload2) {\n const each_array = ensure_array_like(passkeys);\n const each_array_1 = ensure_array_like(sessions);\n head($$payload2, ($$payload3) => {\n $$payload3.title = `<title>Account</title>`;\n });\n $$payload2.out.push(`<div class=\"Account flex-content\"><div id=\"pfp-container\" class=\"svelte-c74k6c\"><img id=\"pfp\"${attr(\"src\", getUserImage(user))} alt=\"User profile\" width=\"100px\" height=\"100px\" class=\"svelte-c74k6c\"/></div> <p class=\"greeting svelte-c74k6c\">Welcome, ${escape_html(user.name)}</p> <div class=\"section main svelte-c74k6c\"><h3>Personal Information</h3> <div class=\"item info svelte-c74k6c\"><p class=\"subtle svelte-c74k6c\">Name</p> <p class=\"svelte-c74k6c\">${escape_html(user.name)}</p> `);\n action($$payload2);\n $$payload2.out.push(`<!----></div> `);\n FormDialog($$payload2, {\n submit: _editUser,\n submitText: \"Change\",\n get dialog() {\n return dialogs.edit_name;\n },\n set dialog($$value) {\n dialogs.edit_name = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n $$payload3.out.push(`<div><label for=\"name\">What do you want to be called?</label> <input name=\"name\" type=\"text\"${attr(\"value\", user.name || \"\")} required/></div>`);\n },\n $$slots: { default: true }\n });\n $$payload2.out.push(`<!----> <div class=\"item info svelte-c74k6c\"><p class=\"subtle svelte-c74k6c\">Email</p> <p class=\"svelte-c74k6c\">${escape_html(user.email)} `);\n if (user.emailVerified) {\n $$payload2.out.push(\"<!--[-->\");\n $$payload2.out.push(`<dfn${attr(\"title\", `Email verified on ${stringify(user.emailVerified.toLocaleDateString())}`)}>`);\n Icon($$payload2, { i: \"regular/circle-check\" });\n $$payload2.out.push(`<!----></dfn>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n if (canVerify) {\n $$payload2.out.push(\"<!--[-->\");\n $$payload2.out.push(`<button>${escape_html(\"Verify\")}</button>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n }\n $$payload2.out.push(`<!--]-->`);\n }\n $$payload2.out.push(`<!--]--></p> `);\n action($$payload2);\n $$payload2.out.push(`<!----></div> `);\n FormDialog($$payload2, {\n submit: _editUser,\n submitText: \"Change\",\n get dialog() {\n return dialogs.edit_email;\n },\n set dialog($$value) {\n dialogs.edit_email = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n $$payload3.out.push(`<div><label for=\"email\">Email Address</label> <input name=\"email\" type=\"email\"${attr(\"value\", user.email || \"\")} required/></div>`);\n },\n $$slots: { default: true }\n });\n $$payload2.out.push(`<!----> <div class=\"item info svelte-c74k6c\"><p class=\"subtle svelte-c74k6c\">User ID <dfn title=\"This is your UUID. It can't be changed.\">`);\n Icon($$payload2, { i: \"regular/circle-info\" });\n $$payload2.out.push(`<!----></dfn></p> <p class=\"svelte-c74k6c\">${escape_html(user.id)}</p> `);\n css_props($$payload2, true, { \"--size\": \"16px\" }, () => {\n ClipboardCopy($$payload2, { value: user.id });\n });\n $$payload2.out.push(`</div> <span><button class=\"signout svelte-c74k6c\">Sign Out</button> <button class=\"danger\"${attr_style(\"\", { cursor: \"pointer\" })}>Delete Account</button> `);\n Logout($$payload2, {\n get dialog() {\n return dialogs.logout;\n },\n set dialog($$value) {\n dialogs.logout = $$value;\n $$settled = false;\n }\n });\n $$payload2.out.push(`<!----> `);\n FormDialog($$payload2, {\n submit: () => deleteUser(user.id).then(() => window.location.href = \"/\"),\n submitText: \"Delete Account\",\n submitDanger: true,\n get dialog() {\n return dialogs.delete;\n },\n set dialog($$value) {\n dialogs.delete = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n $$payload3.out.push(`<p>Are you sure you want to delete your account?<br/>This action can't be undone.</p>`);\n },\n $$slots: { default: true }\n });\n $$payload2.out.push(`<!----></span></div> <div class=\"section main svelte-c74k6c\"><h3>Passkeys</h3> <!--[-->`);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let passkey = each_array[$$index];\n $$payload2.out.push(`<div class=\"item passkey svelte-c74k6c\"><dfn${attr(\"title\", passkey.deviceType == \"multiDevice\" ? \"Multiple devices\" : \"Single device\")} class=\"svelte-c74k6c\">`);\n css_props($$payload2, true, { \"--size\": \"16px\" }, () => {\n Icon($$payload2, {\n i: passkey.deviceType == \"multiDevice\" ? \"laptop-mobile\" : \"mobile\"\n });\n });\n $$payload2.out.push(`</dfn> <dfn${attr(\"title\", `This passkey is ${stringify(passkey.backedUp ? \"\" : \"not \")}backed up`)} class=\"svelte-c74k6c\">`);\n css_props($$payload2, true, { \"--size\": \"16px\" }, () => {\n Icon($$payload2, { i: passkey.backedUp ? \"circle-check\" : \"circle-xmark\" });\n });\n $$payload2.out.push(`</dfn> `);\n if (passkey.name) {\n $$payload2.out.push(\"<!--[-->\");\n $$payload2.out.push(`<p>${escape_html(passkey.name)}</p>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n $$payload2.out.push(`<p class=\"subtle\"><i>Unnamed</i></p>`);\n }\n $$payload2.out.push(`<!--]--> <p>Created ${escape_html(passkey.createdAt.toLocaleString())}</p> `);\n action($$payload2, \"edit_passkey#\" + passkey.id);\n $$payload2.out.push(`<!----> `);\n if (passkeys.length > 1) {\n $$payload2.out.push(\"<!--[-->\");\n action($$payload2, \"delete_passkey#\" + passkey.id, \"trash\");\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n $$payload2.out.push(`<dfn title=\"You must have at least one passkey\" class=\"disabled svelte-c74k6c\">`);\n css_props($$payload2, true, { \"--fill\": \"#888\", \"--size\": \"16px\" }, () => {\n Icon($$payload2, { i: \"trash-slash\" });\n });\n $$payload2.out.push(`</dfn>`);\n }\n $$payload2.out.push(`<!--]--></div> `);\n FormDialog($$payload2, {\n submit: (data2) => {\n if (typeof data2.name != \"string\") throw \"Passkey name must be a string\";\n passkey.name = data2.name;\n return updatePasskey(passkey.id, data2);\n },\n submitText: \"Change\",\n get dialog() {\n return dialogs[\"edit_passkey#\" + passkey.id];\n },\n set dialog($$value) {\n dialogs[\"edit_passkey#\" + passkey.id] = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n $$payload3.out.push(`<div><label for=\"name\">Passkey Name</label> <input name=\"name\" type=\"text\"${attr(\"value\", passkey.name || \"\")}/></div>`);\n },\n $$slots: { default: true }\n });\n $$payload2.out.push(`<!----> `);\n FormDialog($$payload2, {\n submit: () => deletePasskey(passkey.id).then(() => passkeys.splice(passkeys.indexOf(passkey), 1)),\n submitText: \"Delete\",\n submitDanger: true,\n get dialog() {\n return dialogs[\"delete_passkey#\" + passkey.id];\n },\n set dialog($$value) {\n dialogs[\"delete_passkey#\" + passkey.id] = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n $$payload3.out.push(`<p>Are you sure you want to delete this passkey?<br/>This action can't be undone.</p>`);\n },\n $$slots: { default: true }\n });\n $$payload2.out.push(`<!---->`);\n }\n $$payload2.out.push(`<!--]--> <span><button class=\"icon-text\">`);\n Icon($$payload2, { i: \"plus\" });\n $$payload2.out.push(`<!----> Create</button></span></div> <div class=\"section main svelte-c74k6c\"><h3>Sessions</h3> <!--[-->`);\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let session = each_array_1[$$index_1];\n $$payload2.out.push(`<div class=\"item session svelte-c74k6c\"><p>${escape_html(session.id.slice(0, 4))}...${escape_html(session.id.slice(-4))} `);\n if (session.id == currentSession.id) {\n $$payload2.out.push(\"<!--[-->\");\n $$payload2.out.push(`<span class=\"current svelte-c74k6c\">Current</span>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n }\n $$payload2.out.push(`<!--]--> `);\n if (session.elevated) {\n $$payload2.out.push(\"<!--[-->\");\n $$payload2.out.push(`<span class=\"elevated svelte-c74k6c\">Elevated</span>`);\n } else {\n $$payload2.out.push(\"<!--[!-->\");\n }\n $$payload2.out.push(`<!--]--></p> <p>Created ${escape_html(session.created.toLocaleString())}</p> <p>Expires ${escape_html(session.expires.toLocaleString())}</p> `);\n action($$payload2, \"logout#\" + session.id, \"right-from-bracket\");\n $$payload2.out.push(`<!----></div> `);\n FormDialog($$payload2, {\n submit: async () => {\n await logout(user.id, session.id);\n dialogs[\"logout#\" + session.id].remove();\n sessions.splice(sessions.indexOf(session), 1);\n if (session.id == currentSession.id) window.location.href = \"/\";\n },\n submitText: \"Logout\",\n get dialog() {\n return dialogs[\"logout#\" + session.id];\n },\n set dialog($$value) {\n dialogs[\"logout#\" + session.id] = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n $$payload3.out.push(`<p>Are you sure you want to log out this session?</p>`);\n },\n $$slots: { default: true }\n });\n $$payload2.out.push(`<!---->`);\n }\n $$payload2.out.push(`<!--]--> <span><button class=\"danger\">Logout All</button></span> `);\n FormDialog($$payload2, {\n submit: () => logoutAll(user.id).then(() => window.location.href = \"/\"),\n submitText: \"Logout All Sessions\",\n submitDanger: true,\n get dialog() {\n return dialogs[\"logout_all\"];\n },\n set dialog($$value) {\n dialogs[\"logout_all\"] = $$value;\n $$settled = false;\n },\n children: ($$payload3) => {\n $$payload3.out.push(`<p>Are you sure you want to log out all sessions?</p>`);\n },\n $$slots: { default: true }\n });\n $$payload2.out.push(`<!----></div> <div class=\"section main svelte-c74k6c\"><h3>Preferences</h3> `);\n Preferences($$payload2, {\n userId: user.id,\n get preferences() {\n return user.preferences;\n },\n set preferences($$value) {\n user.preferences = $$value;\n $$settled = false;\n }\n });\n $$payload2.out.push(`<!----></div></div>`);\n }\n do {\n $$settled = true;\n $$inner_payload = copy_payload($$payload);\n $$render_inner($$inner_payload);\n } while (!$$settled);\n assign_payload($$payload, $$inner_payload);\n pop();\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":";;;;;;AAOA,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;AAC3B,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI;AAChC;AACA,MAAM,OAAO,GAAG;AAChB,EAAE,IAAI,EAAE,gBAAgB;AACxB,EAAE,IAAI,EAAE;AACR,CAAC;AACD,SAAS,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;AAClC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5B,EAAE,IAAI,EAAE;AACR,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO;AACnD,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACnE,EAAE,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1C,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,iBAAiB;AAC7C,IAAI;AACJ,MAAM,KAAK,EAAE,4BAA4B;AACzC,MAAM,OAAO,EAAE,aAAa;AAC5B,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG;AACT,KAAK;AACL,IAAI,gBAAgB;AACpB,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI;AACJ,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AAC7C,EAAE,GAAG,EAAE;AACP;AACA,MAAM,OAAO,GAAG;AAChB,EAAE,IAAI,EAAE,eAAe;AACvB,EAAE,IAAI,EAAE;AACR,CAAC;AACD,SAAS,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE;AAC3C,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5B,EAAE,IAAI,EAAE;AACR,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC;AACtD,EAAE;AACF,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAClC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACxC,EAAE;AACF,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACzC,EAAE,GAAG,EAAE;AACP;AACA,MAAM,OAAO,GAAG;AAChB,EAAE,IAAI,EAAE,eAAe;AACvB,EAAE,IAAI,EAAE;AACR,CAAC;AACD,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;AAC1C,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5B,EAAE,IAAI,EAAE;AACR,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;AAChC,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,OAAO;AAChF,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,IAAI,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC;AAC9E,EAAE,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC;AAC9F,EAAE,SAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE;AAClC,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI;AAC1B,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AACnC,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACvC,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAClC,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnC,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACrC,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACjC,IAAI,QAAQ,MAAM;AAClB,MAAM,KAAK,MAAM;AACjB,QAAQ,OAAO,OAAO;AACtB,MAAM,KAAK,MAAM;AACjB,QAAQ,OAAO,OAAO;AACtB,MAAM,KAAK,UAAU;AACrB,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACrD,MAAM,KAAK,UAAU;AACrB,MAAM;AACN,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtC;AACA,EAAE;AACF,EAAE,SAAS,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE;AACjC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;AACnI,EAAE;AACF,EAAE,IAAI,SAAS,GAAG,IAAI;AACtB,EAAE,IAAI,eAAe;AACrB,EAAE,SAAS,cAAc,CAAC,UAAU,EAAE;AACtC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;AAC/B,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACrC,MAAM,GAAG,CAAC,UAAU,EAAE;AACtB,QAAQ,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,GAAG,OAAO,GAAG,MAAM;AACzD,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW;AAChD,OAAO,CAAC;AACR,IAAI,CAAC,MAAM;AACX,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;AACjC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAQ,GAAG,CAAC,UAAU,EAAE;AACxB,UAAU,IAAI,EAAE,QAAQ;AACxB,UAAU,GAAG,EAAE,MAAM,CAAC,QAAQ;AAC9B,UAAU,GAAG,EAAE,MAAM,CAAC,QAAQ;AAC9B,UAAU,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AACrD,SAAS,CAAC;AACV,MAAM,CAAC,MAAM;AACb,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;AACnC,UAAU,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACzC,UAAU,GAAG,CAAC,UAAU,EAAE;AAC1B,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxC,YAAY,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxC,YAAY,IAAI,EAAE;AAClB,WAAW,CAAC;AACZ,QAAQ,CAAC,MAAM;AACf,UAAU,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1C,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;AACtC,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,+BAA+B,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,gCAAgC,CAAC,CAAC;AAChO,YAAY,IAAI,OAAO,EAAE;AACzB,cAAc,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7C,cAAc,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM;AACvE,gBAAgB,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AAChD,cAAc,CAAC,CAAC;AAChB,YAAY,CAAC,MAAM;AACnB,cAAc,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9C,YAAY;AACZ,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACnD,UAAU,CAAC,MAAM;AACjB,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AACrC,cAAc,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7C,cAAc,GAAG,CAAC,UAAU,EAAE;AAC9B,gBAAgB,IAAI,EAAE,MAAM;AAC5B,gBAAgB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;AACrD,gBAAgB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM;AACpD,eAAe,CAAC;AAChB,YAAY,CAAC,MAAM;AACnB,cAAc,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9C,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AACvC,gBAAgB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/C,cAAc,CAAC,MAAM;AACrB,gBAAgB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAChD,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;AAC5C,kBAAkB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACjD,kBAAkB,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;AACrE,kBAAkB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9G,kBAAkB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE;AACrG,oBAAoB,IAAI,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;AACnD,oBAAoB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;AAC7L,kBAAkB;AAClB,kBAAkB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC1D,gBAAgB,CAAC,MAAM;AACvB,kBAAkB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAClD,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE;AACvD,oBAAoB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACnD,kBAAkB,CAAC,MAAM;AACzB,oBAAoB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;AAC5E,sBAAsB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACrD,sBAAsB,YAAY,CAAC,UAAU,EAAE;AAC/C,wBAAwB,MAAM;AAC9B,wBAAwB,IAAI;AAC5B,wBAAwB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS;AACpD,wBAAwB,QAAQ,EAAE,IAAI;AACtC,wBAAwB,IAAI,WAAW,GAAG;AAC1C,0BAA0B,OAAO,WAAW;AAC5C,wBAAwB,CAAC;AACzB,wBAAwB,IAAI,WAAW,CAAC,OAAO,EAAE;AACjD,0BAA0B,WAAW,GAAG,OAAO;AAC/C,0BAA0B,SAAS,GAAG,KAAK;AAC3C,wBAAwB;AACxB,uBAAuB,CAAC;AACxB,oBAAoB,CAAC,MAAM;AAC3B,sBAAsB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACtD,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAChD,wBAAwB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACvD,wBAAwB,MAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC;AAC5E,wBAAwB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC;AAC7E,wBAAwB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AAC3F,0BAA0B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,+BAA+B,CAAC,CAAC;AAChF,0BAA0B,YAAY,CAAC,UAAU,EAAE;AACnD,4BAA4B,MAAM;AAClC,4BAA4B,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,4BAA4B,MAAM,EAAE,MAAM,CAAC,OAAO;AAClD,4BAA4B,IAAI,WAAW,GAAG;AAC9C,8BAA8B,OAAO,WAAW;AAChD,4BAA4B,CAAC;AAC7B,4BAA4B,IAAI,WAAW,CAAC,OAAO,EAAE;AACrD,8BAA8B,WAAW,GAAG,OAAO;AACnD,8BAA8B,SAAS,GAAG,KAAK;AAC/C,4BAA4B;AAC5B,2BAA2B,CAAC;AAC5B,0BAA0B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AAC9D,wBAAwB;AACxB,wBAAwB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAC7D,sBAAsB,CAAC,MAAM;AAC7B,wBAAwB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxD,wBAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;AACnD,0BAA0B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACzD,0BAA0B,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3F,0BAA0B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC;AAC/E,0BAA0B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AACrH,4BAA4B,IAAI,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC;AAC7D,4BAA4B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,qCAAqC,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AACvI,4BAA4B,YAAY,CAAC,UAAU,EAAE;AACrD,8BAA8B,MAAM;AACpC,8BAA8B,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,8BAA8B,MAAM,EAAE,MAAM,CAAC,SAAS;AACtD,8BAA8B,IAAI,WAAW,GAAG;AAChD,gCAAgC,OAAO,WAAW;AAClD,8BAA8B,CAAC;AAC/B,8BAA8B,IAAI,WAAW,CAAC,OAAO,EAAE;AACvD,gCAAgC,WAAW,GAAG,OAAO;AACrD,gCAAgC,SAAS,GAAG,KAAK;AACjD,8BAA8B;AAC9B,6BAA6B,CAAC;AAC9B,4BAA4B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AAChE,0BAA0B;AAC1B,0BAA0B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAC/D,wBAAwB,CAAC,MAAM;AAC/B,0BAA0B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,0BAA0B,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;AACrD,4BAA4B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3D,4BAA4B,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChG,4BAA4B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC3D,4BAA4B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AACvH,8BAA8B,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC;AACxE,8BAA8B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,4BAA4B,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AAChI,8BAA8B,YAAY,CAAC,UAAU,EAAE;AACvD,gCAAgC,MAAM;AACtC,gCAAgC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,gCAAgC,MAAM,EAAE,KAAK;AAC7C,gCAAgC,IAAI,WAAW,GAAG;AAClD,kCAAkC,OAAO,WAAW;AACpD,gCAAgC,CAAC;AACjC,gCAAgC,IAAI,WAAW,CAAC,OAAO,EAAE;AACzD,kCAAkC,WAAW,GAAG,OAAO;AACvD,kCAAkC,SAAS,GAAG,KAAK;AACnD,gCAAgC;AAChC,+BAA+B,CAAC;AAChC,8BAA8B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AAClE,4BAA4B;AAC5B,4BAA4B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC3D,0BAA0B,CAAC,MAAM;AACjC,4BAA4B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5D,4BAA4B,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AACtD,8BAA8B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7D,8BAA8B,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtF,8BAA8B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACxH,8BAA8B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACjG,gCAAgC,IAAI,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;AAC1D,gCAAgC,YAAY,CAAC,UAAU,EAAE;AACzD,kCAAkC,MAAM;AACxC,kCAAkC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,kCAAkC,MAAM,EAAE,IAAI;AAC9C,kCAAkC,IAAI,WAAW,GAAG;AACpD,oCAAoC,OAAO,WAAW;AACtD,kCAAkC,CAAC;AACnC,kCAAkC,IAAI,WAAW,CAAC,OAAO,EAAE;AAC3D,oCAAoC,WAAW,GAAG,OAAO;AACzD,oCAAoC,SAAS,GAAG,KAAK;AACrD,kCAAkC;AAClC,iCAAiC,CAAC;AAClC,8BAA8B;AAC9B,8BAA8B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACnE,4BAA4B,CAAC,MAAM;AACnC,8BAA8B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9D,8BAA8B,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AACvD,gCAAgC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/D,gCAAgC,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnG,gCAAgC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AAC5H,gCAAgC,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AAC3H,kCAAkC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC;AAC5E,kCAAkC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AACzM,gCAAgC;AAChC,gCAAgC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACxE,8BAA8B,CAAC,MAAM;AACrC,gCAAgC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAChE,gCAAgC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,+CAA+C,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3J,8BAA8B;AAC9B,8BAA8B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7D,4BAA4B;AAC5B,4BAA4B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC3D,0BAA0B;AAC1B,0BAA0B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACzD,wBAAwB;AACxB,wBAAwB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvD,sBAAsB;AACtB,sBAAsB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrD,oBAAoB;AACpB,oBAAoB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnD,kBAAkB;AAClB,kBAAkB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACjD,gBAAgB;AAChB,gBAAgB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC/C,cAAc;AACd,cAAc,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7C,YAAY;AACZ,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC3C,UAAU;AACV,UAAU,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACzC,QAAQ;AACR,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,MAAM;AACN,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrC,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnC,EAAE;AACF,EAAE,GAAG;AACL,IAAI,SAAS,GAAG,IAAI;AACpB,IAAI,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC;AAC7C,IAAI,cAAc,CAAC,eAAe,CAAC;AACnC,EAAE,CAAC,QAAQ,CAAC,SAAS;AACrB,EAAE,cAAc,CAAC,SAAS,EAAE,eAAe,CAAC;AAC5C,EAAE,UAAU,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC;AACtC,EAAE,GAAG,EAAE;AACP;AACA,MAAM,OAAO,GAAG;AAChB,EAAE,IAAI,EAAE,eAAe;AACvB,EAAE,IAAI,EAAE;AACR,CAAC;AACD,SAAS,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE;AACzC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5B,EAAE,IAAI,EAAE;AACR,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;AAChC,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAChD,EAAE,IAAI,SAAS,GAAG,IAAI;AACtB,EAAE,IAAI,eAAe;AACrB,EAAE,SAAS,cAAc,CAAC,UAAU,EAAE;AACtC,IAAI,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxE,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnC,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE;AACvF,MAAM,IAAI,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC;AACpC,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,sCAAsC,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACrI,MAAM,YAAY,CAAC,UAAU,EAAE;AAC/B,QAAQ,MAAM;AACd,QAAQ,IAAI;AACZ,QAAQ,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC;AACvC,QAAQ,IAAI,WAAW,GAAG;AAC1B,UAAU,OAAO,WAAW;AAC5B,QAAQ,CAAC;AACT,QAAQ,IAAI,WAAW,CAAC,OAAO,EAAE;AACjC,UAAU,WAAW,GAAG,OAAO;AAC/B,UAAU,SAAS,GAAG,KAAK;AAC3B,QAAQ;AACR,OAAO,CAAC;AACR,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AAC1C,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnC,EAAE;AACF,EAAE,GAAG;AACL,IAAI,SAAS,GAAG,IAAI;AACpB,IAAI,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC;AAC7C,IAAI,cAAc,CAAC,eAAe,CAAC;AACnC,EAAE,CAAC,QAAQ,CAAC,SAAS;AACrB,EAAE,cAAc,CAAC,SAAS,EAAE,eAAe,CAAC;AAC5C,EAAE,UAAU,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC;AACtC,EAAE,GAAG,EAAE;AACP;AACA,MAAM,KAAK,GAAG;AACd,EAAE,IAAI,EAAE,eAAe;AACvB,EAAE,IAAI,EAAE;AACR,CAAC;AACD,SAAS,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE;AACnC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,EAAE,IAAI,EAAE;AACR,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO;AAC1B,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;AAC5B,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc;AAC1C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,EAAE,eAAe,SAAS,CAAC,KAAK,EAAE;AAClC,IAAI,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;AACnD,IAAI,IAAI,GAAG,MAAM;AACjB,EAAE;AACF,EAAE,SAAS,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE;AAC/C,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,6BAA6B,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,IAAI,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM;AAC5D,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACpC,EAAE;AACF,EAAE,IAAI,SAAS,GAAG,IAAI;AACtB,EAAE,IAAI,eAAe;AACrB,EAAE,SAAS,cAAc,CAAC,UAAU,EAAE;AACtC,IAAI,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AAClD,IAAI,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AACpD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,KAAK;AACrC,MAAM,UAAU,CAAC,KAAK,GAAG,CAAC,sBAAsB,CAAC;AACjD,IAAI,CAAC,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,6FAA6F,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,0HAA0H,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kLAAkL,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7f,IAAI,MAAM,CAAC,UAAU,CAAC;AACtB,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACzC,IAAI,UAAU,CAAC,UAAU,EAAE;AAC3B,MAAM,MAAM,EAAE,SAAS;AACvB,MAAM,UAAU,EAAE,QAAQ;AAC1B,MAAM,IAAI,MAAM,GAAG;AACnB,QAAQ,OAAO,OAAO,CAAC,SAAS;AAChC,MAAM,CAAC;AACP,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1B,QAAQ,OAAO,CAAC,SAAS,GAAG,OAAO;AACnC,QAAQ,SAAS,GAAG,KAAK;AACzB,MAAM,CAAC;AACP,MAAM,QAAQ,EAAE,CAAC,UAAU,KAAK;AAChC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,4FAA4F,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC7K,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,gHAAgH,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtK,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5B,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACrC,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7H,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACrD,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AAC1C,IAAI,CAAC,MAAM;AACX,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM;AACb,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,MAAM;AACN,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrC,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AACxC,IAAI,MAAM,CAAC,UAAU,CAAC;AACtB,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACzC,IAAI,UAAU,CAAC,UAAU,EAAE;AAC3B,MAAM,MAAM,EAAE,SAAS;AACvB,MAAM,UAAU,EAAE,QAAQ;AAC1B,MAAM,IAAI,MAAM,GAAG;AACnB,QAAQ,OAAO,OAAO,CAAC,UAAU;AACjC,MAAM,CAAC;AACP,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1B,QAAQ,OAAO,CAAC,UAAU,GAAG,OAAO;AACpC,QAAQ,SAAS,GAAG,KAAK;AACzB,MAAM,CAAC;AACP,MAAM,QAAQ,EAAE,CAAC,UAAU,KAAK;AAChC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,8EAA8E,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAChK,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,0IAA0I,CAAC,CAAC;AACrK,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC;AAClD,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,2CAA2C,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAClG,IAAI,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM;AAC5D,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AACnD,IAAI,CAAC,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,2FAA2F,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACvL,IAAI,MAAM,CAAC,UAAU,EAAE;AACvB,MAAM,IAAI,MAAM,GAAG;AACnB,QAAQ,OAAO,OAAO,CAAC,MAAM;AAC7B,MAAM,CAAC;AACP,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1B,QAAQ,OAAO,CAAC,MAAM,GAAG,OAAO;AAChC,QAAQ,SAAS,GAAG,KAAK;AACzB,MAAM;AACN,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnC,IAAI,UAAU,CAAC,UAAU,EAAE;AAC3B,MAAM,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AAC9E,MAAM,UAAU,EAAE,gBAAgB;AAClC,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,IAAI,MAAM,GAAG;AACnB,QAAQ,OAAO,OAAO,CAAC,MAAM;AAC7B,MAAM,CAAC;AACP,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1B,QAAQ,OAAO,CAAC,MAAM,GAAG,OAAO;AAChC,QAAQ,SAAS,GAAG,KAAK;AACzB,MAAM,CAAC;AACP,MAAM,QAAQ,EAAE,CAAC,UAAU,KAAK;AAChC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,qFAAqF,CAAC,CAAC;AACpH,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uFAAuF,CAAC,CAAC;AAClH,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE;AACvF,MAAM,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACvC,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,IAAI,aAAa,GAAG,kBAAkB,GAAG,eAAe,CAAC,CAAC,uBAAuB,CAAC,CAAC;AAC5L,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM;AAC9D,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,aAAa,GAAG,eAAe,GAAG;AACrE,SAAS,CAAC;AACV,MAAM,CAAC,CAAC;AACR,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;AACxJ,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM;AAC9D,QAAQ,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,cAAc,GAAG,cAAc,EAAE,CAAC;AACnF,MAAM,CAAC,CAAC;AACR,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;AACpC,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE;AACxB,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM;AACb,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oCAAoC,CAAC,CAAC;AACnE,MAAM;AACN,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACxG,MAAM,MAAM,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC;AACtD,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAQ,MAAM,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;AACnE,MAAM,CAAC,MAAM;AACb,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,+EAA+E,CAAC,CAAC;AAC9G,QAAQ,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM;AAClF,UAAU,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;AAChD,QAAQ,CAAC,CAAC;AACV,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,MAAM;AACN,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AAC5C,MAAM,UAAU,CAAC,UAAU,EAAE;AAC7B,QAAQ,MAAM,EAAE,CAAC,KAAK,KAAK;AAC3B,UAAU,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,MAAM,+BAA+B;AAClF,UAAU,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AACnC,UAAU,OAAO,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC;AACjD,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,IAAI,MAAM,GAAG;AACrB,UAAU,OAAO,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC;AACtD,QAAQ,CAAC;AACT,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE;AAC5B,UAAU,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO;AACzD,UAAU,SAAS,GAAG,KAAK;AAC3B,QAAQ,CAAC;AACT,QAAQ,QAAQ,EAAE,CAAC,UAAU,KAAK;AAClC,UAAU,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,0EAA0E,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvJ,QAAQ,CAAC;AACT,QAAQ,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAChC,OAAO,CAAC;AACR,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrC,MAAM,UAAU,CAAC,UAAU,EAAE;AAC7B,QAAQ,MAAM,EAAE,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACzG,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,IAAI,MAAM,GAAG;AACrB,UAAU,OAAO,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAC;AACxD,QAAQ,CAAC;AACT,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE;AAC5B,UAAU,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO;AAC3D,UAAU,SAAS,GAAG,KAAK;AAC3B,QAAQ,CAAC;AACT,QAAQ,QAAQ,EAAE,CAAC,UAAU,KAAK;AAClC,UAAU,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,qFAAqF,CAAC,CAAC;AACtH,QAAQ,CAAC;AACT,QAAQ,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAChC,OAAO,CAAC;AACR,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;AACpC,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,yCAAyC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACnC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uGAAuG,CAAC,CAAC;AAClI,IAAI,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AAC/F,MAAM,IAAI,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC;AAC3C,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,2CAA2C,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtJ,MAAM,IAAI,OAAO,CAAC,EAAE,IAAI,cAAc,CAAC,EAAE,EAAE;AAC3C,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,kDAAkD,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM;AACb,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,MAAM;AACN,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACtC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC5B,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oDAAoD,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM;AACb,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,MAAM;AACN,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1K,MAAM,MAAM,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,EAAE,EAAE,oBAAoB,CAAC;AACtE,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAC3C,MAAM,UAAU,CAAC,UAAU,EAAE;AAC7B,QAAQ,MAAM,EAAE,YAAY;AAC5B,UAAU,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;AAC3C,UAAU,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;AAClD,UAAU,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACvD,UAAU,IAAI,OAAO,CAAC,EAAE,IAAI,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG;AACzE,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,IAAI,MAAM,GAAG;AACrB,UAAU,OAAO,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;AAChD,QAAQ,CAAC;AACT,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE;AAC5B,UAAU,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO;AACnD,UAAU,SAAS,GAAG,KAAK;AAC3B,QAAQ,CAAC;AACT,QAAQ,QAAQ,EAAE,CAAC,UAAU,KAAK;AAClC,UAAU,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,qDAAqD,CAAC,CAAC;AACtF,QAAQ,CAAC;AACT,QAAQ,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAChC,OAAO,CAAC;AACR,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;AACpC,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,iEAAiE,CAAC,CAAC;AAC5F,IAAI,UAAU,CAAC,UAAU,EAAE;AAC3B,MAAM,MAAM,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AAC7E,MAAM,UAAU,EAAE,qBAAqB;AACvC,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,IAAI,MAAM,GAAG;AACnB,QAAQ,OAAO,OAAO,CAAC,YAAY,CAAC;AACpC,MAAM,CAAC;AACP,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1B,QAAQ,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO;AACvC,QAAQ,SAAS,GAAG,KAAK;AACzB,MAAM,CAAC;AACP,MAAM,QAAQ,EAAE,CAAC,UAAU,KAAK;AAChC,QAAQ,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,qDAAqD,CAAC,CAAC;AACpF,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,2EAA2E,CAAC,CAAC;AACtG,IAAI,WAAW,CAAC,UAAU,EAAE;AAC5B,MAAM,MAAM,EAAE,IAAI,CAAC,EAAE;AACrB,MAAM,IAAI,WAAW,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,WAAW;AAC/B,MAAM,CAAC;AACP,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,WAAW,GAAG,OAAO;AAClC,QAAQ,SAAS,GAAG,KAAK;AACzB,MAAM;AACN,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC9C,EAAE;AACF,EAAE,GAAG;AACL,IAAI,SAAS,GAAG,IAAI;AACpB,IAAI,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC;AAC7C,IAAI,cAAc,CAAC,eAAe,CAAC;AACnC,EAAE,CAAC,QAAQ,CAAC,SAAS;AACrB,EAAE,cAAc,CAAC,SAAS,EAAE,eAAe,CAAC;AAC5C,EAAE,GAAG,EAAE;AACP;;;;"}
@@ -4,14 +4,14 @@ import 'node:http';
4
4
  import 'node:https';
5
5
  import { Logger, levelText, allLogLevels } from 'logzen';
6
6
  import { join, resolve, dirname } from 'node:path/posix';
7
- import { c as capitalize, d as deepAssign, o as omit, p as pick } from './string-DCbyDSv6.js';
7
+ import { c as capitalize, d as deepAssign, o as omit, p as pick } from './string-DLbvtT1R.js';
8
8
  import 'node:child_process';
9
9
  import { homedir } from 'node:os';
10
10
  import { styleText } from 'node:util';
11
- import { _ as _unknown, a as _tuple, b as _array, $ as $ZodUnknown, c as $ZodArray, d as $ZodTuple, p as parse, e as parseAsync, l as literal, o as object, r as record, s as string, f as any, n as number, g as array, h as _enum, u as uuid, i as email, j as boolean, k as custom, m as looseObject, q as partialRecord, t as prettifyError, v as $ZodError, w as stringbool, x as date, y as url } from './index-C0x4afZE.js';
12
- import { serialize } from 'cookie';
11
+ import { _ as _unknown, a as _tuple, b as _array, $ as $ZodUnknown, c as $ZodArray, d as $ZodTuple, p as parse, e as parseAsync, o as object, s as string, l as literal, r as record, f as any, n as number, g as array, h as _enum, i as boolean, j as custom, k as date, u as url, m as email, q as uuid, t as looseObject, v as partialRecord, w as prettifyError, x as $ZodError, y as stringbool } from './index-CvHf_GW2.js';
13
12
  import { randomBytes, randomUUID } from 'node:crypto';
14
13
  import pg from 'pg';
14
+ import { serialize } from 'cookie';
15
15
  import * as webauthn from '@simplewebauthn/server';
16
16
  import { verifyRegistrationResponse, generateRegistrationOptions } from '@simplewebauthn/server';
17
17
  import { render } from 'svelte/server';
@@ -233,9 +233,29 @@ function prettyDate(date) {
233
233
  return `${date.getFullYear()} ${months[date.getMonth()]} ${_2(date.getDate())} ${_2(date.getHours())}:${_2(date.getMinutes())}:${_2(date.getSeconds())}.${date.getMilliseconds().toString().padStart(3, '0')}`;
234
234
  }
235
235
 
236
- function zAsyncFunction(schema) {
237
- return custom((fn) => schema.implementAsync(fn));
238
- }
236
+ var Permission;
237
+ (function (Permission) {
238
+ Permission[Permission["None"] = 0] = "None";
239
+ Permission[Permission["Read"] = 1] = "Read";
240
+ Permission[Permission["Comment"] = 2] = "Comment";
241
+ Permission[Permission["Edit"] = 3] = "Edit";
242
+ Permission[Permission["Manage"] = 5] = "Manage";
243
+ })(Permission || (Permission = {}));
244
+ ({
245
+ [Permission.None]: 'No Permissions',
246
+ [Permission.Read]: 'Reader',
247
+ [Permission.Comment]: 'Commenter',
248
+ [Permission.Edit]: 'Editor',
249
+ [Permission.Manage]: 'Manager',
250
+ });
251
+
252
+ const App = object({
253
+ id: string(),
254
+ name: string().optional(),
255
+ image: string().optional(),
256
+ icon: string().optional(),
257
+ });
258
+
239
259
  const transports = ['ble', 'cable', 'hybrid', 'internal', 'nfc', 'smart-card', 'usb'];
240
260
  const authenticatorAttachment = literal(['platform', 'cross-platform']).optional();
241
261
  const PasskeyRegistration = object({
@@ -269,24 +289,69 @@ const PasskeyAuthenticationResponse = object({
269
289
  clientExtensionResults: record(any(), any()),
270
290
  type: literal('public-key'),
271
291
  });
272
- const APIUserRegistration = object({
292
+ const PasskeyChangeable = object({ name: string() }).partial();
293
+
294
+ /**
295
+ * @internal
296
+ */
297
+ const preferenceSchemas = {
298
+ debug: boolean(),
299
+ };
300
+ /**
301
+ * @internal
302
+ */
303
+ const preferenceDefaults = {
304
+ debug: false,
305
+ };
306
+
307
+ const requestMethods = ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'HEAD', 'PATCH'];
308
+
309
+ function zAsyncFunction(schema) {
310
+ return custom((fn) => schema.implementAsync(fn));
311
+ }
312
+
313
+ const User = object({
314
+ id: uuid(),
315
+ name: string().min(1, 'Name is required').max(255, 'Name is too long'),
316
+ email: email(),
317
+ emailVerified: date().nullish(),
318
+ image: url().nullish(),
319
+ preferences: record(string(), any()),
320
+ roles: array(string()),
321
+ registeredAt: date(),
322
+ });
323
+ const userPublicFields = ['id', 'image', 'name', 'registeredAt', 'roles'];
324
+ const userProtectedFields = ['email', 'emailVerified', 'preferences'];
325
+ const UserChangeable = User.pick({
326
+ name: true,
327
+ email: true,
328
+ image: true,
329
+ preferences: true,
330
+ }).partial();
331
+ const UserRegistration = object({
273
332
  name: string().min(1).max(100),
274
333
  email: email(),
275
334
  userId: uuid(),
276
335
  response: PasskeyRegistration,
277
336
  });
278
- const PasskeyChangeable = object({ name: string() }).partial();
279
337
  const UserAuthOptions = object({ type: literal(['login', 'action']) });
280
338
  const LogoutSessions = object({
281
339
  id: array(uuid()).optional(),
282
340
  confirm_all: boolean().optional(),
283
341
  });
284
342
 
343
+ const apps = _unique('apps', new Map());
344
+ const appDisabledContent = {
345
+ head: '<title>App Disabled</title>',
346
+ body: '<h1>App Disabled</h1><p>This app is currently disabled.</p>',
347
+ };
348
+
285
349
  const PluginMetadata = looseObject({
286
350
  name: string(),
287
351
  version: string(),
288
352
  description: string().optional(),
289
353
  routes: string().optional(),
354
+ apps: array(App).optional(),
290
355
  });
291
356
  const hookNames = ['db_init', 'remove', 'db_wipe', 'clean'];
292
357
  const fn = custom(data => typeof data === 'function');
@@ -306,6 +371,11 @@ async function loadPlugin(specifier) {
306
371
  if (plugin.name.startsWith('#') || plugin.name.includes(' ')) {
307
372
  throw 'Invalid plugin name. Plugin names can not start with a hash or contain spaces.';
308
373
  }
374
+ for (const app of plugin.apps ?? []) {
375
+ if (apps.has(app.id))
376
+ throw new ReferenceError(`App with ID "${app.id}" already exists.`);
377
+ apps.set(app.id, app);
378
+ }
309
379
  plugins.add(plugin);
310
380
  output$1.debug(`Loaded plugin: ${plugin.name} ${plugin.version}`);
311
381
  }
@@ -354,6 +424,8 @@ const ConfigSchema = looseObject({
354
424
  })
355
425
  .partial(),
356
426
  debug: boolean(),
427
+ /** Whether to show a default home page for debugging */
428
+ debug_home: boolean(),
357
429
  log: looseObject({
358
430
  level: _enum(levelText),
359
431
  console: boolean(),
@@ -423,6 +495,7 @@ const config = _unique('config', {
423
495
  .default(false)
424
496
  .parseAsync(process.env.AXIUM_DEBUG)
425
497
  .catch(() => false),
498
+ debug_home: false,
426
499
  log: {
427
500
  console: true,
428
501
  level: 'info',
@@ -535,31 +608,10 @@ function findConfigPaths() {
535
608
  if (process.env.AXIUM_CONFIG)
536
609
  await loadConfig(process.env.AXIUM_CONFIG);
537
610
 
538
- const requestMethods = ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'HEAD', 'PATCH'];
539
-
540
- var version = "0.22.14";
611
+ var version = "0.23.1";
541
612
  var pkg = {
542
613
  version: version};
543
614
 
544
- const User = object({
545
- id: uuid(),
546
- name: string().min(1, 'Name is required').max(255, 'Name is too long'),
547
- email: email(),
548
- emailVerified: date().nullish(),
549
- image: url().nullish(),
550
- preferences: record(string(), any()),
551
- roles: array(string()),
552
- registeredAt: date(),
553
- });
554
- const userPublicFields = ['id', 'image', 'name', 'registeredAt', 'roles'];
555
- const userProtectedFields = ['email', 'emailVerified', 'preferences'];
556
- const UserChangeable = User.pick({
557
- name: true,
558
- email: true,
559
- image: true,
560
- preferences: true,
561
- }).partial();
562
-
563
615
  /// <reference types="./object-utils.d.ts" />
564
616
  function isUndefined(obj) {
565
617
  return typeof obj === 'undefined' || obj === undefined;
@@ -16504,90 +16556,6 @@ addEvent({
16504
16556
  noAutoSuspend: true,
16505
16557
  });
16506
16558
 
16507
- async function getUser(id) {
16508
- return await database.selectFrom('users').selectAll().where('id', '=', id).executeTakeFirstOrThrow();
16509
- }
16510
- const in30days = () => new Date(Date.now() + 2592000000);
16511
- const in10minutes = () => new Date(Date.now() + 600000);
16512
- async function createSession(userId, elevated = false) {
16513
- const session = {
16514
- id: randomUUID(),
16515
- userId,
16516
- token: randomBytes(64).toString('base64'),
16517
- expires: elevated ? in10minutes() : in30days(),
16518
- elevated,
16519
- created: new Date(),
16520
- };
16521
- await database.insertInto('sessions').values(session).execute();
16522
- await audit('new_session', userId, { id: session.id });
16523
- return session;
16524
- }
16525
- async function getSessionAndUser(token) {
16526
- const result = await database
16527
- .selectFrom('sessions')
16528
- .selectAll()
16529
- .select(userFromId)
16530
- .where('sessions.token', '=', token)
16531
- .where('sessions.expires', '>', new Date())
16532
- .executeTakeFirstOrThrow();
16533
- if (!result.user)
16534
- throw new Error('Session references non-existing user');
16535
- return result;
16536
- }
16537
- async function getSessions(userId) {
16538
- return await database.selectFrom('sessions').selectAll().where('userId', '=', userId).where('sessions.expires', '>', new Date()).execute();
16539
- }
16540
- /**
16541
- * Create a verification
16542
- * @param expires How long the token should be valid for in seconds
16543
- */
16544
- async function createVerification(role, userId, expires) {
16545
- const token = randomBytes(64).toString('base64url');
16546
- const verification = { userId, token, expires: new Date(Date.now() + expires * 1000), role };
16547
- await database.insertInto('verifications').values(verification).executeTakeFirstOrThrow();
16548
- setTimeout(() => {
16549
- void database.deleteFrom('verifications').where('verifications.token', '=', verification.token).execute();
16550
- }, expires * 1000);
16551
- return verification;
16552
- }
16553
- async function useVerification(role, userId, token) {
16554
- const query = database
16555
- .deleteFrom('verifications')
16556
- .where('verifications.token', '=', token)
16557
- .where('verifications.userId', '=', userId)
16558
- .where('verifications.role', '=', role);
16559
- return await query.returningAll().executeTakeFirst();
16560
- }
16561
- async function getPasskey(id) {
16562
- return await database.selectFrom('passkeys').selectAll().where('id', '=', id).executeTakeFirstOrThrow();
16563
- }
16564
- async function createPasskey(passkey) {
16565
- const result = await database.insertInto('passkeys').values(passkey).returningAll().executeTakeFirstOrThrow();
16566
- return result;
16567
- }
16568
- async function getPasskeysByUserId(userId) {
16569
- return await database.selectFrom('passkeys').selectAll().where('userId', '=', userId).execute();
16570
- }
16571
- async function checkAuthForUser(event, userId, sensitive = false) {
16572
- const token = getToken(event, sensitive);
16573
- if (!token)
16574
- throw error(401, 'Missing token');
16575
- const session = await getSessionAndUser(token).catch(withError('Invalid or expired session', 401));
16576
- if (session.user.isSuspended)
16577
- error(403, 'User is suspended');
16578
- if (session.userId !== userId) {
16579
- if (!session.user?.isAdmin)
16580
- error(403, 'User ID mismatch');
16581
- // Admins are allowed to manage other users.
16582
- const accessor = session.user;
16583
- session.user = await getUser(userId).catch(withError('Target user not found', 404));
16584
- return Object.assign(session, { accessor });
16585
- }
16586
- if (!session.elevated && sensitive)
16587
- error(403, 'This token can not be used for sensitive actions');
16588
- return Object.assign(session, { accessor: session.user });
16589
- }
16590
-
16591
16559
  function isResponseError(e) {
16592
16560
  return e instanceof Error && e.name === 'ResponseError' && typeof e.status === 'number';
16593
16561
  }
@@ -16692,11 +16660,89 @@ const noCacheHeaders = {
16692
16660
  Expires: '0',
16693
16661
  };
16694
16662
 
16695
- const apps = _unique('apps', new Map());
16696
- const appDisabledContent = {
16697
- head: '<title>App Disabled</title>',
16698
- body: '<h1>App Disabled</h1><p>This app is currently disabled.</p>',
16699
- };
16663
+ async function getUser(id) {
16664
+ return await database.selectFrom('users').selectAll().where('id', '=', id).executeTakeFirstOrThrow();
16665
+ }
16666
+ const in30days = () => new Date(Date.now() + 2592000000);
16667
+ const in10minutes = () => new Date(Date.now() + 600000);
16668
+ async function createSession(userId, elevated = false) {
16669
+ const session = {
16670
+ id: randomUUID(),
16671
+ userId,
16672
+ token: randomBytes(64).toString('base64'),
16673
+ expires: elevated ? in10minutes() : in30days(),
16674
+ elevated,
16675
+ created: new Date(),
16676
+ };
16677
+ await database.insertInto('sessions').values(session).execute();
16678
+ await audit('new_session', userId, { id: session.id });
16679
+ return session;
16680
+ }
16681
+ async function getSessionAndUser(token) {
16682
+ const result = await database
16683
+ .selectFrom('sessions')
16684
+ .selectAll()
16685
+ .select(userFromId)
16686
+ .where('sessions.token', '=', token)
16687
+ .where('sessions.expires', '>', new Date())
16688
+ .executeTakeFirstOrThrow();
16689
+ if (!result.user)
16690
+ throw new Error('Session references non-existing user');
16691
+ return result;
16692
+ }
16693
+ async function getSessions(userId) {
16694
+ return await database.selectFrom('sessions').selectAll().where('userId', '=', userId).where('sessions.expires', '>', new Date()).execute();
16695
+ }
16696
+ /**
16697
+ * Create a verification
16698
+ * @param expires How long the token should be valid for in seconds
16699
+ */
16700
+ async function createVerification(role, userId, expires) {
16701
+ const token = randomBytes(64).toString('base64url');
16702
+ const verification = { userId, token, expires: new Date(Date.now() + expires * 1000), role };
16703
+ await database.insertInto('verifications').values(verification).executeTakeFirstOrThrow();
16704
+ setTimeout(() => {
16705
+ void database.deleteFrom('verifications').where('verifications.token', '=', verification.token).execute();
16706
+ }, expires * 1000);
16707
+ return verification;
16708
+ }
16709
+ async function useVerification(role, userId, token) {
16710
+ const query = database
16711
+ .deleteFrom('verifications')
16712
+ .where('verifications.token', '=', token)
16713
+ .where('verifications.userId', '=', userId)
16714
+ .where('verifications.role', '=', role);
16715
+ return await query.returningAll().executeTakeFirst();
16716
+ }
16717
+ async function getPasskey(id) {
16718
+ return await database.selectFrom('passkeys').selectAll().where('id', '=', id).executeTakeFirstOrThrow();
16719
+ }
16720
+ async function createPasskey(passkey) {
16721
+ const result = await database.insertInto('passkeys').values(passkey).returningAll().executeTakeFirstOrThrow();
16722
+ return result;
16723
+ }
16724
+ async function getPasskeysByUserId(userId) {
16725
+ return await database.selectFrom('passkeys').selectAll().where('userId', '=', userId).execute();
16726
+ }
16727
+ async function checkAuthForUser(event, userId, sensitive = false) {
16728
+ const token = getToken(event, sensitive);
16729
+ if (!token)
16730
+ throw error(401, 'Missing token');
16731
+ const session = await getSessionAndUser(token).catch(withError('Invalid or expired session', 401));
16732
+ if (session.user.isSuspended)
16733
+ error(403, 'User is suspended');
16734
+ if (session.userId !== userId) {
16735
+ if (!session.user?.isAdmin)
16736
+ error(403, 'User ID mismatch');
16737
+ // Admins are allowed to manage other users.
16738
+ const accessor = session.user;
16739
+ session.user = await getUser(userId).catch(withError('Target user not found', 404));
16740
+ return Object.assign(session, { accessor });
16741
+ }
16742
+ if (!session.elevated && sensitive)
16743
+ error(403, 'This token can not be used for sensitive actions');
16744
+ return Object.assign(session, { accessor: session.user });
16745
+ }
16700
16746
 
16701
16747
  /**
16702
16748
  * @internal
@@ -16729,11 +16775,11 @@ function resolveRoute(event) {
16729
16775
  _routes: for (const route of routes.values()) {
16730
16776
  const params = {};
16731
16777
  // Split the path and route into parts, zipped together
16732
- const pathParts = pathname.split('/').filter(Boolean);
16778
+ const pathParts = pathname.split('/').filter(v => v);
16733
16779
  // Skips routes in disabled apps
16734
16780
  if (apps.has(pathParts[0]) && config.apps.disabled.includes(pathParts[0]))
16735
16781
  continue;
16736
- for (const routePart of route.path.split('/').filter(Boolean)) {
16782
+ for (const routePart of route.path.split('/').filter(v => v)) {
16737
16783
  const pathPart = pathParts.shift();
16738
16784
  if (!pathPart)
16739
16785
  continue _routes;
@@ -16789,7 +16835,7 @@ addRoute({
16789
16835
  for (const app of apps.values()) {
16790
16836
  if (config.apps.disabled.includes(app.id))
16791
16837
  continue;
16792
- result.push(pick(app, ['id', 'name', 'version', 'image', 'icon']));
16838
+ result.push(app);
16793
16839
  }
16794
16840
  return result;
16795
16841
  },
@@ -16867,7 +16913,7 @@ async function OPTIONS(event) {
16867
16913
  async function POST(event) {
16868
16914
  if (!config.allow_new_users)
16869
16915
  error(409, 'New user registration is disabled');
16870
- const { userId, email, name, response } = await parseBody(event, APIUserRegistration);
16916
+ const { userId, email, name, response } = await parseBody(event, UserRegistration);
16871
16917
  const existing = await database.selectFrom('users').selectAll().where('email', '=', email.toLowerCase()).executeTakeFirst();
16872
16918
  if (existing)
16873
16919
  error(409, 'Email already in use');
@@ -16931,35 +16977,7 @@ addRoute({
16931
16977
  },
16932
16978
  });
16933
16979
 
16934
- var Permission;
16935
- (function (Permission) {
16936
- Permission[Permission["None"] = 0] = "None";
16937
- Permission[Permission["Read"] = 1] = "Read";
16938
- Permission[Permission["Comment"] = 2] = "Comment";
16939
- Permission[Permission["Edit"] = 3] = "Edit";
16940
- Permission[Permission["Manage"] = 5] = "Manage";
16941
- })(Permission || (Permission = {}));
16942
- ({
16943
- [Permission.None]: 'No Permissions',
16944
- [Permission.Read]: 'Reader',
16945
- [Permission.Comment]: 'Commenter',
16946
- [Permission.Edit]: 'Editor',
16947
- [Permission.Manage]: 'Manager',
16948
- });
16949
-
16950
- /**
16951
- * @internal
16952
- */
16953
- const preferenceSchemas = {
16954
- debug: boolean(),
16955
- };
16956
- /**
16957
- * @internal
16958
- */
16959
- const preferenceDefaults = {
16960
- debug: false,
16961
- };
16962
-
16980
+ /** Register a new passkey for a new or existing user. */
16963
16981
  const challenges = new Map();
16964
16982
  const params = { id: uuid() };
16965
16983
  /**
@@ -17231,7 +17249,7 @@ function fillSvelteKitTemplate({ head, body }, env = {}, nonce = '') {
17231
17249
  */
17232
17250
  async function handleSvelteKit({ event, resolve, }) {
17233
17251
  const route = resolveRoute(event);
17234
- if (!route && event.url.pathname === '/' && config.debug)
17252
+ if (!route && event.url.pathname === '/' && config.debug_home)
17235
17253
  return new Response(null, { status: 303, headers: { Location: '/_axium/default' } });
17236
17254
  if (config.debug)
17237
17255
  console.log(styleText('blueBright', event.request.method.padEnd(7)), route ? route.path : event.url.pathname);
@@ -17272,4 +17290,4 @@ async function handleSvelteKit({ event, resolve, }) {
17272
17290
  await init();
17273
17291
 
17274
17292
  export { handleSvelteKit as handle };
17275
- //# sourceMappingURL=hooks.server-Dv3r7VGT.js.map
17293
+ //# sourceMappingURL=hooks.server-Cm-MXWdk.js.map