libre-webui 0.29.0 → 0.31.0

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 (261) hide show
  1. package/backend/dist/index.d.ts.map +1 -1
  2. package/backend/dist/index.js +24 -7
  3. package/backend/dist/index.js.map +1 -1
  4. package/backend/dist/persistence/postgresAutomationWebhooksMigration.d.ts +9 -0
  5. package/backend/dist/persistence/postgresAutomationWebhooksMigration.d.ts.map +1 -0
  6. package/backend/dist/persistence/postgresAutomationWebhooksMigration.js +38 -0
  7. package/backend/dist/persistence/postgresAutomationWebhooksMigration.js.map +1 -0
  8. package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -1
  9. package/backend/dist/persistence/postgresMigrationRegistry.js +4 -0
  10. package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -1
  11. package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -1
  12. package/backend/dist/persistence/postgresResourceRepositories.js +5 -0
  13. package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -1
  14. package/backend/dist/persistence/postgresWorkApprovalsMigration.d.ts +13 -0
  15. package/backend/dist/persistence/postgresWorkApprovalsMigration.d.ts.map +1 -0
  16. package/backend/dist/persistence/postgresWorkApprovalsMigration.js +69 -0
  17. package/backend/dist/persistence/postgresWorkApprovalsMigration.js.map +1 -0
  18. package/backend/dist/persistence/resourceTypes.d.ts +4 -0
  19. package/backend/dist/persistence/resourceTypes.d.ts.map +1 -1
  20. package/backend/dist/persistence/resourceTypes.js.map +1 -1
  21. package/backend/dist/persistence/sqliteMigrations.d.ts +3 -0
  22. package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -1
  23. package/backend/dist/persistence/sqliteMigrations.js +156 -2
  24. package/backend/dist/persistence/sqliteMigrations.js.map +1 -1
  25. package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -1
  26. package/backend/dist/persistence/sqliteResourceRepositories.js +7 -0
  27. package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -1
  28. package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -1
  29. package/backend/dist/persistence/sqliteToPostgresMigration.js +32 -1
  30. package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -1
  31. package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts +10 -1
  32. package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts.map +1 -1
  33. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js +85 -5
  34. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js.map +1 -1
  35. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts +10 -1
  36. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts.map +1 -1
  37. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js +67 -7
  38. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js.map +1 -1
  39. package/backend/dist/platform/workPersistence/types.d.ts +37 -0
  40. package/backend/dist/platform/workPersistence/types.d.ts.map +1 -1
  41. package/backend/dist/platform/workPersistence/types.js.map +1 -1
  42. package/backend/dist/routes/automations.d.ts.map +1 -1
  43. package/backend/dist/routes/automations.js +83 -1
  44. package/backend/dist/routes/automations.js.map +1 -1
  45. package/backend/dist/routes/ollama.d.ts.map +1 -1
  46. package/backend/dist/routes/ollama.js +64 -0
  47. package/backend/dist/routes/ollama.js.map +1 -1
  48. package/backend/dist/routes/plugins.d.ts.map +1 -1
  49. package/backend/dist/routes/plugins.js +90 -0
  50. package/backend/dist/routes/plugins.js.map +1 -1
  51. package/backend/dist/routes/work.d.ts.map +1 -1
  52. package/backend/dist/routes/work.js +83 -0
  53. package/backend/dist/routes/work.js.map +1 -1
  54. package/backend/dist/services/authService.d.ts +2 -0
  55. package/backend/dist/services/authService.d.ts.map +1 -1
  56. package/backend/dist/services/authService.js +2 -0
  57. package/backend/dist/services/authService.js.map +1 -1
  58. package/backend/dist/services/automationService.d.ts +13 -1
  59. package/backend/dist/services/automationService.d.ts.map +1 -1
  60. package/backend/dist/services/automationService.js +31 -0
  61. package/backend/dist/services/automationService.js.map +1 -1
  62. package/backend/dist/services/notificationService.d.ts.map +1 -1
  63. package/backend/dist/services/notificationService.js +1 -0
  64. package/backend/dist/services/notificationService.js.map +1 -1
  65. package/backend/dist/services/ollamaService.d.ts +12 -0
  66. package/backend/dist/services/ollamaService.d.ts.map +1 -1
  67. package/backend/dist/services/ollamaService.js +26 -0
  68. package/backend/dist/services/ollamaService.js.map +1 -1
  69. package/backend/dist/services/ollamaSettingsService.d.ts +10 -0
  70. package/backend/dist/services/ollamaSettingsService.d.ts.map +1 -0
  71. package/backend/dist/services/ollamaSettingsService.js +83 -0
  72. package/backend/dist/services/ollamaSettingsService.js.map +1 -0
  73. package/backend/dist/services/workAgentGuidance.d.ts +11 -0
  74. package/backend/dist/services/workAgentGuidance.d.ts.map +1 -1
  75. package/backend/dist/services/workAgentGuidance.js +16 -2
  76. package/backend/dist/services/workAgentGuidance.js.map +1 -1
  77. package/backend/dist/services/workAgentService.d.ts +56 -0
  78. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  79. package/backend/dist/services/workAgentService.js +467 -17
  80. package/backend/dist/services/workAgentService.js.map +1 -1
  81. package/backend/dist/services/workApprovalService.d.ts +67 -0
  82. package/backend/dist/services/workApprovalService.d.ts.map +1 -0
  83. package/backend/dist/services/workApprovalService.js +273 -0
  84. package/backend/dist/services/workApprovalService.js.map +1 -0
  85. package/backend/dist/services/workEventService.d.ts.map +1 -1
  86. package/backend/dist/services/workEventService.js +25 -0
  87. package/backend/dist/services/workEventService.js.map +1 -1
  88. package/backend/dist/services/workPolicyService.d.ts +4 -0
  89. package/backend/dist/services/workPolicyService.d.ts.map +1 -1
  90. package/backend/dist/services/workPolicyService.js +19 -0
  91. package/backend/dist/services/workPolicyService.js.map +1 -1
  92. package/backend/dist/services/workRuntimeShared.d.ts +2 -0
  93. package/backend/dist/services/workRuntimeShared.d.ts.map +1 -1
  94. package/backend/dist/services/workRuntimeShared.js.map +1 -1
  95. package/backend/dist/services/workTaskService.d.ts +3 -1
  96. package/backend/dist/services/workTaskService.d.ts.map +1 -1
  97. package/backend/dist/services/workTaskService.js +21 -4
  98. package/backend/dist/services/workTaskService.js.map +1 -1
  99. package/backend/dist/types/index.d.ts +3 -1
  100. package/backend/dist/types/index.d.ts.map +1 -1
  101. package/backend/dist/types/index.js.map +1 -1
  102. package/backend/dist/types/work.d.ts +32 -11
  103. package/backend/dist/types/work.d.ts.map +1 -1
  104. package/backend/dist/websocketServer.d.ts.map +1 -1
  105. package/backend/dist/websocketServer.js +14 -2
  106. package/backend/dist/websocketServer.js.map +1 -1
  107. package/backend/package.json +2 -2
  108. package/deploy/work-computer/Dockerfile +1 -0
  109. package/deploy/work-computer/tint2rc +1 -0
  110. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  111. package/frontend/dist/artifact-runtime/lucide-react.js +1 -1
  112. package/frontend/dist/artifact-runtime/mermaid.js +8 -8
  113. package/frontend/dist/artifact-runtime/papaparse.js +2 -2
  114. package/frontend/dist/artifact-runtime/plotly.js +371 -652
  115. package/frontend/dist/assets/index-B6xMZpzA.js +76 -0
  116. package/frontend/dist/assets/index-BjipfsCP.css +1 -0
  117. package/frontend/dist/index.html +28 -28
  118. package/frontend/dist/js/{ArtifactContainer-CTXxnWRo.js → ArtifactContainer-Bn6iJtaJ.js} +1 -1
  119. package/frontend/dist/js/{ArtifactDemoPage-CEYuIhJA.js → ArtifactDemoPage-BLF8Ok-o.js} +1 -1
  120. package/frontend/dist/js/{ArtifactSandboxFrame-DLOy2VOm.js → ArtifactSandboxFrame-Cs1Gu1WB.js} +1 -1
  121. package/frontend/dist/js/{ArtifactSlideOutPanel-DnTTc1VY.js → ArtifactSlideOutPanel-CuKq5cL0.js} +1 -1
  122. package/frontend/dist/js/AutomationModal-Dha4KgLI.js +1 -0
  123. package/frontend/dist/js/AutomationsPage-HcMCRV-D.js +1 -0
  124. package/frontend/dist/js/{AvatarUpload-DzL00yOL.js → AvatarUpload-CFrlSszY.js} +1 -1
  125. package/frontend/dist/js/{Button--pDOakZx.js → Button-CgN11mgY.js} +1 -1
  126. package/frontend/dist/js/{CalendarPage-Bls3TBeZ.js → CalendarPage-D_K-XrG9.js} +1 -1
  127. package/frontend/dist/js/ChannelsPage-D3CoImOT.js +1 -0
  128. package/frontend/dist/js/ChatPage-C0iBDbOq.js +14 -0
  129. package/frontend/dist/js/ConnectModels-D_ZbZQub.js +1 -0
  130. package/frontend/dist/js/{EvaluationsPage-DSgj9dT5.js → EvaluationsPage-DOJLpauA.js} +2 -2
  131. package/frontend/dist/js/FirstTimeSetup-DDIP_4Dd.js +1 -0
  132. package/frontend/dist/js/GalleryPage-C8U_F7Ns.js +1 -0
  133. package/frontend/dist/js/{HomePage-BebX3v-x.js → HomePage-B_aotoDU.js} +1 -1
  134. package/frontend/dist/js/LibreClawPage-cr2N6W00.js +1 -0
  135. package/frontend/dist/js/{Logo-BE9SvCC5.js → Logo-B7o7eaPU.js} +1 -1
  136. package/frontend/dist/js/{LogoMark-C8x1yyP3.js → LogoMark-D9g6ls0h.js} +1 -1
  137. package/frontend/dist/js/{ModelManagerModals-CpWAltRA.js → ModelManagerModals-C-J1d7GL.js} +1 -1
  138. package/frontend/dist/js/NotesPage-Bgr7R_Vm.js +3 -0
  139. package/frontend/dist/js/{PasswordStrengthMeter-Cdq2oQbc.js → PasswordStrengthMeter-DR-mGbLF.js} +1 -1
  140. package/frontend/dist/js/PersonasPage-C3D_6lIx.js +13 -0
  141. package/frontend/dist/js/{PluginUsagePage-jMrpL2Jb.js → PluginUsagePage-DK7MgSiu.js} +1 -1
  142. package/frontend/dist/js/RichMessageContent-7FxrZ4A8.js +1 -0
  143. package/frontend/dist/js/{RichMessageContent-CC9QZQKd.js → RichMessageContent-CQkLI7Dt.js} +1 -1
  144. package/frontend/dist/js/SettingsModal-CIV_Bgsf.js +19 -0
  145. package/frontend/dist/js/{SettingsToggle-C16gtVyi.js → SettingsToggle-Cw4OhW7B.js} +1 -1
  146. package/frontend/dist/js/ShareDialog-BCEVgtbN.js +1 -0
  147. package/frontend/dist/js/{SystemPage-Drd1neLN.js → SystemPage-BNVZtLe9.js} +1 -1
  148. package/frontend/dist/js/{UserManagementPage-CquciWKV.js → UserManagementPage-pPC_Svj9.js} +1 -1
  149. package/frontend/dist/js/WorkPage-Q33nIqkM.js +7 -0
  150. package/frontend/dist/js/{api-2DulPtq1.js → api-D-5hpGht.js} +3 -3
  151. package/frontend/dist/js/api-WR1CTYO5.js +1 -0
  152. package/frontend/dist/js/{appNavigation-DAGh98Yj.js → appNavigation-DfHbXBey.js} +1 -1
  153. package/frontend/dist/js/{appStore-Ci1X0yA-.js → appStore-B136FGdu.js} +2 -2
  154. package/frontend/dist/js/appVersion-Ck7dYiHe.js +1 -0
  155. package/frontend/dist/js/ar-Cq-nC6v9.js +2 -0
  156. package/frontend/dist/js/authStore-6AJLgQsD.js +1 -0
  157. package/frontend/dist/js/authStore-Ckz37pwu.js +4 -0
  158. package/frontend/dist/js/axios-CUerAKcc.js +1 -0
  159. package/frontend/dist/js/{babel-D7QYvEns.js → babel-8afoxhZ7.js} +1 -1
  160. package/frontend/dist/js/bn-BFSKytYs.js +2 -0
  161. package/frontend/dist/js/chatStore-Dpm3g_Ln.js +3 -0
  162. package/frontend/dist/js/classPrivateMethodInitSpec-DE0XIqc_.js +1 -0
  163. package/frontend/dist/js/config-DJwXAf8i.js +1 -0
  164. package/frontend/dist/js/cs-BKWXa629.js +2 -0
  165. package/frontend/dist/js/da-Cra_DJnV.js +2 -0
  166. package/frontend/dist/js/de-BQa6_UuE.js +2 -0
  167. package/frontend/dist/js/es-BBOHFrx1.js +2 -0
  168. package/frontend/dist/js/{estree-D7xT4AeP.js → estree-qxY7ACbu.js} +3 -3
  169. package/frontend/dist/js/{evaluationsApi-Cu5PH_qi.js → evaluationsApi-BKY-maUM.js} +1 -1
  170. package/frontend/dist/js/fr-C8kXs5c0.js +2 -0
  171. package/frontend/dist/js/hi-BEef4bjU.js +2 -0
  172. package/frontend/dist/js/{html-HvA9vEyn.js → html-B_cUU1Gi.js} +2 -2
  173. package/frontend/dist/js/id-Djipic7Y.js +2 -0
  174. package/frontend/dist/js/is-pazl6RLG.js +2 -0
  175. package/frontend/dist/js/it-DobPbTwl.js +2 -0
  176. package/frontend/dist/js/ja-DwYNaMNX.js +2 -0
  177. package/frontend/dist/js/ko-BQfXE7_o.js +2 -0
  178. package/frontend/dist/js/{markdown-DaF0SXNk.js → markdown-BAF0w-jL.js} +3 -3
  179. package/frontend/dist/js/{messageCodeStyles-DKq3DH1W.js → messageCodeStyles-CkxF6yil.js} +2 -2
  180. package/frontend/dist/js/ms-CkPQoE5T.js +2 -0
  181. package/frontend/dist/js/nl-X_QsDAtu.js +2 -0
  182. package/frontend/dist/js/pl-CK39gUsy.js +2 -0
  183. package/frontend/dist/js/{postcss-RCIJRrFm.js → postcss-B2vYq4-H.js} +1 -1
  184. package/frontend/dist/js/pt-C0dWyR_I.js +2 -0
  185. package/frontend/dist/js/{router-vendor-BGP0k6Y2.js → router-vendor-CIwPu612.js} +1 -1
  186. package/frontend/dist/js/ru-sNJkEz1G.js +2 -0
  187. package/frontend/dist/js/{standalone-BMD7E0jY.js → standalone-BqZmfuRy.js} +2 -2
  188. package/frontend/dist/js/sv-Bh-uxdF3.js +2 -0
  189. package/frontend/dist/js/{teamEventStream-C4u_py2D.js → teamEventStream-DUodK0-C.js} +1 -1
  190. package/frontend/dist/js/th-DPVtwZj2.js +2 -0
  191. package/frontend/dist/js/tr-BYNM_Tm7.js +2 -0
  192. package/frontend/dist/js/{ttsBatching-C9kQXFB1.js → ttsBatching-7_-p2nxR.js} +1 -1
  193. package/frontend/dist/js/{typescript-LOiqVRM1.js → typescript-DokwN-5Y.js} +1 -1
  194. package/frontend/dist/js/{ui-DUzqxWMk.js → ui-BK53RPmS.js} +2 -2
  195. package/frontend/dist/js/ui-vendor-CPdYrKhz.js +177 -0
  196. package/frontend/dist/js/uk-kvNBuYin.js +2 -0
  197. package/frontend/dist/js/{useChat-6yDWZSTz.js → useChat-Czg2p4Rr.js} +1 -1
  198. package/frontend/dist/js/useDictation-B2lYEYKn.js +1 -0
  199. package/frontend/dist/js/useQuery-ClAiNxQ7.js +1 -0
  200. package/frontend/dist/js/{useTranslation-DrnYb6Cx.js → useTranslation-C7GwbUQA.js} +1 -1
  201. package/frontend/dist/js/{utils-D9UstwTG.js → utils-nNyg0lfc.js} +1 -1
  202. package/frontend/dist/js/utils-vendor-CeUf_ngc.js +9 -0
  203. package/frontend/dist/js/vi-CmLoaP0K.js +2 -0
  204. package/frontend/dist/js/workApi-BoJb9aVF.js +1 -0
  205. package/frontend/dist/js/{workApi-BwDBwG62.js → workApi-CFH097y5.js} +3 -3
  206. package/frontend/dist/js/{yaml-CyhEdlt2.js → yaml-BXEpxPn2.js} +2 -2
  207. package/frontend/dist/js/zh-D2zvmvrj.js +2 -0
  208. package/frontend/dist/sw.js +7 -1
  209. package/package.json +5 -5
  210. package/frontend/dist/assets/index-O8rtJINp.css +0 -1
  211. package/frontend/dist/assets/index-f1s6QpC5.js +0 -93
  212. package/frontend/dist/js/AutomationModal-DB3lrK2K.js +0 -1
  213. package/frontend/dist/js/AutomationsPage-D3v0Cra1.js +0 -1
  214. package/frontend/dist/js/ChannelsPage-BnoCniNf.js +0 -1
  215. package/frontend/dist/js/ChatPage-BMcigJWr.js +0 -14
  216. package/frontend/dist/js/FirstTimeSetup-BRysXCjP.js +0 -1
  217. package/frontend/dist/js/GalleryPage-DUcM4dg0.js +0 -1
  218. package/frontend/dist/js/LibreClawPage-A37KF9_G.js +0 -1
  219. package/frontend/dist/js/ModelSelector-C1ipX-44.js +0 -1
  220. package/frontend/dist/js/NotesPage-CXSz7Hde.js +0 -3
  221. package/frontend/dist/js/PersonasPage-CiOBffF3.js +0 -13
  222. package/frontend/dist/js/RichMessageContent-CU6WTuOs.js +0 -1
  223. package/frontend/dist/js/SettingsModal-DP_wKehV.js +0 -19
  224. package/frontend/dist/js/ShareDialog-BW8iGd_i.js +0 -1
  225. package/frontend/dist/js/WorkPage-BgASwAGs.js +0 -6
  226. package/frontend/dist/js/api-BmIdrQfK.js +0 -1
  227. package/frontend/dist/js/appVersion-BRMnr50t.js +0 -1
  228. package/frontend/dist/js/ar-CpmN0TY8.js +0 -2
  229. package/frontend/dist/js/authStore-DIvsSaOt.js +0 -4
  230. package/frontend/dist/js/authStore-DoxafXFR.js +0 -1
  231. package/frontend/dist/js/axios-C8xWfUG8.js +0 -1
  232. package/frontend/dist/js/bn-BwrMg_Oh.js +0 -2
  233. package/frontend/dist/js/chatStore-DkpmZLOG.js +0 -3
  234. package/frontend/dist/js/classPrivateMethodInitSpec-DUpGnGHL.js +0 -1
  235. package/frontend/dist/js/config-Ckn9cand.js +0 -1
  236. package/frontend/dist/js/cs-f72Fnxz3.js +0 -2
  237. package/frontend/dist/js/da-qp8lOgkJ.js +0 -2
  238. package/frontend/dist/js/de-CpcLHr97.js +0 -2
  239. package/frontend/dist/js/es-gZHsxjG4.js +0 -2
  240. package/frontend/dist/js/fr-BY5aUofi.js +0 -2
  241. package/frontend/dist/js/hi-KCn9gIiT.js +0 -2
  242. package/frontend/dist/js/id-C7U6kS0J.js +0 -2
  243. package/frontend/dist/js/is-N9Ek-Usz.js +0 -2
  244. package/frontend/dist/js/it-CqaqWB8D.js +0 -2
  245. package/frontend/dist/js/ja-C5f9HAm1.js +0 -2
  246. package/frontend/dist/js/ko-BuoboDvb.js +0 -2
  247. package/frontend/dist/js/ms-Cu-UWc6j.js +0 -2
  248. package/frontend/dist/js/nl-nOUc4C_i.js +0 -2
  249. package/frontend/dist/js/pl-BKKwFhxj.js +0 -2
  250. package/frontend/dist/js/pt-B18-KYtS.js +0 -2
  251. package/frontend/dist/js/ru-DflEWNyb.js +0 -2
  252. package/frontend/dist/js/sv-CU-nPjr8.js +0 -2
  253. package/frontend/dist/js/th-dOxm2Hhl.js +0 -2
  254. package/frontend/dist/js/tr-7ThM4F8q.js +0 -2
  255. package/frontend/dist/js/ui-vendor-C0KwbTD4.js +0 -177
  256. package/frontend/dist/js/uk-Cl7Pk0Yf.js +0 -2
  257. package/frontend/dist/js/useQuery-CoWV2PmJ.js +0 -1
  258. package/frontend/dist/js/utils-vendor-DtsgPwcz.js +0 -9
  259. package/frontend/dist/js/vi-eljYUBOk.js +0 -2
  260. package/frontend/dist/js/workApi-uXUZSjsf.js +0 -1
  261. package/frontend/dist/js/zh-B0sinUfQ.js +0 -2
@@ -1,10 +1,10 @@
1
- import{_ as e,b as t,g as n,v as r,y as i}from"./router-vendor-BGP0k6Y2.js";import{t as a}from"./classPrivateMethodInitSpec-DUpGnGHL.js";var o,s,c,l,u,d,f,p=Object.defineProperty,m=(e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})},h={};m(h,{__debug:()=>mo,check:()=>fo,doc:()=>Ea,format:()=>uo,formatWithCursor:()=>lo,getSupportInfo:()=>po,util:()=>ja,version:()=>Aa});var g=(e,t)=>(n,r,...i)=>n|1&&r==null?void 0:(t.call(r)??r[e]).apply(r,i),_=String.prototype.replaceAll??function(e,t){return e.global?this.replace(e,t):this.split(e).join(t)},v=g(`replaceAll`,function(){if(typeof this==`string`)return _}),ee=class{diff(e,t,n={}){let r;typeof n==`function`?(r=n,n={}):`callback`in n&&(r=n.callback);let i=this.castInput(e,n),a=this.castInput(t,n),o=this.removeEmpty(this.tokenize(i,n)),s=this.removeEmpty(this.tokenize(a,n));return this.diffWithOptionsObj(o,s,n,r)}diffWithOptionsObj(e,t,n,r){let i=e=>{if(e=this.postProcess(e,n),r){setTimeout(function(){r(e)},0);return}return e},a=t.length,o=e.length,s=1,c=a+o;n.maxEditLength!=null&&(c=Math.min(c,n.maxEditLength));let l=n.timeout??1/0,u=Date.now()+l,d=[{oldPos:-1,lastComponent:void 0}],f=this.extractCommon(d[0],t,e,0,n);if(d[0].oldPos+1>=o&&f+1>=a)return i(this.buildValues(d[0].lastComponent,t,e));let p=-1/0,m=1/0,h=()=>{for(let r=Math.max(p,-s);r<=Math.min(m,s);r+=2){let s,c=d[r-1],l=d[r+1];c&&(d[r-1]=void 0);let u=!1;if(l){let e=l.oldPos-r;u=l&&0<=e&&e<a}let h=c&&c.oldPos+1<o;if(!u&&!h){d[r]=void 0;continue}if(s=!h||u&&c.oldPos<l.oldPos?this.addToPath(l,!0,!1,0,n):this.addToPath(c,!1,!0,1,n),f=this.extractCommon(s,t,e,r,n),s.oldPos+1>=o&&f+1>=a)return i(this.buildValues(s.lastComponent,t,e))||!0;d[r]=s,s.oldPos+1>=o&&(m=Math.min(m,r-1)),f+1>=a&&(p=Math.max(p,r+1))}s++};if(r)(function e(){setTimeout(function(){if(s>c||Date.now()>u)return r(void 0);h()||e()},0)})();else for(;s<=c&&Date.now()<=u;){let e=h();if(e)return e}}addToPath(e,t,n,r,i){let a=e.lastComponent;return a&&!i.oneChangePerToken&&a.added===t&&a.removed===n?{oldPos:e.oldPos+r,lastComponent:{count:a.count+1,added:t,removed:n,previousComponent:a.previousComponent}}:{oldPos:e.oldPos+r,lastComponent:{count:1,added:t,removed:n,previousComponent:a}}}extractCommon(e,t,n,r,i){let a=t.length,o=n.length,s=e.oldPos,c=s-r,l=0;for(;c+1<a&&s+1<o&&this.equals(n[s+1],t[c+1],i);)c++,s++,l++,i.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return l&&!i.oneChangePerToken&&(e.lastComponent={count:l,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=s,c}equals(e,t,n){return n.comparator?n.comparator(e,t):e===t||!!n.ignoreCase&&e.toLowerCase()===t.toLowerCase()}removeEmpty(e){let t=[];for(let n=0;n<e.length;n++)e[n]&&t.push(e[n]);return t}castInput(e,t){return e}tokenize(e,t){return Array.from(e)}join(e){return e.join(``)}postProcess(e,t){return e}get useLongestToken(){return!1}buildValues(e,t,n){let r=[],i;for(;e;)r.push(e),i=e.previousComponent,delete e.previousComponent,e=i;r.reverse();let a=r.length,o=0,s=0,c=0;for(;o<a;o++){let e=r[o];if(e.removed)e.value=this.join(n.slice(c,c+e.count)),c+=e.count;else{if(!e.added&&this.useLongestToken){let r=t.slice(s,s+e.count);r=r.map(function(e,t){let r=n[c+t];return r.length>e.length?r:e}),e.value=this.join(r)}else e.value=this.join(t.slice(s,s+e.count));s+=e.count,e.added||(c+=e.count)}}return r}},te=new class extends ee{tokenize(e){return e.slice()}join(e){return e}removeEmpty(e){return e}};function ne(e,t,n){return te.diff(e,t,n)}var re=()=>{},ie=`cr`,ae=`crlf`,oe=`lf`,se=`\r`,ce=`\r
1
+ import{_ as e,b as t,g as n,v as r,y as i}from"./router-vendor-CIwPu612.js";import{t as a}from"./classPrivateMethodInitSpec-DE0XIqc_.js";var o,s,c,l,u,d,f,p=Object.defineProperty,m=(e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})},h={};m(h,{__debug:()=>mo,check:()=>fo,doc:()=>Ea,format:()=>uo,formatWithCursor:()=>lo,getSupportInfo:()=>po,util:()=>ja,version:()=>Aa});var g=(e,t)=>(n,r,...i)=>n|1&&r==null?void 0:(t.call(r)??r[e]).apply(r,i),_=String.prototype.replaceAll??function(e,t){return e.global?this.replace(e,t):this.split(e).join(t)},v=g(`replaceAll`,function(){if(typeof this==`string`)return _}),ee=class{diff(e,t,n={}){let r;typeof n==`function`?(r=n,n={}):`callback`in n&&(r=n.callback);let i=this.castInput(e,n),a=this.castInput(t,n),o=this.removeEmpty(this.tokenize(i,n)),s=this.removeEmpty(this.tokenize(a,n));return this.diffWithOptionsObj(o,s,n,r)}diffWithOptionsObj(e,t,n,r){let i=e=>{if(e=this.postProcess(e,n),r){setTimeout(function(){r(e)},0);return}return e},a=t.length,o=e.length,s=1,c=a+o;n.maxEditLength!=null&&(c=Math.min(c,n.maxEditLength));let l=n.timeout??1/0,u=Date.now()+l,d=[{oldPos:-1,lastComponent:void 0}],f=this.extractCommon(d[0],t,e,0,n);if(d[0].oldPos+1>=o&&f+1>=a)return i(this.buildValues(d[0].lastComponent,t,e));let p=-1/0,m=1/0,h=()=>{for(let r=Math.max(p,-s);r<=Math.min(m,s);r+=2){let s,c=d[r-1],l=d[r+1];c&&(d[r-1]=void 0);let u=!1;if(l){let e=l.oldPos-r;u=l&&0<=e&&e<a}let h=c&&c.oldPos+1<o;if(!u&&!h){d[r]=void 0;continue}if(s=!h||u&&c.oldPos<l.oldPos?this.addToPath(l,!0,!1,0,n):this.addToPath(c,!1,!0,1,n),f=this.extractCommon(s,t,e,r,n),s.oldPos+1>=o&&f+1>=a)return i(this.buildValues(s.lastComponent,t,e))||!0;d[r]=s,s.oldPos+1>=o&&(m=Math.min(m,r-1)),f+1>=a&&(p=Math.max(p,r+1))}s++};if(r)(function e(){setTimeout(function(){if(s>c||Date.now()>u)return r(void 0);h()||e()},0)})();else for(;s<=c&&Date.now()<=u;){let e=h();if(e)return e}}addToPath(e,t,n,r,i){let a=e.lastComponent;return a&&!i.oneChangePerToken&&a.added===t&&a.removed===n?{oldPos:e.oldPos+r,lastComponent:{count:a.count+1,added:t,removed:n,previousComponent:a.previousComponent}}:{oldPos:e.oldPos+r,lastComponent:{count:1,added:t,removed:n,previousComponent:a}}}extractCommon(e,t,n,r,i){let a=t.length,o=n.length,s=e.oldPos,c=s-r,l=0;for(;c+1<a&&s+1<o&&this.equals(n[s+1],t[c+1],i);)c++,s++,l++,i.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return l&&!i.oneChangePerToken&&(e.lastComponent={count:l,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=s,c}equals(e,t,n){return n.comparator?n.comparator(e,t):e===t||!!n.ignoreCase&&e.toLowerCase()===t.toLowerCase()}removeEmpty(e){let t=[];for(let n=0;n<e.length;n++)e[n]&&t.push(e[n]);return t}castInput(e,t){return e}tokenize(e,t){return Array.from(e)}join(e){return e.join(``)}postProcess(e,t){return e}get useLongestToken(){return!1}buildValues(e,t,n){let r=[],i;for(;e;)r.push(e),i=e.previousComponent,delete e.previousComponent,e=i;r.reverse();let a=r.length,o=0,s=0,c=0;for(;o<a;o++){let e=r[o];if(e.removed)e.value=this.join(n.slice(c,c+e.count)),c+=e.count;else{if(!e.added&&this.useLongestToken){let r=t.slice(s,s+e.count);r=r.map(function(e,t){let r=n[c+t];return r.length>e.length?r:e}),e.value=this.join(r)}else e.value=this.join(t.slice(s,s+e.count));s+=e.count,e.added||(c+=e.count)}}return r}},te=new class extends ee{tokenize(e){return e.slice()}join(e){return e}removeEmpty(e){return e}};function ne(e,t,n){return te.diff(e,t,n)}var re=()=>{},ie=`cr`,ae=`crlf`,oe=`lf`,se=`\r`,ce=`\r
2
2
  `,le=`
3
3
  `,ue=le;function de(e){let t=e.indexOf(se);return t===-1?oe:e.charAt(t+1)===le?ae:ie}function fe(e){return e===ie?se:e===ae?ce:ue}var pe=new Map([[le,/\n/g],[se,/\r/g],[ce,/\r\n/g]]);function me(e,t){let n=pe.get(t);return e.match(n)?.length??0}var he=/\r\n?/g;function ge(e){return v(0,e,he,le)}var _e=Symbol.for(`comments`);function ve(e){return this[e<0?this.length+e:e]}var y=g(`at`,function(){if(Array.isArray(this)||typeof this==`string`)return ve}),b=`string`,x=`array`,S=`cursor`,C=`indent`,w=`align`,T=`trim`,E=`group`,D=`fill`,O=`if-break`,k=`indent-if-break`,A=`line-suffix`,j=`line-suffix-boundary`,M=`line`,N=`label`,P=`break-parent`,ye=new Set([S,C,w,T,E,D,O,k,A,j,M,N,P]);function be(e){let t=e.length;for(;t>0&&(e[t-1]===`\r`||e[t-1]===`
4
4
  `);)t--;return t<e.length?e.slice(0,t):e}function xe(e,t,n){if(!e.has(t)){let r=n(t);e.set(t,r)}return e.get(t)}function Se(e){if(typeof e==`string`)return b;if(Array.isArray(e))return x;if(!e)return;let{type:t}=e;if(ye.has(t))return t}var F=Se,Ce=e=>new Intl.ListFormat(`en-US`,{type:`disjunction`}).format(e);function we(e){let t=e===null?`null`:typeof e;if(t!==`string`&&t!==`object`)return`Unexpected doc '${t}',
5
5
  Expected it to be 'string' or 'object'.`;if(F(e))throw Error(`doc is valid.`);let n=Object.prototype.toString.call(e);if(n!==`[object Object]`)return`Unexpected doc '${n}'.`;let r=Ce([...ye].map(e=>`'${e}'`));return`Unexpected doc.type '${e.type}'.
6
6
  Expected it to be ${r}.`}var I=class extends Error{constructor(e){((...e)=>(super(...e),n(this,`name`,`InvalidDocError`),this))(we(e)),this.doc=e}},Te={};function Ee(e,t,n,r){let i=[e];for(;i.length>0;){let e=i.pop();if(e===Te){n(i.pop());continue}n&&i.push(e,Te);let a=F(e);if(!a)throw new I(e);if(t?.(e)!==!1)switch(a){case x:case D:{let t=a===x?e:e.parts;for(let e=t.length-1;e>=0;--e)i.push(t[e]);break}case O:i.push(e.flatContents,e.breakContents);break;case E:if(r&&e.expandedStates)for(let t=e.expandedStates.length,n=t-1;n>=0;--n)i.push(e.expandedStates[n]);else i.push(e.contents);break;case w:case C:case k:case N:case A:i.push(e.contents);break;case b:case S:case T:case j:case M:case P:break;default:throw new I(e)}}}var De=Ee;function Oe(e,t){if(typeof e==`string`)return t(e);let n=new Map;return r(e);function r(e){return xe(n,e,i)}function i(e){switch(F(e)){case x:return t(e.map(r));case D:return t({...e,parts:e.parts.map(r)});case O:return t({...e,breakContents:r(e.breakContents),flatContents:r(e.flatContents)});case E:{let{expandedStates:n,contents:i}=e;return n?(n=n.map(r),i=n[0]):i=r(i),t({...e,contents:i,expandedStates:n})}case w:case C:case k:case N:case A:return t({...e,contents:r(e.contents)});case b:case S:case T:case j:case M:case P:return t(e);default:throw new I(e)}}}function ke(e,t,n){let r=n,i=!1;function a(e){if(i)return!1;let n=t(e);n!==void 0&&(i=!0,r=n)}return De(e,a),r}function Ae(e){if(e.type===E&&e.break||e.type===M&&e.hard||e.type===P)return!0}function je(e){return ke(e,Ae,!1)}function Me(e){if(e.length>0){let t=y(0,e,-1);!t.expandedStates&&!t.break&&(t.break=`propagated`)}return null}function Ne(e){let t=new Set,n=[];function r(e){if(e.type===P&&Me(n),e.type===E){if(n.push(e),t.has(e))return!1;t.add(e)}}function i(e){e.type===E&&n.pop().break&&Me(n)}De(e,r,i,!0)}function Pe(e){return e.type===M&&!e.hard?e.soft?``:` `:e.type===O?e.flatContents:e}function Fe(e){return Oe(e,Pe)}function Ie(e){for(e=[...e];e.length>=2&&y(0,e,-2).type===M&&y(0,e,-1).type===P;)e.length-=2;if(e.length>0){let t=Le(y(0,e,-1));e[e.length-1]=t}return e}function Le(e){switch(F(e)){case C:case k:case E:case A:case N:{let t=Le(e.contents);return{...e,contents:t}}case O:return{...e,breakContents:Le(e.breakContents),flatContents:Le(e.flatContents)};case D:return{...e,parts:Ie(e.parts)};case x:return Ie(e);case b:return be(e);case w:case S:case T:case j:case M:case P:break;default:throw new I(e)}return e}function Re(e){return Le(Be(e))}function ze(e){switch(F(e)){case D:{let{parts:t}=e;if(t.every(e=>e===``))return``;if(t.length===1)return t[0];break}case E:if(!e.contents&&!e.id&&!e.break&&!e.expandedStates)return``;if(e.contents.type===E&&e.contents.id===e.id&&e.contents.break===e.break&&e.contents.expandedStates===e.expandedStates)return e.contents;break;case w:case C:case k:case A:if(!e.contents)return``;break;case O:if(!e.flatContents&&!e.breakContents)return``;break;case x:{let t=[];for(let n of e){if(!n)continue;let[e,...r]=Array.isArray(n)?n:[n];typeof e==`string`&&typeof y(0,t,-1)==`string`?t[t.length-1]+=e:t.push(e),t.push(...r)}return t.length===0?``:t.length===1?t[0]:t}case b:case S:case T:case j:case M:case N:case P:break;default:throw new I(e)}return e}function Be(e){return Oe(e,e=>ze(e))}function Ve(e,t=dt){return Oe(e,e=>typeof e==`string`?at(t,e.split(`
7
- `)):e)}function He(e){if(e.type===M)return!0}function Ue(e){return ke(e,He,!1)}function We(e,t){return e.type===N?{...e,contents:t(e.contents)}:t(e)}var L=re,Ge=re,Ke=re,qe=re;function Je(e){return L(e),{type:C,contents:e}}function R(e,t){return qe(e),L(t),{type:w,contents:t,n:e}}function Ye(e){return R(-1/0,e)}function Xe(e){return R({type:`root`},e)}function Ze(e){return R(-1,e)}function Qe(e,t,n){L(e);let r=e;if(t>0){for(let e=0;e<Math.floor(t/n);++e)r=Je(r);r=R(t%n,r),r=R(-1/0,r)}return r}var $e={type:P},z={type:S};function et(e){return Ke(e),{type:D,parts:e}}function tt(e,t={}){return L(e),Ge(t.expandedStates,!0),{type:E,id:t.id,contents:e,break:!!t.shouldBreak,expandedStates:t.expandedStates}}function nt(e,t){return tt(e[0],{...t,expandedStates:e})}function rt(e,t=``,n={}){return L(e),t!==``&&L(t),{type:O,breakContents:e,flatContents:t,groupId:n.groupId}}function it(e,t){return L(e),{type:k,contents:e,groupId:t.groupId,negate:t.negate}}function at(e,t){L(e),Ge(t);let n=[];for(let r=0;r<t.length;r++)r!==0&&n.push(e),n.push(t[r]);return n}function ot(e,t){return L(t),e?{type:N,label:e,contents:t}:t}var st={type:M},ct={type:M,soft:!0},lt={type:M,hard:!0},B=[lt,$e],ut={type:M,hard:!0,literal:!0},dt=[ut,$e];function ft(e){return L(e),{type:A,contents:e}}var pt={type:j},mt={type:T};function V(e){if(!e)return``;if(Array.isArray(e)){let t=[];for(let n of e)if(Array.isArray(n))t.push(...V(n));else{let e=V(n);e!==``&&t.push(e)}return t}return e.type===O?{...e,breakContents:V(e.breakContents),flatContents:V(e.flatContents)}:e.type===E?{...e,contents:V(e.contents),expandedStates:e.expandedStates?.map(V)}:e.type===D?{type:`fill`,parts:e.parts.map(V)}:e.contents?{...e,contents:V(e.contents)}:e}function ht(e){let t=Object.create(null),n=new Set;return r(V(e));function r(e,t,n){if(typeof e==`string`)return JSON.stringify(e);if(Array.isArray(e)){let t=e.map(r).filter(Boolean);return t.length===1?t[0]:`[${t.join(`, `)}]`}if(e.type===M){let r=n?.[t+1]?.type===P;return e.literal?r?`literalline`:`literallineWithoutBreakParent`:e.hard?r?`hardline`:`hardlineWithoutBreakParent`:e.soft?`softline`:`line`}if(e.type===P)return n?.[t-1]?.type===M&&n[t-1].hard?void 0:`breakParent`;if(e.type===T)return`trim`;if(e.type===C)return`indent(`+r(e.contents)+`)`;if(e.type===w)return e.n===-1/0?`dedentToRoot(`+r(e.contents)+`)`:e.n<0?`dedent(`+r(e.contents)+`)`:e.n.type===`root`?`markAsRoot(`+r(e.contents)+`)`:`align(`+JSON.stringify(e.n)+`, `+r(e.contents)+`)`;if(e.type===O)return`ifBreak(`+r(e.breakContents)+(e.flatContents?`, `+r(e.flatContents):``)+(e.groupId?(e.flatContents?``:`, ""`)+`, { groupId: ${i(e.groupId)} }`:``)+`)`;if(e.type===k){let t=[];e.negate&&t.push(`negate: true`),e.groupId&&t.push(`groupId: ${i(e.groupId)}`);let n=t.length>0?`, { ${t.join(`, `)} }`:``;return`indentIfBreak(${r(e.contents)}${n})`}if(e.type===E){let t=[];e.break&&e.break!==`propagated`&&t.push(`shouldBreak: true`),e.id&&t.push(`id: ${i(e.id)}`);let n=t.length>0?`, { ${t.join(`, `)} }`:``;return e.expandedStates?`conditionalGroup([${e.expandedStates.map(e=>r(e)).join(`,`)}]${n})`:`group(${r(e.contents)}${n})`}if(e.type===D)return`fill([${e.parts.map(e=>r(e)).join(`, `)}])`;if(e.type===A)return`lineSuffix(`+r(e.contents)+`)`;if(e.type===j)return`lineSuffixBoundary`;if(e.type===N)return`label(${JSON.stringify(e.label)}, ${r(e.contents)})`;if(e.type===S)return`cursor`;throw Error(`Unknown doc type `+e.type)}function i(e){if(typeof e!=`symbol`)return JSON.stringify(String(e));if(e in t)return t[e];let r=e.description||`symbol`;for(let i=0;;i++){let a=r+(i>0?` #${i}`:``);if(!n.has(a))return n.add(a),t[e]=`Symbol.for(${JSON.stringify(a)})`}}}var gt=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g,_t=12288,vt=65510,yt=[12288,12288,65281,65376,65504,65510],bt=4352,xt=262141,St=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141],Ct=(e,t)=>{let n=0,r=Math.floor(e.length/2)-1;for(;n<=r;){let i=Math.floor((n+r)/2),a=i*2;if(t<e[a])r=i-1;else if(t>e[a+1])n=i+1;else return!0}return!1},wt=19968,[Tt,Et]=Dt(St);function Dt(e){let t=e[0],n=e[1];for(let r=0;r<e.length;r+=2){let i=e[r],a=e[r+1];if(wt>=i&&wt<=a)return[i,a];a-i>n-t&&(t=i,n=a)}return[t,n]}var Ot=e=>e<_t||e>vt?!1:Ct(yt,e),kt=e=>e>=Tt&&e<=Et?!0:e<bt||e>xt?!1:Ct(St,e),At=/^(?:[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u2764\u27A1\u2934\u2935\u2B05-\u2B07]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF3\uDFF5\uDFF7]|\uD83D[\uDC3F\uDC41\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])$/,jt=e=>At.test(e),Mt=/[^\x20-\x7F]/;function Nt(e){if(!e)return 0;if(!Mt.test(e))return e.length;let t=0;e=e.replace(gt(),e=>(t+=jt(e)?1:2,``));for(let n of e){let e=n.codePointAt(0);e<=31||e>=127&&e<=159||e>=768&&e<=879||e>=65024&&e<=65039||(t+=Ot(e)||kt(e)?2:1)}return t}var Pt=Nt,Ft={type:0},It={type:1},Lt={value:``,length:0,queue:[],get root(){return Lt}};function Rt(e,t,n){let r=t.type===1?e.queue.slice(0,-1):[...e.queue,t],i=``,a=0,o=0,s=0;for(let e of r)switch(e.type){case 0:u(),n.useTabs?c(1):l(n.tabWidth);break;case 3:{let{string:t}=e;u(),i+=t,a+=t.length;break}case 2:{let{width:t}=e;o+=1,s+=t;break}default:throw Error(`Unexpected indent comment '${e.type}'.`)}return f(),{...e,value:i,length:a,queue:r};function c(e){i+=` `.repeat(e),a+=n.tabWidth*e}function l(e){i+=` `.repeat(e),a+=e}function u(){n.useTabs?d():f()}function d(){o>0&&c(o),p()}function f(){s>0&&l(s),p()}function p(){o=0,s=0}}function zt(e,t,n){if(!t)return e;if(t.type===`root`)return{...e,root:e};if(t===-1/0)return e.root;let r;return r=typeof t==`number`?t<0?It:{type:2,width:t}:{type:3,string:t},Rt(e,r,n)}function Bt(e,t){return Rt(e,Ft,t)}function Vt(e){let t=0;for(let n=e.length-1;n>=0;n--){let r=e[n];if(r===` `||r===` `)t++;else break}return t}function Ht(e){let t=Vt(e);return{text:t===0?e:e.slice(0,e.length-t),count:t}}var Ut=(o=new WeakMap,s=new WeakMap,c=new WeakMap,l=new WeakMap,u=new WeakMap,d=new WeakSet,class{constructor(){a(this,d),t(this,o,[]),t(this,s,``),t(this,c,0),t(this,l,[]),t(this,u,[])}markPosition(){if(e(l,this).length+e(u,this).length>=2)throw Error(`There are too many 'cursor' in doc.`);e(u,this).push(e(c,this)+e(s,this).length)}write(t){r(s,this,e(s,this)+t)}trim(){let{text:t,count:n}=Ht(e(s,this));return r(s,this,t),i(d,this,Wt).call(this),n}finish(){return i(d,this,Wt).call(this),{text:e(o,this).join(``),positions:e(l,this)}}});function Wt(){let t=e(s,this);t!==``&&(e(o,this).push(t),r(c,this,e(c,this)+t.length),r(s,this,``));for(let t of e(u,this))e(l,this).push(Math.min(t,e(c,this)));e(u,this).length=0}var H=Symbol(`MODE_BREAK`),U=Symbol(`MODE_FLAT`),Gt=Symbol(`DOC_FILL_PRINTED_LENGTH`);function Kt(e,t,n,r,i,a){if(n===1/0)return!0;let o=t.length,s=!1,c=[e],l=``;for(;n>=0;){if(c.length===0){if(o===0)return!0;c.push(t[--o]);continue}let{mode:e,doc:u}=c.pop(),d=F(u);switch(d){case b:u&&(s&&(l+=` `,--n,s=!1),l+=u,n-=Pt(u));break;case x:case D:{let t=d===x?u:u.parts,n=u[Gt]??0;for(let r=t.length-1;r>=n;r--)c.push({mode:e,doc:t[r]});break}case C:case w:case k:case N:c.push({mode:e,doc:u.contents});break;case T:{let{text:e,count:t}=Ht(l);l=e,n+=t;break}case E:{if(a&&u.break)return!1;let t=u.break?H:e,n=u.expandedStates&&t===H?y(0,u.expandedStates,-1):u.contents;c.push({mode:t,doc:n});break}case O:{let t=(u.groupId?i[u.groupId]||U:e)===H?u.breakContents:u.flatContents;t&&c.push({mode:e,doc:t});break}case M:if(e===H||u.hard)return!0;u.soft||(s=!0);break;case A:r=!0;break;case j:if(r)return!1}}return!1}function qt(e,t){let n=Object.create(null),r=t.printWidth,i=fe(t.endOfLine),a=0,o=[{indent:Lt,mode:H,doc:e}],s=!1,c=[],l=new Ut;for(Ne(e);o.length>0;){let{indent:e,mode:u,doc:d}=o.pop();switch(F(d)){case b:{let e=i===`
7
+ `)):e)}function He(e){if(e.type===M)return!0}function Ue(e){return ke(e,He,!1)}function We(e,t){return e.type===N?{...e,contents:t(e.contents)}:t(e)}var L=re,Ge=re,Ke=re,qe=re;function Je(e){return L(e),{type:C,contents:e}}function R(e,t){return qe(e),L(t),{type:w,contents:t,n:e}}function Ye(e){return R(-1/0,e)}function Xe(e){return R({type:`root`},e)}function Ze(e){return R(-1,e)}function Qe(e,t,n){L(e);let r=e;if(t>0){for(let e=0;e<Math.floor(t/n);++e)r=Je(r);r=R(t%n,r),r=R(-1/0,r)}return r}var $e={type:P},z={type:S};function et(e){return Ke(e),{type:D,parts:e}}function tt(e,t={}){return L(e),Ge(t.expandedStates,!0),{type:E,id:t.id,contents:e,break:!!t.shouldBreak,expandedStates:t.expandedStates}}function nt(e,t){return tt(e[0],{...t,expandedStates:e})}function rt(e,t=``,n={}){return L(e),t!==``&&L(t),{type:O,breakContents:e,flatContents:t,groupId:n.groupId}}function it(e,t){return L(e),{type:k,contents:e,groupId:t.groupId,negate:t.negate}}function at(e,t){L(e),Ge(t);let n=[];for(let r=0;r<t.length;r++)r!==0&&n.push(e),n.push(t[r]);return n}function ot(e,t){return L(t),e?{type:N,label:e,contents:t}:t}var st={type:M},ct={type:M,soft:!0},lt={type:M,hard:!0},B=[lt,$e],ut={type:M,hard:!0,literal:!0},dt=[ut,$e];function ft(e){return L(e),{type:A,contents:e}}var pt={type:j},mt={type:T};function V(e){if(!e)return``;if(Array.isArray(e)){let t=[];for(let n of e)if(Array.isArray(n))t.push(...V(n));else{let e=V(n);e!==``&&t.push(e)}return t}return e.type===O?{...e,breakContents:V(e.breakContents),flatContents:V(e.flatContents)}:e.type===E?{...e,contents:V(e.contents),expandedStates:e.expandedStates?.map(V)}:e.type===D?{type:`fill`,parts:e.parts.map(V)}:e.contents?{...e,contents:V(e.contents)}:e}function ht(e){let t=Object.create(null),n=new Set;return r(V(e));function r(e,t,n){if(typeof e==`string`)return JSON.stringify(e);if(Array.isArray(e)){let t=e.map(r).filter(Boolean);return t.length===1?t[0]:`[${t.join(`, `)}]`}if(e.type===M){let r=n?.[t+1]?.type===P;return e.literal?r?`literalline`:`literallineWithoutBreakParent`:e.hard?r?`hardline`:`hardlineWithoutBreakParent`:e.soft?`softline`:`line`}if(e.type===P)return n?.[t-1]?.type===M&&n[t-1].hard?void 0:`breakParent`;if(e.type===T)return`trim`;if(e.type===C)return`indent(`+r(e.contents)+`)`;if(e.type===w)return e.n===-1/0?`dedentToRoot(`+r(e.contents)+`)`:e.n<0?`dedent(`+r(e.contents)+`)`:e.n.type===`root`?`markAsRoot(`+r(e.contents)+`)`:`align(`+JSON.stringify(e.n)+`, `+r(e.contents)+`)`;if(e.type===O)return`ifBreak(`+r(e.breakContents)+(e.flatContents?`, `+r(e.flatContents):``)+(e.groupId?(e.flatContents?``:`, ""`)+`, { groupId: ${i(e.groupId)} }`:``)+`)`;if(e.type===k){let t=[];e.negate&&t.push(`negate: true`),e.groupId&&t.push(`groupId: ${i(e.groupId)}`);let n=t.length>0?`, { ${t.join(`, `)} }`:``;return`indentIfBreak(${r(e.contents)}${n})`}if(e.type===E){let t=[];e.break&&e.break!==`propagated`&&t.push(`shouldBreak: true`),e.id&&t.push(`id: ${i(e.id)}`);let n=t.length>0?`, { ${t.join(`, `)} }`:``;return e.expandedStates?`conditionalGroup([${e.expandedStates.map(e=>r(e)).join(`,`)}]${n})`:`group(${r(e.contents)}${n})`}if(e.type===D)return`fill([${e.parts.map(e=>r(e)).join(`, `)}])`;if(e.type===A)return`lineSuffix(`+r(e.contents)+`)`;if(e.type===j)return`lineSuffixBoundary`;if(e.type===N)return`label(${JSON.stringify(e.label)}, ${r(e.contents)})`;if(e.type===S)return`cursor`;throw Error(`Unknown doc type `+e.type)}function i(e){if(typeof e!=`symbol`)return JSON.stringify(String(e));if(e in t)return t[e];let r=e.description||`symbol`;for(let i=0;;i++){let a=r+(i>0?` #${i}`:``);if(!n.has(a))return n.add(a),t[e]=`Symbol.for(${JSON.stringify(a)})`}}}var gt=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g,_t=12288,vt=65510,yt=[12288,12288,65281,65376,65504,65510],bt=4352,xt=262141,St=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141],Ct=(e,t)=>{let n=0,r=Math.floor(e.length/2)-1;for(;n<=r;){let i=Math.floor((n+r)/2),a=i*2;if(t<e[a])r=i-1;else if(t>e[a+1])n=i+1;else return!0}return!1},wt=19968,[Tt,Et]=Dt(St);function Dt(e){let t=e[0],n=e[1];for(let r=0;r<e.length;r+=2){let i=e[r],a=e[r+1];if(wt>=i&&wt<=a)return[i,a];a-i>n-t&&(t=i,n=a)}return[t,n]}var Ot=e=>e<_t||e>vt?!1:Ct(yt,e),kt=e=>e>=Tt&&e<=Et?!0:e<bt||e>xt?!1:Ct(St,e),At=/^(?:[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u2764\u27A1\u2934\u2935\u2B05-\u2B07]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF3\uDFF5\uDFF7]|\uD83D[\uDC3F\uDC41\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])$/,jt=e=>At.test(e),Mt=/[^\x20-\x7F]/;function Nt(e){if(!e)return 0;if(!Mt.test(e))return e.length;let t=0;e=e.replace(gt(),e=>(t+=jt(e)?1:2,``));for(let n of e){let e=n.codePointAt(0);e<=31||e>=127&&e<=159||e>=768&&e<=879||e>=65024&&e<=65039||(t+=Ot(e)||kt(e)?2:1)}return t}var Pt=Nt,Ft={type:0},It={type:1},Lt={value:``,length:0,queue:[],get root(){return Lt}};function Rt(e,t,n){let r=t.type===1?e.queue.slice(0,-1):[...e.queue,t],i=``,a=0,o=0,s=0;for(let e of r)switch(e.type){case 0:u(),n.useTabs?c(1):l(n.tabWidth);break;case 3:{let{string:t}=e;u(),i+=t,a+=t.length;break}case 2:{let{width:t}=e;o+=1,s+=t;break}default:throw Error(`Unexpected indent comment '${e.type}'.`)}return f(),{...e,value:i,length:a,queue:r};function c(e){i+=` `.repeat(e),a+=n.tabWidth*e}function l(e){i+=` `.repeat(e),a+=e}function u(){n.useTabs?d():f()}function d(){o>0&&c(o),p()}function f(){s>0&&l(s),p()}function p(){o=0,s=0}}function zt(e,t,n){if(!t)return e;if(t.type===`root`)return{...e,root:e};if(t===-1/0)return e.root;let r;return r=typeof t==`number`?t<0?It:{type:2,width:t}:{type:3,string:t},Rt(e,r,n)}function Bt(e,t){return Rt(e,Ft,t)}function Vt(e){let t=0;for(let n=e.length-1;n>=0;n--){let r=e[n];if(r===` `||r===` `)t++;else break}return t}function Ht(e){let t=Vt(e);return{text:t===0?e:e.slice(0,e.length-t),count:t}}var Ut=(o=new WeakMap,s=new WeakMap,c=new WeakMap,l=new WeakMap,u=new WeakMap,d=new WeakSet,class{constructor(){a(this,d),t(this,o,[]),t(this,s,``),t(this,c,0),t(this,l,[]),t(this,u,[])}markPosition(){if(r(l,this).length+r(u,this).length>=2)throw Error(`There are too many 'cursor' in doc.`);r(u,this).push(r(c,this)+r(s,this).length)}write(t){e(s,this,r(s,this)+t)}trim(){let{text:t,count:n}=Ht(r(s,this));return e(s,this,t),i(d,this,Wt).call(this),n}finish(){return i(d,this,Wt).call(this),{text:r(o,this).join(``),positions:r(l,this)}}});function Wt(){let t=r(s,this);t!==``&&(r(o,this).push(t),e(c,this,r(c,this)+t.length),e(s,this,``));for(let e of r(u,this))r(l,this).push(Math.min(e,r(c,this)));r(u,this).length=0}var H=Symbol(`MODE_BREAK`),U=Symbol(`MODE_FLAT`),Gt=Symbol(`DOC_FILL_PRINTED_LENGTH`);function Kt(e,t,n,r,i,a){if(n===1/0)return!0;let o=t.length,s=!1,c=[e],l=``;for(;n>=0;){if(c.length===0){if(o===0)return!0;c.push(t[--o]);continue}let{mode:e,doc:u}=c.pop(),d=F(u);switch(d){case b:u&&(s&&(l+=` `,--n,s=!1),l+=u,n-=Pt(u));break;case x:case D:{let t=d===x?u:u.parts,n=u[Gt]??0;for(let r=t.length-1;r>=n;r--)c.push({mode:e,doc:t[r]});break}case C:case w:case k:case N:c.push({mode:e,doc:u.contents});break;case T:{let{text:e,count:t}=Ht(l);l=e,n+=t;break}case E:{if(a&&u.break)return!1;let t=u.break?H:e,n=u.expandedStates&&t===H?y(0,u.expandedStates,-1):u.contents;c.push({mode:t,doc:n});break}case O:{let t=(u.groupId?i[u.groupId]||U:e)===H?u.breakContents:u.flatContents;t&&c.push({mode:e,doc:t});break}case M:if(e===H||u.hard)return!0;u.soft||(s=!0);break;case A:r=!0;break;case j:if(r)return!1}}return!1}function qt(e,t){let n=Object.create(null),r=t.printWidth,i=fe(t.endOfLine),a=0,o=[{indent:Lt,mode:H,doc:e}],s=!1,c=[],l=new Ut;for(Ne(e);o.length>0;){let{indent:e,mode:u,doc:d}=o.pop();switch(F(d)){case b:{let e=i===`
8
8
  `?d:v(0,d,`
9
9
  `,i);e&&(l.write(e),o.length>0&&(a+=Pt(e)));break}case x:for(let t=d.length-1;t>=0;t--)o.push({indent:e,mode:u,doc:d[t]});break;case S:l.markPosition();break;case C:o.push({indent:Bt(e,t),mode:u,doc:d.contents});break;case w:o.push({indent:zt(e,d.n,t),mode:u,doc:d.contents});break;case T:a-=l.trim();break;case E:{let t=(function(){if(u===U&&!s)return{indent:e,mode:d.break?H:U,doc:d.contents};s=!1;let t=r-a,i=c.length>0,l={indent:e,mode:U,doc:d.contents};if(!d.break&&Kt(l,o,t,i,n))return l;if(!d.expandedStates)return{indent:e,mode:H,doc:d.contents};if(!d.break)for(let r=1;r<d.expandedStates.length-1;r++){let a={indent:e,mode:U,doc:d.expandedStates[r]};if(Kt(a,o,t,i,n))return a}return{indent:e,mode:H,doc:y(0,d.expandedStates,-1)}})();o.push(t),d.id&&(n[d.id]=t.mode);break}case D:{let t=r-a,i=d[Gt]??0,{parts:s}=d,l=s.length-i;if(l===0)break;let f=s[i+0],p=s[i+1],m={indent:e,mode:U,doc:f},h={indent:e,mode:H,doc:f},g=Kt(m,[],t,c.length>0,n,!0);if(l===1){g?o.push(m):o.push(h);break}let _={indent:e,mode:U,doc:p},v={indent:e,mode:H,doc:p};if(l===2){g?o.push(_,m):o.push(v,h);break}let ee=s[i+2],te={indent:e,mode:u,doc:{...d,[Gt]:i+2}},ne=Kt({indent:e,mode:U,doc:[f,p,ee]},[],t,c.length>0,n,!0);o.push(te),ne?o.push(_,m):g?o.push(v,m):o.push(v,h);break}case O:case k:{let t=d.groupId?n[d.groupId]:u;if(t===H){let t=d.type===O?d.breakContents:d.negate?d.contents:Je(d.contents);t&&o.push({indent:e,mode:u,doc:t})}if(t===U){let t=d.type===O?d.flatContents:d.negate?Je(d.contents):d.contents;t&&o.push({indent:e,mode:u,doc:t})}break}case A:c.push({indent:e,mode:u,doc:d.contents});break;case j:c.length>0&&o.push({indent:e,mode:u,doc:lt});break;case M:switch(u){case U:if(!d.hard){d.soft||(l.write(` `),a+=1);break}s=!0;case H:if(c.length>0){o.push({indent:e,mode:u,doc:d},...c.reverse()),c.length=0;break}d.literal?(l.write(i),a=0,e.root&&(e.root.value&&l.write(e.root.value),a=e.root.length)):(l.trim(),l.write(i+e.value),a=e.length)}break;case N:o.push({indent:e,mode:u,doc:d.contents});break;case P:break;default:throw new I(d)}o.length===0&&c.length>0&&(o.push(...c.reverse()),c.length=0)}let{text:u,positions:d}=l.finish();if(d.length!==2)return{formatted:u};let[f,p]=d;return{formatted:u,cursorNodeStart:f,cursorNodeText:u.slice(f,p)}}function Jt(e,t,n=0){let r=0;for(let i=n;i<e.length;++i)e[i]===` `?r=r+t-r%t:r++;return r}var Yt=Jt,Xt=(f=new WeakSet,class{constructor(e){a(this,f),this.stack=[e]}get key(){let{stack:e,siblings:t}=this;return y(0,e,t===null?-2:-4)??null}get index(){return this.siblings===null?null:y(0,this.stack,-2)}get node(){return y(0,this.stack,-1)}get parent(){return this.getNode(1)}get grandparent(){return this.getNode(2)}get isInArray(){return this.siblings!==null}get siblings(){let{stack:e}=this,t=y(0,e,-3);return Array.isArray(t)?t:null}get next(){let{siblings:e}=this;return e===null?null:e[this.index+1]}get previous(){let{siblings:e}=this;return e===null?null:e[this.index-1]}get isFirst(){return this.index===0}get isLast(){let{siblings:e,index:t}=this;return e!==null&&t===e.length-1}get isRoot(){return this.stack.length===1}get root(){return this.stack[0]}get ancestors(){return[...i(f,this,Qt).call(this)]}getName(){let{stack:e}=this,{length:t}=e;return t>1?y(0,e,-2):null}getValue(){return y(0,this.stack,-1)}getNode(e=0){let t=i(f,this,Zt).call(this,e);return t===-1?null:this.stack[t]}getParentNode(e=0){return this.getNode(e+1)}call(e,...t){let{stack:n}=this,{length:r}=n,i=y(0,n,-1);for(let e of t)i=i?.[e],n.push(e,i);try{return e(this)}finally{n.length=r}}callParent(e,t=0){let n=i(f,this,Zt).call(this,t+1),r=this.stack.splice(n+1);try{return e(this)}finally{this.stack.push(...r)}}each(e,...t){let{stack:n}=this,{length:r}=n,i=y(0,n,-1);for(let e of t)i=i[e],n.push(e,i);try{for(let t=0;t<i.length;++t)n.push(t,i[t]),e(this,t,i),n.length-=2}finally{n.length=r}}map(e,...t){let n=[];return this.each((t,r,i)=>{n[r]=e(t,r,i)},...t),n}match(...e){let t=this.stack.length-1,n=null,r=this.stack[t--];for(let i of e){if(r===void 0)return!1;let e=null;if(typeof n==`number`&&(e=n,n=this.stack[t--],r=this.stack[t--]),i&&!i(r,n,e))return!1;n=this.stack[t--],r=this.stack[t--]}return!0}findAncestor(e){for(let t of i(f,this,Qt).call(this))if(e(t))return t}hasAncestor(e){for(let t of i(f,this,Qt).call(this))if(e(t))return!0;return!1}});function Zt(e){let{stack:t}=this;for(let n=t.length-1;n>=0;n-=2)if(!Array.isArray(t[n])&&--e<0)return n;return-1}function*Qt(){let{stack:e}=this;for(let t=e.length-3;t>=0;t-=2){let n=e[t];Array.isArray(n)||(yield n)}}function $t(e){return Array.isArray(e)&&e.length>0}var en=$t;function tn(e){return typeof e==`object`&&!!e}var nn=tn;function W(e){return(t,n,r)=>{if(n===!1)return!1;let i=!!r?.backwards,{length:a}=t,o=n;for(;o>=0&&o<a;){let n=t.charAt(o);if(e instanceof RegExp){if(!e.test(n))return o}else if(!e.includes(n))return o;i?o--:o++}return o===-1||o===a?o:!1}}var rn=W(/\s/),G=W(` `),an=W(`,; `),on=W(/[^\n\r]/),sn=e=>e===`
10
10
  `||e===`\r`||e===`\u2028`||e===`\u2029`;function cn(e,t,n){if(t===!1)return!1;let r=!!n?.backwards,i=e.charAt(t);if(r){if(e.charAt(t-1)===`\r`&&i===`
@@ -0,0 +1,2 @@
1
+ var e={common:{loading:`Laddar...`,save:`Spara`,saving:`Sparar...`,cancel:`Avbryt`,delete:`Radera`,edit:`Redigera`,close:`Stäng`,back:`Tillbaka`,next:`Nästa`,confirm:`Bekräfta`,error:`Fel`,success:`Lyckades`,warning:`Varning`,or:`eller`,optional:`valfritt`,enabled:`Aktiverad`,disabled:`Inaktiverad`,on:`På`,off:`Av`,yes:`Ja`,no:`Nej`,search:`Sök`,noResults:`Inga resultat hittades`,retry:`Försök igen`,refresh:`Uppdatera`,download:`Ladda ner`,upload:`Ladda upp`,export:`Exportera`,import:`Importera`,reset:`Återställ`,apply:`Tillämpa`,clear:`Rensa`,all:`Alla`,none:`Ingen`,default:`Standard`,custom:`Anpassad`,remove:`Ta bort`,home:`Hem`,more:`Mer`},brand:{name:`Libre WebUI`,shortName:`Libre`},appInitialization:{ollamaUnavailable:`Ollama-tjänsten är inte tillgänglig. Pluginmodeller kan fortfarande användas.`,backendConnectionFailed:`Det gick inte att ansluta till backendtjänsten`},auth:{login:{title:`Välkommen tillbaka`,subtitle:`Logga in på ditt konto för att fortsätta`,username:`Användarnamn`,usernamePlaceholder:`Ange ditt användarnamn`,password:`Lösenord`,passwordPlaceholder:`Ange ditt lösenord`,signIn:`Logga in`,signingIn:`Loggar in...`,noAccount:`Har du inget konto?`,signUpHere:`Registrera dig här`,loginSuccess:`Inloggningen lyckades!`,loginFailed:`Inloggningen misslyckades`,checkCredentials:`Inloggningen misslyckades. Kontrollera dina uppgifter.`,approvalPending:`Ditt konto väntar på administratörsgodkännande.`,enterBoth:`Ange både användarnamn och lösenord`,githubSuccess:`GitHub-inloggningen lyckades!`,githubFailed:`GitHub-autentiseringen misslyckades`,githubVerifyFailed:`Kunde inte verifiera GitHub-autentiseringen`,verificationFailed:`Säkerhetsverifieringen misslyckades. Uppdatera sidan och försök igen.`},signup:{title:`Skapa konto`,subtitle:`Registrera ett nytt konto`,username:`Användarnamn`,usernamePlaceholder:`Välj ett användarnamn`,email:`E-post`,emailPlaceholder:`din@epost.se`,password:`Lösenord`,passwordPlaceholder:`Välj ett lösenord`,confirmPassword:`Bekräfta lösenord`,confirmPasswordPlaceholder:`Bekräfta ditt lösenord`,createAccount:`Skapa konto`,creatingAccount:`Skapar konto...`,hasAccount:`Har du redan ett konto?`,signInHere:`Logga in här`,signupSuccess:`Kontot skapades!`,approvalPending:`Registrering mottagen. En administratör måste godkänna ditt konto.`,awaitingApproval:`Väntar på godkännande`,awaitingApprovalDescription:`Ditt konto har skapats, men en administratör måste aktivera det innan du kan logga in.`,backToSignIn:`Tillbaka till inloggning`,signupFailed:`Registreringen misslyckades`,tryAgain:`Registreringen misslyckades. Försök igen.`,usernameRequired:`Användarnamn och lösenord krävs`,passwordMismatch:`Lösenorden matchar inte`},logout:{button:`Logga ut`,success:`Utloggningen lyckades`},oauth:{continueWith:`Fortsätt med {{provider}}`,connectingTo:`Ansluter till {{provider}}...`,github:`GitHub`,huggingFace:`Hugging Face`,loginSuccess:`OAuth-inloggningen lyckades!`,completionFailed:`Det gick inte att slutföra OAuth-autentiseringen`,verificationFailed:`Verifieringen av OAuth-autentiseringen misslyckades`,authenticationFailed:`OAuth-autentiseringen misslyckades`},checkingAuth:`Kontrollerar autentisering...`,welcome:`Välkommen`,noEmail:`Ingen e-post angiven`,role:`Roll`,id:`ID`,userId:`Användar-ID`,signInDescription:`Logga in med ditt GitHub-konto för att fortsätta`,signInWithGitHub:`Logga in med GitHub`,jwtActive:`JWT-autentisering aktiv`,jwtDescription:`JWT-baserad autentisering med GitHub OAuth`,github:`GitHub`,provider:`Leverantör`,tagline:`Din AI-stack bör svara dig.`,selfHosted:`Egenhostad · Apache 2.0`,highlights:{local:{title:`Lokalt först`,body:`Dina konversationer och filer stannar på maskinen du kör detta på.`},providers:{title:`Valfri leverantör`,body:`Lokala modeller via Ollama, plus de fjärrleverantörer du väljer att lägga till.`},work:{title:`Isolerat arbete`,body:`Ge en modell en sandlådead arbetsyta med filer, en terminal och en förhandsgranskning.`}},oidc:{defaultProviderName:`Enkel inloggning`},mfa:{sectionTitle:`Tvåfaktorsautentisering`,sectionDescription:`Skydda ditt konto med en autentiseringsapp och passnycklar.`,totpTitle:`Autentiseringsapp`,totpEnabledHint:`Aktiverad. Oanvända återställningskoder: {{count}}`,totpDisabledHint:`Lägg till ett andra steg vid lösenordsinloggning med en engångskod.`,enableButton:`Aktivera`,disableButton:`Inaktivera`,activateButton:`Bekräfta`,regenerateCodes:`Nya återställningskoder`,confirmWithCode:`Bekräfta med en kod från din app eller en återställningskod`,enabled:`Tvåfaktorsautentisering är aktiverad.`,disabled:`Tvåfaktorsautentisering är inaktiverad.`,invalidCode:`Koden är inte giltig.`,enrollFailed:`Det gick inte att starta konfigurationen.`,challengeExpired:`Inloggningsutmaningen gick ut. Logga in igen.`,setupTitle:`Ställ in tvåfaktorsautentisering`,setupSubtitle:`Den här instansen kräver ett andra inloggningssteg. Lägg till hemligheten i din autentiseringsapp för att fortsätta.`,verifyTitle:`Ange din kod`,verifyHint:`Ange den 6-siffriga koden från din autentiseringsapp eller en återställningskod.`,secretHint:`Lägg till denna hemlighet i din autentiseringsapp och bekräfta med den aktuella koden.`,openAuthenticator:`Öppna i autentiseringsapp`,codeLabel:`6-siffrig kod`,codeOrRecoveryLabel:`Kod eller återställningskod`,codePlaceholder:`123456`,verifyButton:`Verifiera`,backToSignIn:`Tillbaka till inloggning`,recoveryCodesTitle:`Återställningskoder`,recoveryCodesHint:`Förvara koderna på en säker plats. Varje kod ger en inloggning om du förlorar din autentiseringsapp.`,recoveryCodesSaved:`Jag har sparat mina återställningskoder`,recoveryCodesRegenerated:`Nya återställningskoder skapade. De gamla fungerar inte längre.`},passkeys:{sectionTitle:`Passnycklar`,sectionDescription:`Logga in utan lösenord med enhetens skärmlås eller en säkerhetsnyckel.`,addButton:`Lägg till passnyckel`,empty:`Inga passnycklar ännu.`,unnamed:`Passnyckel`,createdAt:`Tillagd`,lastUsedAt:`Senast använd`,removeButton:`Ta bort passnyckel`,registered:`Passnyckel tillagd.`,registerFailed:`Passnyckeln kunde inte läggas till.`,removed:`Passnyckel borttagen.`,removeFailed:`Passnyckeln kunde inte tas bort.`,signInButton:`Logga in med passnyckel`,signInFailed:`Inloggning med passnyckel misslyckades.`}},setup:{welcome:{title:`Välkommen till Libre WebUI`,subtitle:`Låt oss komma igång`,description:`Konfigurera din Libre WebUI-instans i några enkla steg`,createAdmin:`Skapa administratörskonto`,features:{secure:{title:`Säker och privat`,description:`Dina konversationer stannar på din enhet`},fast:{title:`Snabb och responsiv`,description:`Optimerad för hastighet och prestanda`},openSource:{title:`Öppen källkod`,description:`Fri och öppen mjukvara`}}},admin:{title:`Skapa administratörskonto`,subtitle:`Administratörskonfiguration`,description:`Skapa det första administratörskontot för din Libre WebUI-instans`,usernamePlaceholder:`Ange administratörens användarnamn`,passwordPlaceholder:`Ange lösenord (minst 12 tecken)`,confirmPlaceholder:`Bekräfta ditt lösenord`,creating:`Skapar...`,createAdmin:`Skapa administratör`,success:`Administratörskontot skapades!`,failed:`Kunde inte skapa administratörskonto`,approvalUnexpected:`Den initiala administratören kunde inte aktiveras. Försök igen.`,fillAllFields:`Fyll i alla fält`,note:`Detta blir det primära administratörskontot för din Libre WebUI-instans`},encryptionKey:{title:`Spara din krypteringsnyckel`,subtitle:`Viktigt: Spara denna nyckel`,description:`Denna krypteringsnyckel skyddar dina känsliga data. Förvara den säkert - du behöver den om du någonsin behöver återställa din databas.`,warning:`Varning`,warningText:`Om du förlorar denna nyckel och behöver återställa din databas kommer din krypterade data (API-nycklar, inställningar) att vara oåterkalleligt förlorad.`,label:`Din krypteringsnyckel`,loading:`Laddar...`,copyToClipboard:`Kopiera till urklipp`,copied:`Krypteringsnyckeln kopierades till urklipp!`,copyFailed:`Kunde inte kopiera nyckeln till urklipp`,envNote:`Denna nyckel sparas också i din backend/.env-fil som ENCRYPTION_KEY`,acknowledgment:`Jag har sparat min krypteringsnyckel på ett säkert ställe och förstår att förlust av den kan resultera i dataförlust.`,confirmRequired:`Bekräfta att du har sparat krypteringsnyckeln`,continue:`Fortsätt till Libre WebUI`},connectModels:{title:`Anslut dina modeller`,subtitle:`Lokalt eller i molnet — välj det du redan använder. Du kan alltid ändra det här senare.`}},chat:{greeting:{morning:`God morgon`,afternoon:`God eftermiddag`,evening:`God kväll`,night:`God natt`},followUp:`Uppföljning`,welcome:{helpToday:`Vad kan jag hjälpa till med idag?`,helpTonight:`Vad kan jag hjälpa till med ikväll?`,variety:{create:{title:`Vad ska vi skapa?`,subtitle:`Börja med en tanke, en skiss eller ett envist problem.`},explore:{title:`Var ska vi börja?`,subtitle:`Ta med frågan som du ständigt återkommer till.`},imagine:{title:`Vad föreställer du dig?`,subtitle:`Vi kan forma det tillsammans.`},focus:{title:`Vad förtjänar din uppmärksamhet?`,subtitle:`Låt oss göra nästa steg tydligt.`},untangle:{title:`Var sitter knuten?`,subtitle:`Ge mig den röriga versionen först.`},momentum:{title:`Redo när du är.`,subtitle:`Plocka upp en idé, en plan eller en oavslutad tråd.`},open:{title:`Vad tänker du på?`,subtitle:`En liten tanke eller ett ambitiöst projekt. Båda fungerar.`},challenge:{title:`Vad ska vi lösa?`,subtitle:`Berätta vad som inte fungerar än.`},draft:{title:`Låt oss börja någonstans.`,subtitle:`Det behöver inte vara finslipat.`},possibility:{title:`Vad skulle det här kunna bli?`,subtitle:`Visa mig råmaterialet.`},unexpected:{title:`Skapa något oväntat.`,subtitle:`Ge mig en begränsning, en stämning eller en halvfärdig idé.`}}},input:{placeholder:`Skicka ett meddelande`,messagePlaceholder:`Meddelande...`,attachImages:`Bifoga bilder`,attachments:`Bilagor och avancerade funktioner`,sendMessage:`Skicka meddelande`,stopGeneration:`Stoppa generering`,menu:{uploadImages:`Ladda upp bilder`,attachDocument:`Bifoga dokument`,attachWebpage:`Bifoga webbsida`,structuredOutput:`Strukturerad utdata`,attach:`Bifoga`,documentAttached:`Dokument bifogat`,webpageAttached:`Webbsida bifogad`,attachFailed:`Kunde inte bifoga`,attachKnowledge:`Bifoga kunskap`,noCollections:`Inga samlingar än — skapa en i Inställningar → Dokument`},voiceInput:`Röstinmatning`,voiceStop:`Sluta lyssna`,transcriptionSource:`Källa för taligenkänning`,browserSpeech:`Webbläsarens taligenkänningstjänst`,providerTranscriptionDisclosure:`Spela in och skicka ljud till {{provider}} för transkribering`,webSearchOn:`Webbsökning på — svar använder live-resultat`,webSearchOff:`Sök på webben för det här meddelandet`,toolsOn:`Verktyg på — modellen kan anropa godkända verktyg`,toolsOff:`Låt modellen anropa verktyg för det här meddelandet`,thinkingOn:`Tänkande på ({{level}})`,thinkingOff:`Tänk innan svaret`},session:{new:`Ny chatt`,work:`Arbete`,chat:`Chatt`,private:`Privat`,incognito:`Inkognitochatt`,privateMode:`Privat läge`,privateDescription:`Denna konversation sparas inte`,privateTooltip:`Starta en privat konversation som inte sparas`,deleteConfirm:`Är du säker på att du vill radera denna chatt?`,generatingTitle:`Genererar titel`,noChats:`Inga chattar ännu`,createFirst:`Skapa din första chatt ovan`,chats:`Chattar`,renameChat:`Byt namn på chatt`,openNewTab:`Öppna i ny flik`,pinChat:`Fäst`,unpinChat:`Lossa`,deleteChat:`Radera chatt`,archiveChat:`Arkivera chatt`,groups:{pinned:`Fästa`,today:`Idag`,yesterday:`Igår`,previous7Days:`Senaste 7 dagarna`,previous30Days:`Senaste 30 dagarna`,older:`Äldre`},folder:{new:`Ny mapp`,namePlaceholder:`Mappnamn`,move:`Flytta till mapp`,remove:`Ta bort från mapp`,delete:`Ta bort mapp`,deleteConfirm:`Ta bort den här mappen? Chattarna i den behålls.`},shareChat:`Dela chatt…`},persona:{applied:`Persona tillämpad`,label:`Persona`,loadFailed:`Det gick inte att ladda personadetaljer`,removeFailed:`Det gick inte att ta bort personan`},model:{updated:`Modell uppdaterad`,noModels:`Inga modeller tillgängliga`,noModelsDescription:`Inga modeller tillgängliga. Se till att Ollama körs och har modeller installerade.`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`Inga modeller tillgängliga. Se till att Ollama körs och modeller är installerade.`,selectBeforePrivateChat:`Välj en tillgänglig modell innan du startar en privat chatt`,selectBeforeSending:`Välj en tillgänglig modell innan du skickar`,selectBeforeRegenerating:`Välj en tillgänglig modell innan du genererar om`,connectDescription:`Inga modeller är anslutna än. Välj en källa nedan — en lokal körmiljö, din egen server eller ett moln-API — så chattar du på under en minut.`},footer:{disclaimer:`AI kan göra misstag - verifiera viktig information`,images:`{{count}} bild`,images_plural:`{{count}} bilder`,structuredOutput:`Strukturerad utdata`},mediaUpload:{dropImagesHere:`Släpp bilder här eller`,supportedFormats:`Stöder: JPG, PNG, GIF, WebP (max 10MB vardera)`,browse:`bläddra`,unsupportedFileType:`Filtypen stöds inte: {{name}}`,maxImagesAllowed:`Högst {{count}} bilder är tillåtna`,imageTooLarge:`Bilden {{name}} är för stor (max 10 MB)`},structuredOutput:{title:`Svarsformat`,none:`Inget (naturligt språk)`,noneDescription:`Standardsvar i naturligt språk`,json:`JSON`,jsonDescription:`Strukturerat JSON-format`,list:`Lista`,listDescription:`Array av objekt`,summary:`Sammanfattning`,summaryDescription:`Dokumentsammanfattning med huvudpunkter`,analysis:`Analys`,analysisDescription:`Strukturerad analys med för- och nackdelar`,custom:`Anpassat schema`,customDescription:`Definiera ditt eget JSON-schema`,customSchema:`Anpassat JSON-schema`,schemaPreview:`Schemaförhandsgranskning`,applySchema:`Tillämpa schema`,cancel:`Avbryt`,enabled:`Strukturerad utdata aktiverad`},controls:{title:`Chattkontroller`,systemPrompt:`Systemprompt`,systemPromptPlaceholder:`Instruktioner som endast gäller den här chatten…`,advancedParams:`Avancerade parametrar`,advancedParamsDescription:`Åsidosättanden för den här chatten. Tomma fält använder dina globala standarder.`,fromModel:`från modellen`,fromModelHint:`Det här värdet kommer från modellens egna rekommenderade inställningar.`,contextCapped:`Kontexten är begränsad till {{context}} av de {{trained}} modellen tränats för, så att den fortfarande laddas.`,saved:`Kontroller sparade`,saveFailed:`Kunde inte spara kontroller`,params:{temperature:`Temperatur`,topP:`Top P`,topK:`Top K`,minP:`Min P`,maxTokens:`Max antal tokens`,repeatPenalty:`Upprepningsstraff`,seed:`Frö`,contextLength:`Kontextlängd`},thinking:`Tänkande`,thinkingDescription:`Hur mycket modellen tänker innan den svarar. Modeller utan resonemang ignorerar detta.`,compaction:`Kontextkomprimering`,compactionDescription:`När servern komprimerar långa samtal kan den här chatten stå utanför och behålla hela sin historik.`,compactionDefault:`Serverns standard`,compactionOff:`Av för den här chatten`},message:{sources:`Källor`},toasts:{chatCreated:`Ny chatt skapad`,createFailed:`Det gick inte att skapa sessionen`,loadFailed:`Det gick inte att läsa in sessioner`,chatDeleted:`Chatt borttagen`,deleteFailed:`Det gick inte att ta bort chatten`,deleteSessionFailed:`Det gick inte att ta bort sessionen`,historyCleared:`All chathistorik rensad`,historyClearFailed:`Det gick inte att rensa chathistoriken`,titleUpdated:`Chatttitel uppdaterad`,updateFailed:`Det gick inte att uppdatera sessionen`,noValidSession:`Ingen giltig chatsession. Skapa eller välj en chatt.`,sessionNotFound:`Sessionen hittades inte eller är ogiltig. Välj eller skapa en giltig chatsession.`,noModelProvider:`Ingen modellleverantör tillgänglig`,modelUnavailable:`Den valda modellen "{{model}}" är inte tillgänglig från {{provider}}. Återaktivera den leverantören eller välj en annan modell.`,modelSwitched:`Växlade till {{model}} (föregående modell är inte längre tillgänglig)`,modelsLoadFailed:`Det gick inte att läsa in modeller`,modelUpdated:`Modell uppdaterad för den aktuella chatten`,modelUpdateFailed:`Det gick inte att uppdatera sessionens modell`,titlePreviewFallback:`Kunde inte skapa en titel; meddelandeförhandsvisningen används`,titleGenerated:`Chattiteln skapades`,titleGenerationFailed:`Det gick inte att skapa chattiteln`,sessionNotFoundRedirect:`Sessionen hittades inte. En ny session skapas...`,comparisonError:`{{model}}: {{error}}`,generationFailed:`genereringen misslyckades`,comparisonFailed:`jämförelsen misslyckades`,sendFailed:`Det gick inte att skicka meddelandet`,noMessageToRegenerate:`Det finns inget meddelande att generera om`,regenerateFailed:`Det gick inte att generera om meddelandet`,messageNotFound:`Meddelandet hittades inte`,branchSwitched:`Bytte till variant {{number}}`,branchSelectFailed:`Det gick inte att välja gren`,editFailed:`Det gick inte att redigera meddelandet`,toolDecisionFailed:`Beslutet om verktyget kunde inte registreras`},documents:{title:`Dokument i kontexten`},context:{title:`Kontextfönster:`,full:`{{percent}}% fullt`,tokensUsed:`{{used}} / {{budget}} tokens använda`,tokensUsedNoBudget:`{{used}} tokens använda`,capped:`begränsat från {{trained}}`},queue:{title:`I kö ({{total}})`,moveUp:`Flytta upp`,moveDown:`Flytta ner`,updateFailed:`Kunde inte uppdatera prompten i kön`,enqueueFailed:`Kunde inte köa prompten`},compare:{title:`Jämför modeller`,hint:`Svara med upp till {{max}} extra modeller`},fork:{action:`Grena av härifrån`,created:`Chatt avgrenad`,failed:`Kunde inte grena av chatten`,origin:`Avgrenad från {{title}}`,originUnknown:`en annan chatt`},sharedReadOnly:`Delad av {{owner}} — endast visning`},sidebar:{navigation:{chat:`Chatt`,models:`Modeller`,personas:`Personas`,imagine:`Skapa bild`,agents:`Agenter`,work:`Arbete`,settings:`Inställningar`,usageAnalytics:`Leverantörsanvändning`,system:`System`,userManagement:`Användarhantering`,signOut:`Logga ut`,exploreLabel:`Utforska`,notes:`Anteckningar`,calendar:`Kalender`,automations:`Automatiseringar`,prompts:`Prompter`,skills:`Färdigheter`,tools:`Verktyg`,channels:`Kanaler`},toggleSize:`Växla sidofältets storlek`,expandSidebar:`Expandera sidofältet`},user:{menu:{changePicture:`Ändra bild`,settings:`Inställningar`,usageAnalytics:`Leverantörsanvändning`,system:`System`,userManagement:`Användarhantering`,logout:`Logga ut`,pinShortcut:`Fäst i sidofältet`,unpinShortcut:`Ta bort från sidofältet`,evaluations:`Utvärderingar`},avatar:{title:`Ändra profilbild`,updated:`Profilbilden uppdaterad`,updateFailed:`Kunde inte uppdatera profilbilden`,saving:`Sparar...`,label:`Avatar`,uploadAvatarImage:`Ladda upp avatarbild`,dragAndDrop:`Dra och släpp en bild eller klicka för att bläddra`,chooseImage:`Välj bild`,uploading:`Laddar upp...`,enterImageUrl:`Eller ange bild-URL`,supportedFormats:`Stöder: JPG, PNG, GIF, WebP (max 2 MB). Fyrkantiga bilder fungerar bäst.`,customAvatar:`Anpassad avatarbild`,clickToChange:`Klicka för att ändra eller ta bort`,removed:`Avatar borttagen`,uploaded:`Avatar uppladdad`,invalidFile:`Vänligen välj en giltig bildfil`,fileTooLarge:`Avatarbildens storlek måste vara mindre än 2 MB`,readFailed:`Kunde inte läsa bildfilen`,uploadFailed:`Kunde inte ladda upp avatarbild`},profile:{noEmail:`Ingen e-post angiven`}},settings:JSON.parse(`{"title":"Inställningar","tabs":{"appearance":"Utseende","model":"Standardvärden","systemMessage":"Systemmeddelande","plugins":"Tillägg","search":"Sökning","generation":"Generering","documents":"Dokument","tts":"Tal","imageGen":"Bilder","data":"Data","shortcuts":"Kortkommandon","about":"Om","sessions":"Sessioner","apiKeys":"API-nycklar","notifications":"Aviseringar"},"appearance":{"title":"Utseende","language":{"title":"Språk","description":"Välj ditt föredragna språk"},"theme":{"title":"Tema","light":"Ljust","dark":"Mörkt","amoled":"Djupsvart","system":"System"},"accent":{"title":"Accentfärg","custom":"Anpassad färg","useColor":"Använd {{color}} som accent","behaviorTitle":"Gränssnittspalett","behaviorDescription":"Välj om accentfärgen bara används på kontroller eller anpassar hela det ljusa eller mörka gränssnittet.","defaultStyle":"Standard","defaultStyleDescription":"Behåll neutrala ytor i ljust och mörkt tema.","adaptedStyle":"Anpassa till accent","adaptedStyleDescription":"Färga ytor, kanter och text med accentfärgen."},"chatInterface":{"title":"Chattgränssnitt","showUsername":"Visa användarnamn","showUsernameDescription":"Visa användarnamn i chattmeddelanden","followUpSuggestions":"Uppföljningsförslag","followUpSuggestionsDescription":"Föreslå snabba svar efter varje svar","hapticFeedback":"Haptisk återkoppling (Android)","hapticFeedbackDescription":"Använd diskreta vibrationer för viktiga mobilåtgärder","autoOpenArtifacts":"Öppna artefakter automatiskt","autoOpenArtifactsDescription":"Öppna artefaktpanelen när ett svar skapar en"},"background":{"title":"Bakgrundsbild","enable":"Aktivera bakgrundsbild","enableDescription":"Visa anpassad bakgrund med oskärpa","blur":"Oskärpa","opacity":"Opacitet","upload":"Ladda upp bakgrundsbild","dragDrop":"Dra och släpp en bild eller klicka för att bläddra","chooseImage":"Välj bild"}},"saveSettings":"Spara inställningar","preferences":{"updateFailed":"Det gick inte att uppdatera inställningarna: {{error}}"},"model":{"title":"Modellinställningar","defaultModel":"Standardmodell","defaultModelDescription":"Denna modell används som standard för nya konversationer","selectModel":"Välj en modell","specializedModels":"Specialiserade modeller","visionModel":"Synmodell","selectVisionModel":"Använd nuvarande chattmodell","visionModelDescription":"Används automatiskt när den utgående chattkontexten innehåller bilder. Välj en modell som stöder bildindata.","visionModelUpdateFailed":"Det gick inte att uppdatera synmodellen: {{error}}","visionModelNoProvider":"Den här synmodellen saknar leverantörsidentitet. Välj en tillgänglig modell.","persona":"Persona","updateAll":"Uppdatera alla modeller","updateAllDescription":"Sök efter uppdateringar och hämta senaste versionerna av alla installerade modeller","updateAllButton":"Uppdatera alla","updating":"Uppdaterar modeller...","currentModelInfo":"Information om nuvarande modell","name":"Namn","size":"Storlek","family":"Familj","format":"Format","status":"Status","statusStarting":"Startar...","statusComplete":"Klar","statusError":"Fel","bulkOperations":"Massoperationer","autoTitle":{"title":"Automatisk titelgenerering","enable":"Aktivera automatisk titel","enableDescription":"Generera automatiskt titlar för nya konversationer","taskModel":"Uppgiftsmodell","selectTaskModel":"Välj uppgiftsmodell","taskModelDescription":"Modell som används för att generera konversationstitlar"},"updatingModel":"Uppdaterar {{name}} ({{current}}/{{total}})","modelsProgress":"{{current}} av {{total}} modeller","defaultModelUpdated":"Standardmodellen har uppdaterats","allModelsUpdated":"Alla modeller har uppdaterats!","updateAllFailed":"Det gick inte att uppdatera modellerna: {{error}}"},"systemMessage":{"title":"Systemmeddelande","description":"Ställ in ett anpassat systemmeddelande som används för alla nya konversationer.","placeholder":"Ange ett systemmeddelande...","saved":"Systemmeddelande sparat","saveFailed":"Kunde inte spara systemmeddelande"},"plugins":{"title":"Tillägg","description":"Hantera dina installerade tillägg","providerConnections":"Leverantörsanslutningar","providerConnectionsDescription":"Anslut, konfigurera och inspektera modellleverantörer via plugins.","providers":"Leverantörer","searchProviders":"Sök leverantörer","noProvidersFound":"Inga leverantörer matchar din sökning.","selectProvider":"Välj en leverantör","selectProviderDescription":"Välj en leverantör för att inspektera dess anslutning och modellkatalog.","addNew":"Lägg till nytt tillägg","upload":"Ladda upp tillägg","addJson":"Lägg till JSON","uploading":"Laddar upp...","jsonPlaceholder":"Klistra in tilläggs-JSON-konfiguration...","install":"Installera tillägg","noPlugins":"Inga tillägg installerade","noPluginsDescription":"Lägg till ett tillägg för att utöka funktionaliteten","loading":"Laddar tillägg...","installed":"Installerade tillägg","active":"Aktiva tillägg","activeLabel":"Aktiv","inactive":"Inaktiv","activate":"Aktivera","deactivate":"Inaktivera","models":"modeller","apiKeySet":"API-nyckel inställd","apiKeyConfiguration":"API-nyckelkonfiguration","apiKeyDescription":"Lagra en personlig API-nyckel för {{name}}.","apiKeyEnvAlternative":"Alternativt, ställ in","environmentVariable":"miljövariabel","apiKeyConfigured":"API-nyckel konfigurerad","apiKeyPlaceholder":"Ange din API-nyckel...","saveApiKey":"Spara API-nyckel","showApiKey":"Visa API-nyckel","hideApiKey":"Dölj API-nyckel","configure":"Konfigurera","providerSettings":"Leverantörsinställningar","status":"Status","defaultEndpoint":"Standardändpunkt","modelCatalog":"Modellkatalog","modelCatalogDescription":"Upptäckta och konfigurerade modeller för denna leverantör och dess kapabiliteter.","refreshModels":"Uppdatera modeller","noModelsConfigured":"Inga modeller är konfigurerade för denna leverantör.","modelId":"Modell-ID","capabilities":"Funktioner","modelCatalogUpdated":"Modellkatalog uppdaterad: {{count}} modeller.","modelCatalogUnchanged":"Modellkatalogen är redan uppdaterad.","modelCatalogNeedsApiKey":"Lägg till en giltig API-nyckel för denna leverantör för att ladda dess live-modelllista.","modelCatalogUnavailable":"Kunde inte ladda leverantörens modelllista.","modelCatalogRefreshFailed":"Misslyckades med att uppdatera modellkatalogen","invalidJson":"Ogiltigt JSON-format","capability":{"chat":"Chatt","embedding":"Inbäddning","image":"Bild","speech":"Tal","transcription":"Transkription"},"exportPlugin":"Exportera plugin","deletePlugin":"Ta bort plugin","apiKey":{"title":"API-nyckel","placeholder":"Ange API-nyckel","save":"Spara nyckel","remove":"Ta bort nyckel","configured":"API-nyckel konfigurerad","notConfigured":"API-nyckel krävs","saved":"API-nyckeln sparades","removed":"API-nyckeln togs bort","saveFailed":"Kunde inte spara API-nyckel","removeFailed":"Kunde inte ta bort API-nyckel","enterKey":"Ange en API-nyckel"},"variables":"Variables"},"generation":{"title":"Genereringsalternativ","description":"Konfigurera hur AI:n genererar svar","scopeLabel":"Gäller för","scopeAll":"Alla modeller","scopeModel":"Endast {{model}}","scopeAllHint":"Värdena som varje modell använder om den inte har egna.","scopeModelHint":"Sparas bara för den här modellen och vinner över de allmänna värdena.","advancedSettings":"Avancerade genereringsinställningar","advancedSettingsDescription":"Sampling, token-gränser, kontext, straff och stoppsekvenser","coreParameters":"Kärnparametrar","temperature":"Temperatur","temperatureDescription":"Styr slumpmässighet. Lägre värden är mer fokuserade, högre värden mer kreativa.","topP":"Top P","topPDescription":"Styr mångfald via kärnsampling. Lägre värden fokuserar på sannolika tokens.","topK":"Top K","topKDescription":"Begränsar tokenval till de K mest sannolika. Sätt till 0 för att inaktivera.","minP":"Min P","minPDescription":"Minsta sannolikhetströskel för tokenval.","generationControl":"Genereringskontroll","maxTokens":"Max tokens","maxTokensDescription":"Maximalt antal tokens att generera i svaret.","repeatPenalty":"Upprepningsstraff","repeatPenaltyDescription":"Bestraffar upprepade tokens. Högre värden minskar upprepning.","contextLength":"Kontextlängd","contextLengthDescription":"Maximal kontextfönsterstorlek för konversationer.","seed":"Seed","optional":"valfritt","random":"Slumpmässig","seedDescription":"Ställ in en specifik seed för reproducerbara resultat.","advancedOptions":"Avancerade alternativ","presencePenalty":"Närvarostraff","presencePenaltyDescription":"Bestraffar tokens som förekommer i kontexten.","frequencyPenalty":"Frekvensstraff","frequencyPenaltyDescription":"Bestraffar ofta använda tokens.","stopSequences":"Stoppsekvenser","commaSeparated":"kommaseparerade","stopSequencesDescription":"Anpassade tokens som stoppar genereringen när de påträffas.","resetDefaults":"Återställ till standardvärden","saveOptions":"Spara alternativ","saveSuccess":"Genereringsalternativen har uppdaterats","saveFailed":"Det gick inte att uppdatera genereringsalternativen: {{error}}","modelDefaultsLoaded":"Inställningarna som {{model}} rekommenderar har lästs in","resetSuccess":"Genereringsalternativen har återställts till standardvärdena","resetFailed":"Det gick inte att återställa genereringsalternativen: {{error}}","embeddingSettings":"Inbäddningsinställningar","enableEmbeddings":"Aktivera dokumentinbäddningar","thinking":"Tänkande","thinkingDescription":"Standardnivå för tänkande i svar. Varje chatt kan ändra den.","thinkingLevels":{"default":"Modellens standard","defaultWith":"Modellens standard ({{level}})","off":"Av","on":"På","low":"Låg","medium":"Medel","high":"Hög"}},"documents":{"title":"Dokumentinställningar","embeddings":{"title":"Inbäddningar","enable":"Aktivera dokumentinbäddningar","model":"Inbäddningsmodell","modelDescription":"Välj modell för dokumentinbäddning","chunkSize":"Segmentstorlek","chunkSizeInTokens":"(i tokens)","chunkSizeDescription":"Storlek på textsegment för inbäddning","chunkOverlap":"Segmentöverlappning","chunkOverlapInTokens":"(i tokens)","chunkOverlapDescription":"Överlappning mellan på varandra följande segment","similarityThreshold":"Likhetströskel","similarityDescription":"Minsta likhetspoäng för att inkludera resultat","status":"Inbäddningsstatus","statusLabel":"Status","available":"Tillgänglig","unavailable":"Ej tillgänglig","chunksWithEmbeddings":"Segment med inbäddningar","coverage":"Täckning","regenerate":"Regenerera inbäddningar","regenerating":"Regenererar...","regenerateSuccess":"Inbäddningar för {{count}} dokument har genererats om","regeneratePartialSuccess":"Genererade om {{count}} dokument; hoppade över {{skipped}}","regenerateFailed":"Det gick inte att generera om inbäddningarna: {{error}}","saveSuccess":"Inbäddningsinställningarna har uppdaterats","saveFailed":"Det gick inte att uppdatera inbäddningsinställningarna: {{error}}","resetSuccess":"Inbäddningsinställningarna har återställts till standardvärdena","resetFailed":"Det gick inte att återställa inbäddningsinställningarna: {{error}}"},"collections":{"title":"Kunskapssamlingar","description":"Gruppera dokument i samlingar och bifoga dem till valfri chatt.","namePlaceholder":"Samlingens namn","create":"Skapa","none":"Ingen samling","deleteConfirm":"Ta bort den här samlingen? Dokumenten i den behålls.","createFailed":"Samlingen kunde inte skapas","deleteFailed":"Samlingen kunde inte tas bort","assignFailed":"Dokumentet kunde inte flyttas","share":"Dela samling","shared":"delad"},"library":{"title":"Uppladdade dokument","description":"Dokument som är tillgängliga som chattkontext. Ett dokument som laddats upp i en chatt stannar i sin konversation; ett dokument utan chatt och samling ingår i varje konversation.","empty":"Inga dokument har laddats upp ännu.","chatScope":"En chatt","everyChatScope":"Alla chattar","deleteConfirm":"Ta bort \\"{{name}}\\"? Det försvinner från alla chattar.","deleteFailed":"Dokumentet kunde inte tas bort","extractionFailed":"Extraheringen misslyckades","extractionQueued":"Extraherar…"}},"tts":{"title":"Text-till-tal","description":"Konfigurera text-till-tal-inställningar för uppläsning av meddelanden","loadingProviders":"Laddar TTS-leverantörer...","noProviders":"Inga TTS-leverantörer","noProvidersDescription":"Konfigurera ett tillägg med TTS-stöd för att aktivera text-till-tal","enable":"Aktivera TTS","enableDescription":"Tillåt text-till-tal för assistentmeddelanden","autoPlay":"Spela upp svar automatiskt","autoPlayDescription":"Läs automatiskt upp nya assistentmeddelanden","streamSentences":"Naturlig batchuppspelning","streamSentencesDescription":"Generera flera frasanpassade batcher i förväg och spela upp dem som ett enda sammanhängande svar.","voiceConfiguration":"Röstkonfiguration","model":"TTS-modell","modelDescription":"Välj modell för text-till-tal-generering","voice":"Röst","selectVoice":"Välj en röst","voiceDescription":"Välj röst för text-till-tal","providerDefaultVoice":"Den här modellen använder sin standardröst om du inte anger en referensinspelning när talet genereras.","voiceCloningAvailable":"Röstkloning är tillgänglig","voiceCloningAvailableDescription":"Använd Föreställ → Ljud för att skapa tal från en referensinspelning som gjorts med samtycke och dess exakta transkription. Du kan välja att spara referensen som en återanvändbar röst.","savedVoiceOption":"{{name}} (sparad röst)","savedVoices":"Sparade röster","loadingSavedVoices":"Läser in sparade röster…","deleteSavedVoice":"Ta bort den sparade rösten {{name}}","deleteSavedVoiceConfirm":"Ta bort den sparade rösten ”{{name}}”? Referensinspelningen och transkriptionen tas bort.","savedVoiceDeleted":"Den sparade rösten har tagits bort","savedVoicePreferenceCleanupFailed":"Den sparade rösten har tagits bort, men talinställningarna kunde inte återställas","savedVoiceDeleteFailed":"Det gick inte att ta bort den sparade rösten","speed":"Hastighet","speedSlow":"0,5x","speedNormal":"1,0x","speedFast":"2,0x","availableProviders":"Tillgängliga leverantörer","models":"modeller","test":"Testa","testing":"Testar...","stop":"Stoppa","consentRevoked":"Samtycke återkallat","consentExpired":"Samtycket har löpt ut","transferCount":"skickat till leverantören {{total}} gånger","consentExpires":"samtycke till {{date}}","revokeSavedVoice":"Återkalla samtycke för {{name}}","revokeSavedVoiceConfirm":"Återkalla samtycke för “{{name}}”? Den sparade rösten kan inte längre användas, men samtyckesposten behålls.","savedVoiceRevoked":"Samtycke återkallat","savedVoiceRevokeFailed":"Det gick inte att återkalla samtycket","savedVoiceUnavailableCleanupFailed":"Den sparade rösten är inte tillgänglig och kunde inte tas bort från talinställningarna","saveSuccess":"TTS-inställningarna har sparats","saveFailed":"Det gick inte att spara TTS-inställningarna: {{error}}","testFailed":"TTS-testet misslyckades: {{error}}"},"imageGen":{"title":"Bildgenerering","description":"Konfigurera bildgenereringsinställningar och leverantörer","loadingProviders":"Laddar bildgenereringsleverantörer...","noProviders":"Inga bildgenereringsleverantörer","noProvidersDescription":"Konfigurera ett tillägg med bildgenereringsstöd","enable":"Aktivera bildgenerering","enableDescription":"Tillåt AI-bildgenerering i konversationer","configuration":"Konfiguration","model":"Modell","modelDescription":"Välj modell för bildgenerering","size":"Storlek","sizeDescription":"Upplösning för genererade bilder","quality":"Kvalitet","qualityDescription":"Kvalitetsnivå för genererade bilder","style":"Stil","styleDescription":"Stilförinställning för genererade bilder","availableProviders":"Tillgängliga leverantörer","models":"modeller","saveSuccess":"Inställningarna för bildgenerering har sparats","saveFailed":"Det gick inte att spara inställningarna för bildgenerering: {{error}}"},"data":{"title":"Datahantering","export":"Exportera data","exportDescription":"Ladda ner ett portabelt arkiv med inställningar, chattmappar, sessioner och meddelanden, anteckningar, kunskapssamlingar och extraherad dokumenttext.","archiveScopeV3":"Omfattar inställningar, chattar, mappar, anteckningar, kunskapssamlingar och extraherad dokumenttext. Konton och hemligheter, biometriskt klonade röster, genererade medier, personas och minne samt Work-data eller -volymer ingår inte.","exportAll":"Exportera all data","import":"Importera data","importDescription":"Importera data från en tidigare export.","importData":"Importera data","importing":"Importerar...","clearSessions":"Rensa sessioner","clearSessionsDescription":"Radera alla chattsessioner. Denna åtgärd kan inte ångras.","clearAll":"Rensa alla","clearing":"Rensar...","importOptions":"Importalternativ","importOptionsDescription":"Välj hur befintlig data ska hanteras","validatingArchive":"Validerar arkivet och beräknar ändringar…","archiveValidationFailed":"Arkivvalideringen misslyckades","preflightReport":"Förhandsgranskning av import","preflightIncoming":"{{folders}} mappar · {{sessions}} chattar · {{messages}} meddelanden · {{notes}} anteckningar · {{collections}} samlingar · {{documents}} dokument · {{chunks}} delar","preflightRemappedIds":"{{count}} id:n får nya värden för att skydda ett annat kontos data.","skipDuplicates":"Hoppa över dubbletter","overwrite":"Skriv över befintliga","importResults":"Importresultat","preferences":"Inställningar","imported":"Importerade","failed":"Misslyckades","sessions":"Sessioner","sessionFolders":"Sessionsmappar","notes":"Anteckningar","knowledgeCollections":"Kunskapssamlingar","importedLabel":"importerade","overwrittenLabel":"överskrivet","skipped":"hoppades över","toCreate":"att skapa","toOverwrite":"att skriva över","toSkip":"att hoppa över","documents":"Dokument","warnings":"Varningar","refreshAfterImportFailed":"Data importerades, men vissa vyer kunde inte uppdateras. Läs in Libre WebUI igen för att se alla ändringar.","exportSuccess":"Det portabla dataarkivet har exporterats","exportFailed":"Exporten misslyckades","importSuccess":"Det portabla dataarkivet har importerats","importFailed":"Importen misslyckades","archiveErrors":{"invalidJson":"Det portabla arkivet innehåller inte giltig JSON.","objectRequired":"Det portabla arkivet måste innehålla ett JSON-objekt.","unsupportedVersion":"Version {{version}} av det portabla arkivet stöds inte.","unrecognized":"Den här filen är inte ett portabelt Libre WebUI-arkiv."},"errors":"Fel","archivedChats":{"title":"Arkiverade chattar","empty":"Inga arkiverade chattar","unarchive":"Återställ"}},"about":{"title":"Om","versionLabel":"Version","ollama":{"title":"Ollama-status","version":"Version","healthy":"Fungerar","unhealthy":"Fungerar inte"},"stats":{"models":"Modeller","sessions":"Sessioner"},"features":{"privacy":{"title":"Integritet först","description":"Din data stannar på din enhet"},"openSource":{"title":"Öppen källkod","description":"Fri och öppen mjukvara"},"localInference":{"title":"Lokal inferens","description":"Kör AI-modeller lokalt med Ollama"}},"openSourceBy":"Öppen källkod av {{company}}","links":{"title":"Länkar","github":"GitHub","githubDescription":"Visa källkod och bidra","website":"Webbplats","websiteDescription":"Besök vår webbplats","documentation":"Dokumentation","reportIssue":"Rapportera problem","reportIssueDescription":"Felrapporter och funktionsförfrågningar","documentationDescription":"Guider, handledningar och API-referens","forgejo":"Forgejo-spegel","forgejoDescription":"Självhostat Forgejo-förråd","sponsor":"Sponsra","sponsorDescription":"Hjälp till att finansiera projektet","star":"Stjärna på GitHub","starDescription":"En stjärna hjälper andra att hitta projektet"},"version":"Version {{version}}","updates":{"checking":"Söker efter uppdateringar…","upToDate":"Du har den senaste versionen","updateAvailable":"Version {{version}} är tillgänglig","ahead":"Före den senaste utgåvan ({{version}})","checkFailed":"Kunde inte söka efter uppdateringar","viewChangelog":"Visa ändringslogg"}},"groups":{"general":"Allmänt","chat":"Chatt","media":"Tal och bilder","connections":"Anslutningar"},"search":{"title":"Webbsökning","description":"Sök på webben via en självhostad SearXNG-instans. När den är aktiverad får chatten en sökknapp och Work-uppgifter med nätverksåtkomst kan söka.","enableLabel":"Aktivera webbsökning","enableDescription":"Erbjud webbsökning i chattar och Work-uppgifter. Sökningar körs på servern mot den konfigurerade instansen.","urlLabel":"SearXNG-URL","urlDescription":"Bas-URL för SearXNG-instansen som nås från servern. Den medföljande privata deploy-stacken tillhandahåller http://searxng:8080.","maxResultsLabel":"Resultat per sökning","maxResultsDescription":"Hur många resultat som matas in i ett svar eller verktygsanrop, 1-100.","maxResultsInvalid":"Resultat per sökning måste vara mellan 1 och 100.","safeSearchLabel":"Säker sökning","safeSearchDescription":"Be motorn filtrera explicita resultat.","test":"Testa anslutning","testing":"Testar…","testOk":"Sökningen fungerar — {{results}} resultat returnerades","testFailed":"Söktestet misslyckades","save":"Spara","saved":"Sökinställningar sparade","saveFailed":"Kunde inte spara sökinställningarna"},"compaction":{"title":"Kontextkomprimering","description":"När en konversation växer förbi tokentröskeln sammanfattar servern dess äldre meddelanden och behåller bara de senaste ordagrant. Gäller alla användare på den här servern.","thresholdLabel":"Tokentröskel","thresholdDescription":"Uppskattat antal kontexttokens över vilket äldre historik sammanfattas, 500-1 000 000.","thresholdInvalid":"Tokentröskeln måste vara mellan 500 och 1 000 000.","keepRecentLabel":"Senaste meddelanden som behålls","keepRecentDescription":"Hur många av de senaste meddelandena som alltid behålls ordagrant, 2-200.","keepRecentInvalid":"Antalet senaste meddelanden som behålls måste vara mellan 2 och 200.","modelLabel":"Komprimeringsmodell","modelDescription":"Modellen som skriver sammanfattningarna. Sessionens egen modell används när ingen är vald.","sessionModelOption":"Använd sessionens modell","promptLabel":"Egen sammanfattningsprompt","promptPlaceholder":"Lämna tomt för att använda den inbyggda prompten","promptDescription":"Mallvariablerna {{previousSummaryVariable}} och {{messagesVariable}} ersätts med den föregående sammanfattningen och meddelandena som sammanfattas.","saved":"Komprimeringsinställningar sparade","saveFailed":"Kunde inte spara komprimeringsinställningarna","loadFailed":"Kunde inte läsa in komprimeringsinställningarna"},"sessions":{"title":"Sessioner","description":"Alla platser där detta konto är inloggat. Att logga ut en session sker omedelbart; att logga in igen återställer åtkomsten.","signOutOthers":"Logga ut övriga sessioner","signingOutOthers":"Loggar ut…","signOut":"Logga ut","signingOut":"Loggar ut…","revoked":"Sessionen har loggats ut.","revokeFailed":"Sessionen kunde inte loggas ut.","othersRevoked":"Övriga sessioner utloggade: {{count}}","loadFailed":"Sessionerna kunde inte läsas in.","empty":"Inga sessioner hittades.","current":"Denna session","revokedBadge":"Utloggad","unknownDevice":"Okänd enhet","createdAt":"Inloggad","lastSeenAt":"Senast aktiv","expiresAt":"Upphör"},"apiKeys":{"title":"API-nycklar","description":"Begränsade tokens för skript och integrationer. Varje nyckel har endast åtkomst till de behörigheter du väljer.","newKeyTitle":"Din nya API-nyckel","copy":"Kopiera","copied":"Kopierat till urklipp.","copyFailed":"Kopieringen misslyckades.","showOnceWarning":"Kopiera den nu – den visas inte igen.","dismiss":"Klar","createTitle":"Skapa en nyckel","nameLabel":"Namn","namePlaceholder":"t.ex. CI-pipeline","nameRequired":"Ge nyckeln ett namn.","expiryLabel":"Giltighetstid i dagar (valfritt)","expiryPlaceholder":"Aldrig","expiryInvalid":"Giltighetstiden måste vara ett helt antal dagar.","scopesLabel":"Behörigheter","scopesRequired":"Välj minst en behörighet.","create":"Skapa nyckel","creating":"Skapar…","created":"API-nyckeln har skapats.","createFailed":"API-nyckeln kunde inte skapas.","revoke":"Återkalla","revoking":"Återkallar…","revoked":"API-nyckeln har återkallats.","revokeFailed":"API-nyckeln kunde inte återkallas.","revokedBadge":"Återkallad","loadFailed":"API-nycklarna kunde inte läsas in.","empty":"Inga API-nycklar ännu.","createdAt":"Skapad","lastUsedAt":"Senast använd","expiresAt":"Upphör","neverExpires":"Aldrig"},"notifications":{"title":"Aviseringar","description":"Hur den här webbläsaren får veta om omnämnanden, delningar, påminnelser och färdigt arbete.","pushTitle":"Webbläsaraviseringar","pushHint":"Visa systemaviseringar från den här enheten även när fliken är i bakgrunden.","enabled":"Webbläsaraviseringar är på för den här enheten.","disabled":"Webbläsaraviseringar är av för den här enheten.","enableFailed":"Webbläsaraviseringarna kunde inte aktiveras.","permissionDenied":"Aviseringar är blockerade i webbläsarens inställningar för den här webbplatsen.","unsupported":"Den här webbläsaren stöder inte pushaviseringar.","workerMissing":"Push kräver den installerade appen. Ladda om produktionsappen och försök igen.","deviceNote":"Aviseringar gäller per enhet. Loggas sessionen ut tas även dess pushregistrering bort."}}`),models:{title:`Modeller`,subtitle:`Hämta, hantera och övervaka dina Ollama-modeller`,installed:`Installerade modeller`,available:`Tillgängliga modeller`,pull:`Hämta modell`,pulling:`Hämtar...`,delete:`Radera modell`,deleting:`Raderar...`,size:`Storlek`,modified:`Ändrad`,family:`Familj`,parameters:`Parametrar`,quantization:`Kvantisering`,noModels:`Inga modeller installerade`,pullFirst:`Hämta en modell för att komma igång`,noModelsFound:`Inga modeller hittades`},personas:{title:`Personas`,create:`Skapa persona`,edit:`Redigera persona`,delete:`Radera persona`,name:`Namn`,description:`Beskrivning`,systemPrompt:`Systemprompt`,model:`Modell`,avatar:`Avatar`,background:`Bakgrund`,noPersonas:`Inga personas skapade`,createFirst:`Skapa din första persona för att anpassa din chattupplevelse`},gallery:{title:`Galleri`,subtitle:`Ditt AI-genererade bildgalleri`,imageCount:`{{count}} bilder`,generate:`Generera bild`,generateDescription:`Skapa bilder med AI`,generating:`Genererar...`,prompt:`Prompt`,promptPlaceholder:`Beskriv bilden du vill generera...`,noImages:`Inga bilder genererade ännu`,download:`Ladda ner`,delete:`Radera`,regenerate:`Generera om`,model:`Modell`,size:`Storlek`,quality:`Kvalitet`,created:`Skapad`},errors:{generic:`Ett fel uppstod`,network:`Nätverksfel. Kontrollera din anslutning.`,unauthorized:`Du har inte behörighet att utföra denna åtgärd.`,notFound:`Den begärda resursen hittades inte.`,serverError:`Serverfel. Försök igen senare.`,validation:`Kontrollera din inmatning och försök igen.`},keyboard:{title:`Tangentbordsgenvägar`,toggleSidebar:`Växla sidofält`,openSettings:`Öppna inställningar`,toggleDarkMode:`Växla mörkt läge`,showShortcuts:`Visa tangentbordsgenvägar`,closeModals:`Stäng dialogrutor`,groups:{navigation:`Navigering`,general:`Allmänt`,chat:`Chatt`,workspace:`Arbetsyta`},actions:{sendMessage:`Skicka meddelande`,newLine:`Ny rad i meddelande`,saveEdit:`Spara redigerat meddelande`,cancelEdit:`Avbryt redigering`,saveFile:`Spara fil`,formatCode:`Formatera kod`},description:`Alla kortkommandon som finns i Libre WebUI.`,newChat:`Ny chatt`,newWork:`Ny Work-session`,openPalette:`Öppna kommandopaletten`},modelDownload:{success:`Modellen {{name}} hämtades`,failed:`Kunde inte hämta modellen: {{error}}`,startFailed:`Kunde inte starta hämtningen`,cancelled:`Hämtningen avbröts`},modelTools:{toasts:{fetchInfoFailed:`Kunde inte hämta information`,pushSuccess:`Modellen laddades upp`,createSuccess:`Modellen skapades`,copySuccess:`Modellen kopierades`,embeddingsSuccess:`Inbäddningar genererades (se konsolen)`,failed:`Misslyckades`,unknownError:`Okänt fel`}},modelManager:{title:`Modeller`,loading:`Laddar modeller...`,systemStatus:{online:`Ollama online`,offline:`Ollama offline`,models:`modell`,models_plural:`modeller`,running:`körs`,vram:`VRAM`},sections:{pull:`Hämta ny modell`,library:`Bläddra i bibliotek`,huggingface:`HuggingFace Hub`,running:`Aktiva modeller`,local:`Lokala modeller`,advanced:`Avancerade åtgärder`,catalog:`Modellkatalog`},catalog:{searchPlaceholder:`Sök modeller efter namn eller leverantör...`,noModels:`Inga modeller är tillgängliga ännu.`,empty:`Inga modeller matchar din sökning.`,providerOllama:`Ollama`,hidden:`Dold`,visibilityFailed:`Kunde inte uppdatera modellens synlighet.`,filterAll:`Alla modeller`,filterLocal:`Lokala`,filterProviders:`Leverantörer`,filterHidden:`Dolda`,enableAll:`Aktivera visade`,disableAll:`Inaktivera visade`,rename:`Redigera namn och bild`,setPicture:`Ange bild`,clearPicture:`Ta bort bild`,pictureInvalid:`Välj en bildfil.`,pictureTooLarge:`Bilder måste vara under 192 KB.`,saving:`Sparar…`,hide:`Dölj för användare`,show:`Visa för användare`,star:`Stjärnmärk {{name}}`,unstar:`Ta bort stjärnan från {{name}}`},pull:{placeholder:`Ange modellnamn (t.ex. llama3.2:3b, deepseek-r1:14b)`,button:`Hämta`,cancel:`Avbryt`,popular:`Populära modeller:`,browseAll:`Bläddra bland alla modeller på ollama.com`,success:`Modellen {{name}} hämtades`,cancelled:`Modellhämtning avbruten`,failed:`Kunde inte hämta modell`,enterName:`Ange ett modellnamn`,restricted:`Modellinstallation är begränsad till administratörer på denna instans.`},progress:{starting:`Initierar...`,pulling:`Laddar ner modell...`,pullingLayer:`laddar ner`,verifying:`Verifierar integritet...`,verifyingDigest:`verifierar sha256-digest`,writing:`Skriver manifest...`,cleaning:`Städar upp...`},library:{available:`tillgänglig`,search:`Sök modeller...`,noResults:`Inga modeller hittades som matchar dina kriterier`,installed:`Installerad`,more:`+{{count}} fler`,refresh:`Uppdatera bibliotek`},huggingface:{browseAll:`Bläddra bland alla på HuggingFace`,checkingGguf:`Söker efter GGUF-filer...`,noGgufAvailable:`Inga GGUF-filer tillgängliga för direkt Ollama-hämtning`,ggufFilesCount:`GGUF-filer ({{count}}) - Hämta direkt till Ollama`,noModelsFound:`Inga modeller hittades`,noResults:`Inga modeller hittades. Försök justera din sökning eller filter.`,browseAllLink:`Visa alla`,search:`Sök HuggingFace-modeller...`,by:`av`,gated:`Begränsad åtkomst`,viewOnHF:`Visa på HuggingFace`,sortDownloads:`Nedladdningar`,sortLikes:`Gillar`,sortRecent:`Senaste`,taskTextGeneration:`Textgenerering`,taskTextToSpeech:`Text till tal`,taskTextToImage:`Text till bild`,taskSpeechRecognition:`Taligenkänning`,tasks:{textGen:`Textgenerering`,tts:`Text till tal`,image:`Text till bild`,stt:`Taligenkänning`},sort:{downloads:`Mest nedladdade`,likes:`Mest gillade`,recent:`Nyligen uppdaterade`}},local:{noModels:`Inga modeller installerade ännu`,pullToStart:`Hämta en modell ovan för att komma igång`,installed:`installerad`,running:`Körs`,info:`Info`,copy:`Kopiera`,delete:`Radera`,deleteConfirm:`Är du säker på att du vill radera modellen "{{name}}"?`,deleteSuccess:`Modellen {{name}} raderades`,deleteFailed:`Kunde inte radera modell`},advanced:{createModel:`Skapa modell`,fromModelfile:`Från Modelfile`,copyModel:`Kopiera modell`,duplicateExisting:`Duplicera befintlig`,testEmbeddings:`Testa inbäddningar`,generateVectors:`Generera vektorer`,healthCheck:`Hälsokontroll`,testConnection:`Testa anslutning`,healthy:`Ollama fungerar!`},modals:{details:{title:`Modelldetaljer`,info:`Modellinformation`,family:`Familj`,parameters:`Parametrar`,quantization:`Kvantisering`,format:`Format`,systemPrompt:`Systemprompt`,template:`Mall`,license:`Licens`,modelfile:`Modelfile`,noDetails:`Inga detaljer tillgängliga`},copy:{title:`Kopiera modell`,source:`Källmodell`,selectModel:`Välj en modell...`,newName:`Nytt modellnamn`,placeholder:`t.ex. min-anpassade-modell`,copying:`Kopierar...`,button:`Kopiera modell`,success:`Modellen kopierades till {{name}}`,failed:`Kunde inte kopiera modell`,enterBoth:`Ange både käll- och målnamn`},create:{title:`Skapa anpassad modell`,name:`Modellnamn`,namePlaceholder:`t.ex. min-assistent`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
2
+ SYSTEM Du är en hjälpsam assistent.`,see:`Se`,docs:`Modelfile-dokumentation`,docsLink:`för syntaxreferens`,creating:`Skapar...`,button:`Skapa modell`,success:`Modellen {{name}} skapades`,failed:`Kunde inte skapa modell`,enterBoth:`Ange modellnamn och Modelfile-innehåll`},embeddings:{title:`Testa inbäddningar`,model:`Inbäddningsmodell`,selectModel:`Välj en modell...`,recommended:`Rekommenderade: nomic-embed-text, mxbai-embed-large`,input:`Inmatningstext`,placeholder:`Ange text att generera inbäddningar för...`,generating:`Genererar...`,button:`Generera inbäddningar`,result:`Resultat ({{count}} dimensioner)`,success:`Genererade {{count}}-dimensionell inbäddningsvektor`,failed:`Kunde inte generera inbäddningar`,enterBoth:`Välj en modell och ange text`}}},personaManager:{title:`Personas`,subtitle:`Skapa och hantera AI-personas med anpassade personligheter, minnen och beteenden`,loading:`Laddar personas...`,createButton:`Skapa persona`,importExport:`Importera/Exportera`,stats:{title:`Dina personas`,count:`{{count}} persona skapad`,count_plural:`{{count}} personas skapade`},empty:{title:`Inga personas ännu`,description:`Skapa din första persona för att komma igång med personaliserade AI-interaktioner`,button:`Skapa din första persona`},deleteConfirm:`Är du säker på att du vill radera "{{name}}"?`,deleteSuccess:`Persona "{{name}}" raderades`,downloadSuccess:`Persona "{{name}}" laddades ner`,failed:`Kunde inte {{action}} persona`},personaForm:{title:{create:`Skapa ny persona`,edit:`Redigera persona`},subtitle:{create:`Skapa en ny AI-persona med anpassad personlighet, minnessystem och adaptiv inlärning`,edit:`Anpassa din AI-persona med avancerat minne, adaptiv inlärning och intelligenta parametrar`},loading:`Laddar formulär...`,saved:`Sparad`,tabs:{basic:`Grundläggande`,parameters:`Parametrar`,memory:`Minne och inlärning`,advanced:`Avancerat`,bindings:`Bindningar`},basic:{name:`Namn`,namePlaceholder:`Ange personans namn`,model:`Modell`,selectModel:`Välj en modell`,description:`Beskrivning`,descriptionPlaceholder:`Beskriv din persona...`,systemPrompt:`Systemprompt`,systemPromptPlaceholder:`Ange systemprompten som definierar din personas beteende...`,systemPromptHint:`Systemprompten definierar hur din persona kommer att bete sig och svara.`},parameters:{temperature:`Temperatur`,temperatureHint:`Styr kreativitet kontra konsekvens`,topP:`Top-P`,topPHint:`Styr svarsmångfald`,topK:`Top-K`,topKHint:`Begränsar vokabulär till top-k tokens`,contextWindow:`Kontextfönster`,contextWindowHint:`Maximal konversationshistoriklängd`,maxTokens:`Max tokens`,maxTokensHint:`Maximal svarslängd`,repeatPenalty:`Upprepningsstraff`,repeatPenaltyHint:`Minskar upprepande svar`},memory:{title:`Minnessystem`,subtitle:`Persona minns konversationer över tid`,enableHint:`Aktivera minnessystemet för att låta din persona komma ihåg konversationer och bygga upp kontext över tid.`,loading:`Laddar minnesstatus...`,noData:`Ingen minnesdata ännu`,memories:`Minnen`,mbUsed:`MB använt`,lastBackup:`Senaste säkerhetskopiering`,never:`Aldrig`,maxMemories:`Maximala minnen`,maxMemoriesHint:`Hur många minnen denna persona kan lagra`,retention:`Minnesbevarande`,retentionHint:`Dagar att behålla minnen före rensning`,autoCleanup:`Automatisk rensning av gamla minnen`,wipeAll:`Radera alla minnen`,wipeCannot:`Detta kan inte ångras`,wipeButton:`Radera`,wiping:`Raderar...`,wipeConfirm:`Är du säker på att du vill radera alla minnen? Detta kan inte ångras.`,wipeSuccess:`Raderade {{count}} minnen`},learning:{title:`Adaptiv inlärning`,subtitle:`Persona utvecklas baserat på interaktioner`,enableHint:`Aktivera adaptiv inlärning för att låta din persona utvecklas och personalisera svar baserat på dina interaktioner.`,speed:`Inlärningshastighet`,slow:`Långsam`,slowDesc:`Gradvisa förändringar`,balanced:`Balanserad`,balancedDesc:`Måttlig takt`,fast:`Snabb`,fastDesc:`Snabb anpassning`,autoAdapt:`Anpassa automatiskt till användarpreferenser`,whatLearns:`Vad personan lär sig:`,conversationTone:`Konversationston`,responseStyle:`Svarsstil`,userPreferences:`Användarpreferenser`,topicInterests:`Ämnesintressen`},advanced:{embeddingModel:`Inbäddningsmodell`,embeddingHint:`Välj modell för minneskodning och semantisk sökning. Inbäddningsmodeller visas först, följt av andra tillgängliga modeller.`,noModels:`Inga modeller hittades`,embeddingModels:`Inbäddningsmodeller`,otherModels:`Andra modeller`,installHint:`Installera en inbäddningsmodell:`,recommended:`Rekommenderade: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed`,aboutTitle:`Om avancerade inställningar`,aboutDescription:`Inbäddningsmodellen används av minnessystemet för att förstå semantisk betydelse och hitta relevanta minnen under konversationer. Välj en modell som passar ditt användningsfall och tillgängliga resurser.`},actions:{cancel:`Avbryt`,save:`Spara`,saving:`Sparar...`,saveClose:`Spara och stäng`,create:`Skapa`},success:{created:`Persona skapad`,updated:`Persona uppdaterad`},error:{saveFailed:`Kunde inte spara`},bindings:{toolServers:`Verktygsservrar`,toolServersHint:`Servrar som den här personan får anropa. Lämnas fältet tomt erbjuds alla servrar användaren redan når.`,noToolServers:`Du har inga verktygsservrar tillgängliga.`,builtinTools:`Inbyggda verktyg`,builtinToolsHint:`Verktyg som servern själv står för. Lämnas fältet tomt erbjuds alla.`,noBuiltinTools:`Det finns inga inbyggda verktyg tillgängliga.`,builtin:{web_search:`Webbsökning`,search_documents:`Sök i dokument`,load_skill:`Läs in färdighet`},skills:`Färdigheter`,skillsHint:`Färdigheter som modellen får läsa in medan den här personan är aktiv.`,noSkills:`Du har inte skapat några färdigheter än.`,collections:`Kunskapssamlingar`,collectionsHint:`Dokumentsamlingar som den här personan kan söka i.`,noCollections:`Du har inte skapat några samlingar än.`,prompt:`Prompt`,promptHint:`En prompt som varje ny chatt med den här personan startar med.`,noPrompt:`Ingen prompt`,version:`Bindningsrevision {{version}}`}},personaCard:{enhanced:`Förbättrad`,systemPrompt:`Systemprompt`,memories:`minnen`,use:`Använd`,editTooltip:`Redigera persona`,downloadTooltip:`Ladda ner persona`,backup:`Säkerhetskopiera`,exportDNA:`Exportera DNA`,wipeMemories:`Radera minnen`,wipeConfirm:`Är du säker på att du vill radera alla minnen för denna persona? Denna åtgärd kan inte ångras.`,wipeSuccess:`Raderade {{count}} minnen`,backupSuccess:`Personans säkerhetskopia laddades ner`,dnaSuccess:`Personans DNA exporterades`,failed:`Kunde inte {{action}}`,shareTooltip:`Dela denna persona`},userManager:{title:`Användarhantering`,subtitle:`Hantera användarkonton och behörigheter`,pageDescription:`Hantera användarkonton, behörigheter och åtkomstkontroller för din Libre WebUI-instans.`,loading:`Laddar användare...`,createUser:`Skapa användare`,search:`Sök användare...`,noUsers:`Inga användare hittades`,noUsersMatching:`Inga användare matchar din sökning`,columns:{user:`Användare`,email:`E-post`,role:`Roll`,created:`Skapad`,actions:`Åtgärder`},roles:{admin:`Administratör`,user:`Användare`},noEmail:`Ingen e-post`,deleteConfirm:`Är du säker på att du vill radera användaren "{{name}}"?`,deleteSuccess:`Användaren raderades`,deleteFailed:`Kunde inte radera användare`,cannotDeleteSelf:`Du kan inte radera ditt eget konto`,approval:{title:`Väntande godkännanden`,description:`Granska nya registreringar innan de tillåts i denna instans.`,registered:`Registrerad`,activate:`Aktivera konto`,reject:`Neka registrering`,approved:`{{name}} kan nu logga in.`,failed:`Kontot kunde inte godkännas.`,notification:`{{count}} registrering(ar) väntar på ditt godkännande.`,notificationBadge:`{{count}} väntande användargodkännanden`},form:{title:{create:`Skapa användare`,edit:`Redigera användare`},username:`Användarnamn`,usernamePlaceholder:`Ange användarnamn`,email:`E-post`,emailPlaceholder:`Ange e-post (valfritt)`,password:`Lösenord`,passwordPlaceholder:`Ange lösenord`,passwordHint:`Lämna tomt för att behålla nuvarande lösenord`,role:`Roll`,creating:`Skapar...`,updating:`Uppdaterar...`,createButton:`Skapa användare`,updateButton:`Uppdatera användare`,createSuccess:`Användaren skapades`,updateSuccess:`Användaren uppdaterades`,createFailed:`Kunde inte skapa användare`,updateFailed:`Kunde inte uppdatera användare`},workAccess:{title:`Work-åtkomst`,description:`Tillåt alla aktiva användare att skapa och köra Work-uppgifter i isolerade sandlådor. Administratörer har alltid åtkomst; arbetsytor i värdmappar förblir endast för administratörer.`,saved:`Work-åtkomst uppdaterad`,saveFailed:`Kunde inte uppdatera Work-åtkomst`},workPolicies:{title:`Work-policyer`,description:`Namngivna körningsförval (image, gränser, tomgångsstopp) som uppgifter kan skapas under. Tomma fält ärver de globala standarderna.`,add:`Lägg till policy`,name:`Namn`,image:`Image`,memory:`Minne`,cpu:`CPU:er`,pids:`PID-gräns`,workspaceSize:`Arbetsytans storlek`,idleMinutes:`Tomgångsstopp (minuter)`,networkDefault:`Nätverksstandard`,networkInherit:`Ärv standard`,networkOn:`Aktiverad`,networkOff:`Inaktiverad`,save:`Spara`,cancel:`Avbryt`,edit:`Redigera policy`,delete:`Ta bort policy`,deleteConfirm:`Ta bort denna policy? Uppgifter som använder den faller tillbaka till de globala standarderna.`,empty:`Inga policyer ännu. Uppgifter använder de globala körningsstandarderna.`,saved:`Work-policy sparad`,deleted:`Work-policy borttagen`,failed:`Kunde inte spara Work-policyn`,invalidNumber:`PID-gräns och tomgångsstopp måste vara tal.`,guiEnabled:`Work Computer (GUI + webbläsare)`,takeoverEnabled:`Tillåt övertagande av skärmen`,computerPreset:`Work Computer`,computerPresetHint:`Work Computer kräver GUI-avbilden: bygg den från deploy/work-computer i repositoriet och tagga den libre-work-computer:latest.`,approvalsRequired:`Kräv godkännande för åtgärder med sidoeffekter`},modelAccess:{title:`Modellnedladdningar`,description:`Tillåt alla aktiva användare att hämta modeller från Ollama och Hugging Face-bläddraren. Administratörer kan alltid hämta modeller.`,saved:`Åtkomst till modellnedladdning uppdaterad`,saveFailed:`Kunde inte uppdatera åtkomst till modellnedladdning`},webSearchAccess:{title:`Webbsökning`,description:`Tillåt alla aktiva användare att använda webbsökning i chattar och Work-uppgifter. Administratörer kan alltid använda den. Motorn konfigureras under Inställningar > Sökning.`,saved:`Åtkomst till webbsökning uppdaterad`,saveFailed:`Kunde inte uppdatera åtkomst till webbsökning`},agentAccess:{title:`Agenter`,description:`Erbjud sektionen Agenter (Libre Claw) för administratörer. Agent-CLI:er körs på värden som serveranvändaren, utanför Work-sandlådan.`,saved:`Agentåtkomst uppdaterad`,saveFailed:`Kunde inte uppdatera agentåtkomst`,lockedByEnv:`Låst av miljövariabeln AGENT_CLI_MODELS_ENABLED.`},groups:{title:`Grupper`,description:`Gruppera konton för att hantera delad åtkomst och se vad ett konto faktiskt kan göra.`,newGroup:`Ny grupp`,nameLabel:`Namn`,nameRequired:`Ge gruppen ett namn.`,descriptionLabel:`Beskrivning (valfritt)`,create:`Skapa grupp`,creating:`Skapar…`,created:`Gruppen har skapats.`,createFailed:`Gruppen kunde inte skapas.`,deleted:`Gruppen har tagits bort.`,deleteFailed:`Gruppen kunde inte tas bort.`,deleteGroup:`Ta bort grupp`,loadFailed:`Grupperna kunde inte läsas in.`,empty:`Inga grupper ännu.`,memberCount:`Medlemmar: {{count}}`,noMembers:`Inga medlemmar ännu.`,addedAt:`Tillagd`,addMember:`Lägg till medlem`,add:`Lägg till`,selectUser:`Välj en användare…`,memberAdded:`Medlemmen har lagts till.`,memberAddFailed:`Medlemmen kunde inte läggas till.`,removeMember:`Ta bort medlem`,memberRemoved:`Medlemmen har tagits bort.`,memberRemoveFailed:`Medlemmen kunde inte tas bort.`,effectiveTitle:`Effektiv åtkomst`,effectiveDescription:`Välj ett konto för att se vilken åtkomst det får sammanlagt via roll, grupper och tilldelningar.`,accessLookupFailed:`Den effektiva åtkomsten kunde inte läsas in.`,roleLabel:`Roll`,statusLabel:`Status`,memberOf:`Grupper`,featuresLabel:`Funktionsåtkomst`,grantsLabel:`Tilldelningar`,grantVia:`via`},audit:{title:`Säkerhetslogg`,description:`Senaste inloggningar, behörighetskontroller och administrativa ändringar på denna instans.`,actionFilter:`Åtgärd`,actionPlaceholder:`t.ex. auth.login`,resultFilter:`Resultat`,resultSuccess:`Lyckades`,resultDenied:`Nekad`,resultFailure:`Misslyckades`,limitFilter:`Gräns`,loadFailed:`Granskningsloggen kunde inte läsas in.`,empty:`Inga granskningshändelser registrerade ännu.`,actor:`Aktör`,target:`Mål`},tools:{title:`Verktygsåtkomst`,description:`Låt alla anropa verktygsservrar. När det är av kan bara administratörer göra det.`,saved:`Verktygsåtkomsten uppdaterades`,saveFailed:`Verktygsåtkomsten kunde inte uppdateras.`,lockedByEnv:`Låst av en miljövariabel på den här servern.`},voice:{title:`Röståtkomst`,description:`Styr vem som får använda röstfunktioner. Administratörer har alltid åtkomst.`,lockedByEnv:`Låst av en miljövariabel`,saved:`Röståtkomst uppdaterad`,saveFailed:`Det gick inte att uppdatera röståtkomsten`,features:{stt:`Tal till text`,tts:`Text till tal`,voiceMode:`Röstläge`,voiceCloning:`Röstkloning`}},mfaPolicy:{title:`Tvåfaktorspolicy`,description:`Om konton måste slutföra ett andra inloggningssteg.`,requireAll:`Kräv tvåfaktor för alla användare`,requireAllHint:`Användare utan en andra faktor får ställa in den vid nästa inloggning.`,lockedByEnv:`Låst av MFA_REQUIRED_MODE.`,saved:`Tvåfaktorspolicy sparad.`,saveFailed:`Tvåfaktorspolicyn kunde inte sparas.`},mfaReset:`Återställ tvåfaktor`,mfaResetConfirm:`Ta bort den andra faktorn för {{name}}? Inloggning med lösenord och ny konfiguration är fortfarande möjlig.`,mfaResetSuccess:`Tvåfaktor borttagen för {{name}}.`,mfaResetNothing:`{{name}} hade ingen tvåfaktor.`,mfaResetFailed:`Återställningen misslyckades.`,ollamaProvider:{title:`Ollama-leverantör`,description:`När det är avstängt slutar appen helt att leta efter Ollama — inga hälsokontroller, inga varningar. Endpointen kan peka på vilken Ollama-kompatibel gateway som helst.`,saved:`Inställningarna för Ollama-leverantören har sparats`,saveFailed:`Det gick inte att spara inställningarna för Ollama-leverantören`,baseUrlLabel:`Endpoint-URL för Ollama`}},usageAnalytics:{eyebrow:`Administration`,title:`Leverantörsanvändning`,description:`Följ utgående API-anrop och modellförbrukning över de aktiverade pluginsen i denna instans.`,days:`{{count}} dagar`,refresh:`Uppdatera användning`,loadFailed:`Leverantörsanvändning kunde inte laddas.`,metrics:{calls:`Anrop`,tokens:`Tokens`},cards:{calls:`API-anrop`,callsDetail:`Över {{count}} aktiv(a) användare`,tokens:`Rapporterade tokens`,tokensDetail:`Användning rapporterad på {{count}} anrop`,success:`Framgångsfrekvens`,successDetail:`{{count}} misslyckade anrop`,latency:`Genomsnittlig latens`,latencyDetail:`Leverantörens tid från ände till ände`},activity:{title:`Förbrukning över tid`,callsDescription:`Dagliga utgående förfrågningar till aktiverade plugins`,tokensDescription:`Dagliga token-totaler rapporterade av leverantörer`,chartLabel:`Dagligt diagram över leverantörens {{metric}}`},models:{title:`Modellförbrukning`,description:`Modellerna med mest trafik under denna period.`,model:`Modell`,success:`Lyckade`,latency:`Latens`},providers:{title:`Trafik för aktiverade plugins`},capabilities:{title:`Kapabilitetsmix`,characters:`{{count}} tecken`,bytes:`{{count}} byte`,images:`{{count}} bilder`,jobs:`{{count}} videojobb`,inputs:`{{count}} indata`,reportedTokens:`{{count}} rapporterade tokens`},empty:{title:`Inga leverantörsanrop ännu`,description:`Anrop visas här efter att en aktiverad plugin hanterar chatt-, Work-, inbäddnings-, bild-, tal-, ljud- eller videoförfrågningar.`},privacyNote:`Användning mäts på servern vid den utgående plugin-gränsen. Libre WebUI lagrar leverantör, modell, tidsmätning, status och rapporterade räknare—aldrig prompts, svar, ändpunkter, autentiseringsuppgifter eller leverantörsfelkroppar. Token-totaler inkluderar endast anrop där leverantören returnerade användningsmetadata.`,heatmap:{title:`Ett år av aktivitet`,description:`Dagliga leverantörsanrop under det senaste året, färgade efter dagens mest använda modell.`,calls:`anrop`,noCalls:`Inga anrop`,other:`Övriga modeller`,less:`Mindre`,more:`Mer`,yearTotal:`{{formatted}} anrop under det senaste året`}},systemPage:{eyebrow:`Administration`,title:`System`,description:`Övervaka maskinen och körningsmiljön som är värd för denna Libre WebUI-instans.`,updated:`Uppdaterad {{date}}`,refresh:`Uppdatera systeminformation`,loadFailed:`Systeminformation kunde inte läsas in.`,cards:{uptime:`Värdens drifttid`,uptimeDetail:`Körs sedan {{date}}`,memory:`Använt minne`,memoryDetail:`{{used}} av {{total}}`,freeSpace:`Ledigt utrymme`,freeSpaceDetail:`{{label}} · {{total}} totalt`,containers:`Körande containrar`,containersDetail:`{{total}} container(s) kända av Docker`,dockerUnavailable:`Docker otillgänglig`,unavailable:`Otillgänglig`},host:{title:`Värd & körningsmiljö`,description:`Operativsystem, processor och Libre WebUI-processdetaljer.`,container:`Container-körningsmiljö`,native:`Inbyggd körning`,hostname:`Värdnamn`,operatingSystem:`Operativsystem`,processor:`Processor`,logicalCpus:`logiska CPU:er`,loadAverage:`Belastningsmedelvärde · 1 / 5 / 15 min`,libreVersion:`Libre WebUI`,nodeVersion:`Node.js`,process:`Process`,workingDirectory:`Arbetskatalog`},memory:{title:`Minne`,description:`Systemminne synligt vid körning samt processanvändning för applikationen.`,usedOf:`{{used}} använt av {{total}}`,free:`{{value}} ledigt`,processRss:`Process-RSS`,heapUsed:`V8-heap använt`,heapTotal:`V8-heap totalt`,external:`Externt minne`},storage:{title:`Lagring`,description:`Tillgängligt utrymme för körningsmiljöns filsystem och beständig applikationsdata.`,used:`{{value}} använt`,free:`{{value}} ledigt`,empty:`Filsystemsinformation är inte tillgänglig i denna körningsmiljö.`},docker:{title:`Docker`,description:`Skrivskyddad Docker Engine-status och en begränsad lista över containrar.`,connected:`Ansluten`,unavailable:`Otillgänglig`,unavailableDetail:`Docker Engine-diagnostik är otillgänglig.`,socketStatus:`Lokal socket: {{status}}`,mounted:`monterad`,notMounted:`inte monterad`,running:`Körs`,stopped:`Stoppad`,paused:`Pausad`,total:`Totalt`,version:`Version`,host:`Värd`,architecture:`Arkitektur`,cpus:`CPU:er`,memory:`Minne`,container:`Container`,image:`Avbildning`,state:`Tillstånd`,created:`Skapad`,empty:`Docker är anslutet och inga containrar listas för närvarande.`},network:{title:`Nätverk`,description:`Körningsmiljöns synliga gränssnitt, adresser och Linux-trafikräknare.`,internal:`intern`,empty:`Inga nätverksgränssnitt är synliga för programmets körningsmiljö.`},securityNote:`Denna sida är begränsad till administratörer. Servern returnerar endast driftsammanfattningar: den exponerar inte miljövariabler, autentiseringsuppgifter, Docker-etiketter, monteringar, container-kommandon eller inspektionsnyttolaster. När Libre WebUI körs i en container kommer värdnivåns CPU- och minnesdetaljer från Docker Engine när dess lokala socket är tillgänglig; andra värden beskriver programmets körningsmiljö.`,work:{title:`Work`,description:`Sandlådor för alla användare`,access:`Åtkomst`,accessAdmins:`Endast administratörer`,accessAllUsers:`Alla användare`,runtimeAvailable:`Tillgänglig`,runtimeUnavailable:`Otillgänglig`,activeRuntimes:`Aktiva körmiljöer`,pendingCleanups:`Väntande rensningar`,orphans:`Föräldralösa containrar`,owner:`Ägare`,task:`Uppgift`,state:`Tillstånd`,preview:`Förhandsvisning`,terminals:`Terminaler`,updated:`Uppdaterad`,stateRunning:`Körs`,stateStopped:`Stoppad`,stateStarting:`Startar`,stateUnknown:`Okänd`,noTasks:`Inga Work-uppgifter ännu.`},recovery:{title:`Återställningsövningar`,scheduleOn:`Körs automatiskt var {{hours}} h — varje övning säkerhetskopierar, återställer i en isolerad kopia och verifierar resultatet.`,scheduleOff:`Inte schemalagt — ange RECOVERY_DRILL_INTERVAL_HOURS för automatiska övningar.`,teamUnsupported:`Övningar gäller soloprofilen (SQLite); teamprofilen använder den samordnade backup-CLI:n.`,runNow:`Kör övning nu`,running:`Kör…`,passed:`Återställningsövningen lyckades.`,failed:`Återställningsövningen misslyckades.`,lastPassed:`Senast lyckad`,restoreTime:`Återställningstid (RTO)`,drillSpacing:`Övningsintervall (RPO)`,archiveSize:`Arkivstorlek`,lastFailed:`Senaste övningen misslyckades {{date}}`,originManual:`Manuell`,originScheduled:`Schemalagd`,columns:{when:`När`,origin:`Ursprung`,status:`Status`,restore:`Återställning`},status:{passed:`Lyckad`,failed:`Misslyckad`,running:`Kör`}}},chatHistory:{label:`Konversationshistorik`,jumpToTurn:`Gå till tur {{index}} av {{total}}`},chatMessage:{you:`Du`,assistant:`Assistent`,system:`System`,conversationSummary:`Sammanfattning av samtalet`,restoreCompacted:`Återställ de sammanfattade meddelandena`,restoreFailed:`De sammanfattade meddelandena kunde inte återställas`,copy:`Kopiera`,copyMessage:`Kopiera meddelande`,copied:`Kopierat!`,regenerate:`Generera om`,regenerateResponse:`Generera om svar`,edit:`Redigera`,editSystemMessage:`Redigera systemmeddelande`,saveChanges:`Spara ändringar`,cancelEditing:`Avbryt redigering`,saveAndSubmit:`Spara och skicka`,goodResponse:`Bra svar`,badResponse:`Dåligt svar`,delete:`Radera`,deleteConfirm:`Radera detta meddelande?`,branch:`Förgrena`,speaking:`Talar...`,speakMessage:`Läs upp meddelande`,stopSpeaking:`Sluta tala`,showMore:`Visa mer`,showLess:`Visa mindre`,thinking:`Tänker`,thoughtFor:`Tänkte i {{duration}}`,hiddenLines:`{{count}} dolda rader`,systemMessagePlaceholder:`Ange ditt systemmeddelande...`,fullSizeImage:`Fullstor bild`,startConversation:`Starta en konversation`,startConversationDescription:`Skicka ett meddelande för att börja chatta med din AI-assistent. Ställ frågor, få hjälp med kod eller ha en naturlig konversation.`,scrollToBottom:`Scrolla till botten`,newMessages:`Nya meddelanden`,feedbackTags:{accuracy:`Noggrannhet`,style:`Stil`,incomplete:`Ofullständig`,harmful:`Skadlig`,formatting:`Formatering`},feedbackComment:`Lägg till en kommentar…`},imageGallery:{title:`Bildgalleri`,noImages:`Inga bilder ännu`,noImagesHint:`Generera din första bild med panelen till höger`,delete:`Radera`,download:`Ladda ner`,deleteConfirm:`Är du säker på att du vill radera denna bild?`,deleteSuccess:`Bilden raderades`,deleteFailed:`Kunde inte radera bild`,downloadFailed:`Kunde inte ladda ner bild`,loadMore:`Ladda fler ({{current}} av {{total}})`,loadFailed:`Kunde inte ladda galleri`},imageGeneration:{title:`Generera bild`,prompt:`Prompt`,promptPlaceholder:`Beskriv bilden du vill skapa...`,model:`Modell`,selectModel:`Välj modell`,noModels:`Inga bildgenereringsmodeller tillgängliga`,configurePlugin:`Konfigurera ett tillägg med bildgenereringsstöd`,size:`Storlek`,quality:`Kvalitet`,style:`Stil`,generate:`Generera`,generating:`Genererar...`,success:`Bilden genererades`,failed:`Kunde inte generera bild`,enterPrompt:`Ange en prompt`,promptTooLong:`Prompten överstiger maxlängden på {{max}} tecken`},mediaGeneration:{title:`Generera media`,description:`Skapa video, ljud, musik eller tal med en aktiverad medieleverantör.`,image:`Bild`,video:`Video`,audio:`Ljud`,sound:`Ljud`,speech:`Tal`,model:`Modell`,voice:`Röst eller röst-ID`,cloneVoice:`Klona en referensröst`,cloneVoiceDescription:`Generera talet utifrån en referensinspelning i stället för en förinställd röst.`,referenceAudio:`Referensljud`,referenceTranscript:`Exakt transkription av referensen`,referenceTranscriptPlaceholder:`Ange exakt vad som sägs i referensinspelningen…`,referenceAudioTooLarge:`Referensljudet får vara högst {{max}}.`,cloneConsent:`Klona bara en röst när du har talarens tillstånd. Inspelningen skickas till den valda leverantören för denna generering och sparas inte av Libre WebUI.`,saveVoiceProfile:`Spara som en återanvändbar röst`,saveVoiceProfileDescription:`Spara referensinspelningen och transkriptionen säkert. Libre WebUI skickar dem till den valda leverantören för varje talbatch som använder rösten.`,voiceProfileName:`Namn på sparad röst`,voiceProfileNamePlaceholder:`Till exempel Min röst`,voiceStorageConsent:`Jag bekräftar att jag har talarens tillstånd att klona och spara rösten. Referensen sparas tills jag tar bort den.`,resolution:`Upplösning`,aspectRatio:`Bildförhållande`,duration:`Längd`,providerDefault:`Leverantörens standard`,generateAudio:`Generera ljud med videon när det stöds`,prompt:`Prompt`,text:`Text att läsa upp`,videoPlaceholder:`Beskriv scenen, rörelsen, kameran och ljussättningen...`,audioPlaceholder:`Skriv in texten du vill att rösten ska läsa upp...`,soundPlaceholder:`Beskriv ljudet, musiken, atmosfären eller det talade svaret du vill ha...`,generate:`Generera`,generating:`Genererar… detta kan ta flera minuter`,success:`Media genererad och sparad till Imagine`,successWithSavedVoice:`Mediet har skapats och ”{{name}}” är nu tillgänglig i talinställningarna`,failed:`Misslyckades att generera media`,loadFailed:`Misslyckades att ladda medieleverantörer`,noModels:`Inga {{kind}}-modeller är tillgängliga. Aktivera en kompatibel leverantör och spara dess autentiseringsuppgifter först.`,consentTtl:{label:`Samtyckets varaktighet`,never:`Tills jag återkallar det`,days30:`30 dagar`,days90:`90 dagar`,days365:`Ett år`}},mediaGallery:{itemCount:`{{count}} objekt`,empty:`Ingen genererad media ännu`,emptyHint:`Generera en bild, video eller ett röstklipp så visas det här.`,filters:{all:`Alla`,image:`Bilder`,video:`Videor`,audio:`Ljud`}},errorBoundary:{title:`Något gick fel`,description:`Vi stötte på ett oväntat fel. Försök att uppdatera sidan.`,tryAgain:`Uppdatera sidan`,goHome:`Gå till startsidan`,errorDetails:`Feldetaljer (utveckling)`},documents:{title:`Dokument`,upload:`Ladda upp dokument`,uploading:`Laddar upp...`,noDocuments:`Inga dokument uppladdade`,uploadHint:`Ladda upp dokument för att använda i dina konversationer`,delete:`Radera`,deleteConfirm:`Är du säker på att du vill radera detta dokument?`,deleteSuccess:`Dokumentet raderades`,deleteFailed:`Kunde inte radera dokument`,uploadSuccess:`Dokumentet laddades upp`,uploadFailed:`Kunde inte ladda upp dokument`,types:`Stöder: PDF, TXT, MD, DOCX`,unsupportedFileType:`Den här filtypen stöds inte`,fileSizeTooLarge:`Filstorleken måste vara mindre än 10MB`,uploadSuccessWithName:`Dokumentet "{{name}}" laddades upp`,removeSuccess:`Dokumentet togs bort`,removeFailed:`Kunde inte ta bort dokument`,removeError:`Ett fel uppstod vid borttagning av dokumentet`,clickToUpload:`Klicka för att ladda upp`,orDragAndDrop:`eller dra och släpp`,fileTypesAndSize:`PDF-, Office-, Markdown-, HTML-, kod-, CSV-, bild- och ljudfiler upp till 10 MB`,uploadedDocuments:`Uppladdade dokument`,removeDocument:`Ta bort dokument`,fullContextToggle:`Skicka hela dokument`,fullContextEstimate:`≈ {{tokens}} tokens`,fullContextTooLarge:`De bifogade dokumenten överskrider gränsen för full kontext, så sökning användes i stället`,fullDocument:`Helt dokument`},ttsButton:{speak:`Tala`,stop:`Stoppa`,speaking:`Talar...`,generateFailed:`Kunde inte generera tal`,playbackFailed:`Ljuduppspelning misslyckades`,stopSpeaking:`Sluta tala`,preparingSpeech:`Förbereder tal...`,generatingSpeech:`Genererar tal...`,bufferingSpeech:`Buffrar tal...`,enableAudio:`Aktivera ljud och läs högt`,enableAudioShort:`Aktivera ljud`,readAloud:`Läs högt`},artifacts:{title:`Artefakter`,code:`Kod`,preview:`Förhandsgranskning`,copy:`Kopiera kod`,copied:`Kopierat!`,download:`Ladda ner`,expand:`Expandera`,collapse:`Minimera`,openInNewTab:`Öppna i ny flik`,invalidSvg:`Ogiltigt SVG-innehåll`,invalidJson:`Ogiltigt JSON-innehåll`,previewMode:`Förhandsgranskningsläge`,codeMode:`Kodläge`,copyContent:`Kopiera innehåll`,openInPanel:`Öppna i panel`,created:`Skapad`,closePanelEsc:`Stäng panel (Esc)`,copyButton:`Kopiera`,dragEdgeToResize:`Dra i kanten för att ändra storlek`,previewUnavailable:`Preview unavailable`,previewUnavailableDescription:`This artifact does not contain renderable preview content. Switch to code view to inspect the source.`,versionOf:`Version {{current}} av {{total}}`,previousVersion:`Föregående version`,nextVersion:`Nästa version`},personaImportExport:{title:`Importera och exportera personas`,description:`Exportera dina personas för att dela dem eller importera personas från andra`,exportPersonas:`Exportera personas`,importPersonas:`Importera personas`,noPersonasToExport:`Inga personas att exportera`,personasAvailable:`{{count}} persona tillgänglig`,personasAvailable_plural:`{{count}} personas tillgängliga`,exportAll:`Exportera alla`,uploadJsonFile:`Ladda upp JSON-fil`,pasteJsonLabel:`Klistra in JSON-data`,pasteJsonPlaceholder:`Klistra in persona JSON-data här...`,importing:`Importerar...`,importButton:`Importera persona(s)`,expectedFormat:`Förväntat JSON-format:`,exportSuccess:`Persona "{{name}}" exporterades`,exportFailed:`Kunde inte exportera persona`,exportAllSuccess:`Alla {{count}} personas exporterades`,exportAllFailed:`Kunde inte exportera personas`,pasteJsonData:`Klistra in persona JSON-data`,importMultipleSuccess:`Importerade {{count}} personas`,importMultipleFailed:`Kunde inte importera {{count}} personas`,importNoneFailed:`Kunde inte importera några personas`,importSuccess:`Persona importerades`,importFailed:`Kunde inte importera persona`},generationStats:{details:`Detaljer`,promptTokens:`Prompttokens:`,generatedTokens:`Genererade tokens:`,totalTokens:`Totalt tokens:`,speed:`Hastighet:`,promptEval:`Promptutvärdering:`,generation:`Generering:`,modelLoad:`Modellladdning:`,totalTime:`Total tid:`,generatedAt:`Genererat kl.:`},userMenu:{loggedOut:`Utloggad`,pictureUpdated:`Profilbild uppdaterad`,failedUpdateAvatar:`Det gick inte att uppdatera avatar`,failedUpdatePicture:`Det gick inte att uppdatera profilbild`,noEmail:`Ingen e-post angiven`,changePicture:`Byt bild`,settings:`Inställningar`,userManagement:`Användarhantering`,signOut:`Logga ut`,changeProfilePicture:`Byt profilbild`},pluginManager:{title:`Pluginhanterare`,upload:`Ladda upp`,addJson:`Lägg till JSON`,browseHF:`Bläddra i HF Hub`,confirmDelete:`Är du säker på att du vill ta bort detta plugin?`,uploading:`Laddar upp plugin...`,pasteJson:`Klistra in plugin-JSON här...`,installPlugin:`Installera plugin`,loading:`Laddar plugins...`,noPlugins:`Inga plugins installerade`,noPluginsDescription:`Ladda upp en pluginfil eller lägg till ett plugin från JSON för att komma igång.`,active:`Aktiv`,id:`ID`,endpoint:`Endpoint`,activate:`Aktivera`,deactivate:`Inaktivera`,activePlugin:`Aktivt plugin`,activePluginDescription:`Alla chattförfrågningar dirigeras genom detta plugin`,variables:{title:`Variabler`,save:`Spara`,saving:`Sparar...`,saved:`Variabler sparade`,saveFailed:`Kunde inte spara variabler`,resetDefaults:`Återställ standard`,reset:`Variabler återställda`,resetFailed:`Det gick inte att återställa variabler`,sensitiveSet:`Värde är satt (ange nytt för att ändra)`,showValue:`Visa {{label}}-värde`,hideValue:`Dölj {{label}}-värde`,connection:`Anslutning`,advanced:`Avancerade parametrar`,inherited:`Använd leverantörens standard`,inheritedValue:`Använd leverantörens standard ({{value}})`,enabled:`Aktiverad`,disabled:`Inaktiverad`,required:`Ett värde krävs`,fullApiEndpoint:`Fullständig API-slutpunkts-URL`,endpointHelp:`Ange den fullständiga begärande-URL:en, inklusive dess operationssökväg (till exempel /v1/chat/completions), inte bara leverantörens bas-URL.`,invalidUrl:`Ange en giltig fullständig API-slutpunkts-URL, till exempel https://provider.example/v1/chat/completions`,insecureUrl:`API-slutpunkter måste använda HTTP eller HTTPS.`,httpWarning:`HTTP krypterar inte inloggningsuppgifter eller trafik. Använd det endast i ett betrott nätverk.`,invalidBaseUrl:`Bas-URL:er får inte innehålla en frågesträng eller fragment.`,invalidApiPath:`Måste börja med / och får inte innehålla URL, fråga, fragment eller ..-segment`,tooLong:`Värdet är för långt`}},huggingface:{title:`HuggingFace modellbläddrare`,subtitle:`Bläddra och välj modeller från Hub`,searchPlaceholder:`Sök modeller...`,filters:`Filter`,task:`Uppgift`,sortBy:`Sortera efter`,noModels:`Inga modeller hittades`,adjustSearch:`Försök justera din sökning eller filter`,gated:`Begränsad`,selected:`Valt`,select:`Välj`,refresh:`Uppdatera`,modelsFound:`modeller hittade`},demoMode:{title:`Demoläge`,github:`GitHub`},libreClaw:{title:`Agenter`,subtitle:`Lokala agentkörningar, godkännanden, scheman, minne, verktyg och användning.`,dashboard:`Översikt`,connection:{disconnectedTitle:`Libre Claw-daemonen är inte ansluten`,disconnectedDescription:`Starta den lokalt med <command>libre-claw start</command> eller ställ in <env>LIBRE_CLAW_BASE_URL</env> i backend-miljön.`},status:{connected:`Ansluten`,disconnected:`Frånkopplad`,activeRuns:`{{count}} aktiv`,activeRuns_plural:`{{count}} aktiv`},states:{queued:`I kö`,running:`Körs`,blocked:`Blockerad`,done:`Klart`,failed:`Misslyckades`,cancelled:`Avbruten`},startRun:{title:`Starta agentkörning`,placeholder:`Be Libre Claw att inspektera en repo, fixa en bugg, köra en granskning, schemalägga en rapport...`,chatRun:`Chattkörning`,goalMode:`Målläge`,providerOverride:`Åsidosättande av leverantör`,modelOverride:`Modell åsidosättande`,run:`Kör`},modelRoute:{title:`Modellväg`,providerPlaceholder:`leverantör`,modelPlaceholder:`modell`,persistGlobal:`Fortsätt till Libre Claw global konfiguration`,saveModel:`Spara modell`,theme:`Libre Claw-tema`,saveTheme:`Spara tema`},runs:{title:`Körningar`,empty:`Inga Libre Claw-körningar ännu.`},timeline:{title:`Körningstidslinje`,empty:`Välj en körning för att inspektera dess händelser.`,streaming:`Streamar...`,assistantResponse:`Assistentsvar`,resultOk:`okej`,resultError:`fel`,labels:{userMessage:`Användarmeddelande`,toolCall:`Verktygsanrop`,toolResult:`Verktygsresultat`,approvalRequest:`Begäran om godkännande`,approvalResponse:`Godkännande svar`,runStarted:`Körning startad`,runFinished:`Körning avslutad`,usage:`Användning`,error:`Fel`}},approvals:{needed:`Godkännande behövs`,allowOnce:`Tillåt en gång`,alwaysAllowTool:`Tillåt alltid verktyg`,deny:`Neka`,toolApprovalRequested:`Verktygsgodkännande begärs`},automations:{title:`Automatiseringar`,namePlaceholder:`Namn`,schedulePlaceholder:`daily 09:00`,promptPlaceholder:`Automatiseringsprompt`,create:`Skapa`,empty:`Inga schemalagda Libre Claw-automatiseringar.`,runNow:`Kör nu`,pause:`Pausa`,resume:`Återuppta`,routes:{report:`Rapportera`,telegram:`Telegram`},status:{active:`Aktiv`,paused:`Pausad`}},usageFallback:{title:`Användning och reserv`,usage:`Användning`,fallbackRoute:`Reservrutt`,noUsage:`Inga användningsuppgifter ännu.`},metrics:{provider:`Leverantör`,model:`Modell`,input:`Ingång`,output:`Utgång`,cached:`Cachad`,reasoning:`Resonemang`,cost:`Kostnad`,tool:`Verktyg`,resolution:`Upplösning`,state:`Status`,stopReason:`Stopporsak`,tokens:`{{formatted}} token`,tokens_plural:`{{formatted}} polletter`},fallbacks:{tool:`verktyg`,unknown:`okänt`,resolved:`löst`,unknownError:`Okänt fel`},toasts:{loadStatusFailed:`Kunde inte ladda Libre Claw status`,enterTask:`Ange en uppgift för Libre Claw`,runStarted:`Libre Claw-körning startad`,startRunFailed:`Kunde inte starta Libre Claw-körning`,runCancelled:`Körning avbruten`,cancelRunFailed:`Det gick inte att avbryta körningen`,approved:`Godkänd`,denied:`Nekad`,resolvePermissionFailed:`Det gick inte att lösa behörigheten`,providerModelRequired:`Leverantör och modell krävs`,modelUpdated:`Libre Claw-modellen uppdaterad`,updateModelFailed:`Kunde inte uppdatera modellen`,themeUpdated:`Libre Claw-tema uppdaterat`,updateThemeFailed:`Det gick inte att uppdatera temat`,automationRequired:`Automationsnamn, schema och uppmaning krävs`,automationCreated:`Automatisering skapad`,createAutomationFailed:`Det gick inte att skapa automatisering`,automationUpdated:`Automatisering uppdaterad`,updateAutomationFailed:`Det gick inte att uppdatera automatiseringen`}},work:JSON.parse(`{"title":"Arbete","subtitle":"Isolerade arbetsytor för modeller","tasks":{"title":"Arbetsuppgifter","subtitle":"Beständiga lokala arbetsytor","new":"Ny uppgift","emptyTitle":"Inga arbetsuppgifter än","empty":"Dina arbetsuppgifter visas här när du har skickat det första meddelandet.","untitled":"Namnlös uppgift","actions":"Uppgiftsåtgärder","delete":"Ta bort uppgift","deleteNamed":"Ta bort {{title}}","deleteConfirm":"Ta bort ”{{title}}” och dess arbetsyta permanent?","close":"Stäng arbetsuppgifter","open":"Öppna arbetsuppgifter","rename":"Uppgiftstitel","loading":"Läser in uppgift…","notFound":"Den här arbetsuppgiften är inte tillgänglig","back":"Starta en ny uppgift","status":"Status: {{status}}"},"landing":{"title":"Starta en ny arbetsuppgift","description":"Ge en lokal modell eller en modell från en konfigurerad leverantör en beständig, isolerad arbetsyta. Den kan granska filer, köra verktyg och fortsätta där den slutade när du återvänder.","isolated":"Isolerad","isolatedBody":"Varje uppgift får en egen container och egna filer.","durable":"Beständig","durableBody":"Återvänd senare till konversationen och arbetsytan.","controlled":"Kontrollerad","controlledBody":"Körmiljön och uppgiftsfilerna förblir isolerade från värdsystemet."},"composer":{"placeholder":"Beskriv vad du vill skapa eller ändra…","model":"Modell för arbete","noModels":"Inga modeller som är kompatibla med Arbete","cancel":"Stoppa","send":"Kör","hint":"Varje uppgift behåller sina egna filer och sin historik. Granska modellens utdata innan du använder dem.","remoteTitle":"Fjärrleverantör","remoteHint":"Konversationen och verktygens utdata skickas till den konfigurerade tjänsten. En autonom körning kan göra flera leverantörsanrop och medföra kostnader. Filerna på arbetsytan stannar lokalt om inte ett verktyg returnerar deras innehåll.","remoteDismiss":"Dölj","remoteDismissLabel":"Dölj meddelandet om fjärrleverantören","remoteDismissFailed":"Det gick inte att spara inställningen för fjärrleverantören.","noModelSelected":"Ingen modell som är kompatibel med Arbete har valts.","mentionAgents":"Nämn en agent"},"conversation":{"ready":"Arbetsytan är klar","empty":"Fortsätt med uppgiften nedan. Konversationen och dess filer förblir kopplade till den här arbetsytan.","loadOlder":"Läs in äldre meddelanden","openFile":"Öppna {{name}}","delegatedBy":"Delegerat av {{agent}}","reportFrom":"Rapport från {{agent}}"},"status":{"preparing":"Förbereder den isolerade arbetsytan…","running":"Arbetar på den lokala arbetsytan…"},"statusLabels":{"idle":"Inaktiv","thinking":"Tänker","complete":"Klar","needsInput":"Behöver inmatning","error":"Fel"},"live":{"connecting":"Ansluter till liveuppdateringar…","reconnecting":"Återansluter till liveuppdateringar…","unavailable":"Liveuppdateringar är inte tillgängliga","newActivity":"Ny aktivitet","skillsLoaded":"Arbetsytefärdigheter · {{count}}","skillWorked":"Den här proceduren fungerade","skillFailed":"Den här proceduren misslyckades","skillTraceSaved":"noterat","stats":{"title":"Körningssammanfattning","rounds":"Rundor","toolCalls":"Verktygsanrop","screenshots":"Skärmbilder","fences":"Avbrott","checksPassed":"Kontroller godkända","checksPending":"Väntande kontroller","stallNudges":"Stoppåminnelser","ambiguityNudges":"Omorienteringspåminnelser","stoppedBy":"Stoppad av"}},"runtime":{"unavailable":"Körmiljön är inte tillgänglig","ready":"Körmiljön är redo","readyOllama":"Docker redo","readyPlugin":"Docker + tillägg redo","readyHybrid":"Docker + modeller redo","reason":"Docker och en tillgänglig modellleverantör via Ollama eller ett tillägg krävs."},"workspace":{"label":"Arbetsytevyer","files":"Filer","activity":"Aktivitet","preview":"Förhandsgranskning","resize":"Ändra storlek på konversationen och arbetsytan","resizeHint":"Dra för att ändra storleken. Använd piltangenterna för exakt kontroll. Dubbelklicka eller tryck på Retur för att återställa.","splitSize":"Konversation {{conversation}} %, arbetsyta {{workspace}} %","terminal":"Terminal","git":"Git","screen":"Skärm","agent":"Agent"},"files":{"discard":"Kassera osparade filändringar?","leaveWithDraft":"Lämna den här filen? Din osparade redigering sparas som ett utkast i webbläsaren.","up":"Överordnad mapp","back":"Tillbaka till filer","empty":"Det finns inga filer i den här mappen än.","select":"Välj en fil för att granska och redigera den.","editorLabel":"Filredigerare: {{path}}","format":"Formatera","formatted":"Koden har formaterats.","formatFailed":"Det gick inte att formatera den här filen.","formatShortcut":"Formatera (Skift+Alt+F)","formatTooLarge":"Formatering är begränsad till filer med färre än 100 000 tecken och 4 000 rader.","formatUnsupported":"Formatering är inte tillgänglig för den här filtypen.","saveShortcut":"Spara (⌘/Ctrl+S)","highlightPaused":"Syntaxmarkering i realtid har pausats för stora filer så att redigeringen förblir responsiv.","plainTextLarge":"Oformaterad text · stor fil","changes":"Ändringar","changesSince":"Vad som ändrats sedan senaste turen","diffLabel":"Ändringar sedan senaste turen: {{path}}","diffFolded":"{{count}} oförändrade rader"},"activity":{"empty":"Kommandon, filåtgärder och verktygsresultat visas här.","toolActivity":"Verktygsaktivitet","details":"Detaljer","kinds":{"message":"Meddelande","toolCall":"Verktygsanrop","toolResult":"Verktygsresultat","error":"Fel"}},"preview":{"command":"Valfritt startkommando","start":"Starta förhandsgranskning","stop":"Stoppa förhandsgranskning","open":"Öppna","starting":"Startar förhandsgranskning…","frameTitle":"Förhandsgranskning av arbetsyta","failed":"Det gick inte att starta förhandsgranskningen. Kontrollera Aktivitet och prova sedan ett annat kommando.","empty":"Starta appen på den här arbetsytan för att granska den här."},"mobile":{"surface":"Uppgiftsvy","conversation":"Konversation","workspace":"Arbetsyta"},"toasts":{"runFailed":"Det gick inte att starta arbetsuppgiften.","updateFailed":"Det gick inte att uppdatera den här uppgiften.","renameFailed":"Det gick inte att byta namn på den här uppgiften.","cancelled":"Arbetskörningen stoppades.","cancelFailed":"Det gick inte att stoppa arbetskörningen.","deleteFailed":"Det gick inte att ta bort den här arbetsuppgiften.","saveFailed":"Det gick inte att spara den här filen.","saved":"Filen har sparats.","previewFailed":"Det gick inte att starta förhandsgranskningen.","previewStopFailed":"Det gick inte att stoppa förhandsgranskningen."},"terminal":{"connecting":"Öppnar ett skal i sandlådan…","closed":"Terminalsessionen avslutades.","failed":"Terminalsessionen kunde inte startas.","reconnect":"Anslut igen","unavailable":"Den interaktiva terminalen är inte tillgänglig i den här installationen.","blockedByRun":"Modellen använder den här containern. Terminalen öppnas när turen är klar.","taskRunning":"Modelltur pågår"},"policy":{"label":"Körningspolicy","default":"Standard (globala gränser)","setupHint":"Runtime-policyer låser upp Work Computer — ett browserskrivbord för agenten som går att följa — och gränser per uppgift.","setupLink":"Konfigurera Work-policyer"},"git":{"actionFailed":"Git-åtgärden misslyckades.","blockedByPreview":"Stoppa förhandsvisningen innan Git-läget ändras.","blockedByRun":"Git-skrivåtgärder låses upp när modellens tur är klar.","branchCreated":"{{name}} skapad.","branchSwitched":"Bytte till {{name}}.","clean":"Arbetsträdet är rent.","commit":"Committa förberedda ändringar","commitMessage":"Commit-meddelande","committed":"Commit skapad.","detached":"frånkopplad HEAD","diff":"Diff-förhandsvisning","diffFailed":"Kunde inte läsa in denna diff.","history":"Lokal historik","initialize":"Initiera Git","initializeDescription":"Skapa ett lokalt repository för status, diffar, grenar och commits. Inga fjärruppgifter kopplas.","initialized":"Git-repository initierat.","loadFailed":"Kunde inte läsa in Git-status.","localOnly":"Endast lokal Git. Push, pull och pull requests kräver en separat betrodd uppgiftsmäklare.","newBranch":"Ny lokal gren","noCommits":"Inga commits ännu.","noDiff":"Ingen textdiff ännu. Ospårade filer visas efter förberedelse.","notInitialized":"Git är inte initierat","selectChange":"Välj en ändrad fil för att granska dess diff.","selectPath":"Välj {{path}}","stageAll":"Förbered alla","stageSelected":"Förbered {{count}}","staged":"Ändringar förberedda.","switchBranch":"Byt lokal gren","changes":"Ändringar","createBranch":"Skapa","filterFiles":"Filtrera ändrade filer","noFilterMatches":"Inga ändrade filer matchar det här filtret.","allChanges":"Alla ändringar","diffTruncated":"Denna diff är avkortad.","binaryFile":"Binär fil, ingen textdiff."},"hostWorkspace":{"hint":"Lämna tomt för en isolerad arbetsyta, eller peka uppgiften mot en mapp på den här datorn.","label":"Arbetsytemapp (valfritt)","warning":"Uppgiften kan läsa och skriva denna mapp direkt. Lämna tomt för en isolerad arbetsyta."},"screen":{"starting":"Startar Work Computer…","disconnected":"Skärmen är frånkopplad.","reconnect":"Återanslut","viewOnly":"Tittar","takeOver":"Ta över","handBack":"Jag är klar","youHaveControl":"Du har kontrollen","otherHasControl":"{{name}} har kontrollen","agentWaiting":"Agenten bad dig ta över","teach":"Lär ut en uppgift","recording":"Spelar in","teachSave":"Spara","teachDiscard":"Släng","teachNamePlaceholder":"Namnge uppgiften","teachSaved":"Sparad som färdigheten \\"{{name}}\\"","watchingLearning":"Agenten tittar på och lär sig","unmute":"Slå på ljud","mute":"Stäng av ljud"},"computerSetup":{"title":"Work Computer","description":"Ge din agent ett riktigt skrivbord med webbläsare — allt sätts upp automatiskt.","building":"Bygger skrivbordsavbilden... första gången tar det några minuter.","enable":"Aktivera","retry":"Försök igen"},"agents":{"title":"Agenter"},"persona":{"label":"Anlita som agent (valfritt)","none":"Ingen persona (engångsuppgift)","hint":"Den här uppgiften blir en namngiven agent: den behåller personan, förblir fäst i sidofältet och rapporterar en statusrad efter varje körning.","description":"Välj en persona för att göra uppgiften till en beständig agent med egen identitet."},"agent":{"openScreen":"Öppna helskärmsvyn","personaLine":"Persona: {{name}}","screen":"Skärm","routines":"Rutiner","addRoutine":"Rutin","noRoutines":"Inga rutiner ännu. En rutin kör en instruktion enligt schema, inne i den här agentens arbetsyta.","routineToggleFailed":"Rutinen kunde inte uppdateras.","routineSaveFailed":"Rutinen kunde inte sparas.","skills":"Inlärda färdigheter","noSkills":"Inget inlärt ännu. Använd Teach på Skärm-fliken för att demonstrera en procedur en gång; den blir en återspelbar färdighet.","skillToggleFailed":"Färdigheten kunde inte uppdateras.","unread":"Ny aktivitet","approvals":"Automatisk granskning","approvalsHint":"När det är på pausas kommandon, borttagning och flytt av filer samt datoråtgärder tills du godkänner dem.","approvalsPolicyForced":"Den här agentens Work-policy kräver godkännande för åtgärder med sidoeffekter.","approvalsToggleFailed":"Godkännandena kunde inte uppdateras.","approvalRuleLine":"Alltid tillåten","approvalRuleDelete":"Ta bort regel","approvalRuleDeleteFailed":"Regeln kunde inte tas bort."},"approval":{"title":"Godkännande krävs","description":"Agenten vill köra {{tool}}. Åtgärden kan ändra data eller agera utanför konversationen.","allowOnce":"Tillåt en gång","allowAlways":"Tillåt alltid","deny":"Neka","failed":"Beslutet kunde inte skickas."}}`),personaBackground:{label:`Bakgrundsbild`,uploadBackgroundImage:`Ladda upp bakgrundsbild`,dragAndDrop:`Dra och släpp en bild eller klicka för att bläddra`,chooseImage:`Välj bild`,uploading:`Laddar upp...`,enterImageUrl:`Eller ange bild-URL`,supportedFormats:`Stöder: JPG, PNG, GIF, WebP (max 5MB). Breda landskapsbilder fungerar bäst.`,customBackground:`Anpassad bakgrundsbild`,clickToChange:`Klicka för att ändra eller ta bort`,removed:`Bakgrund borttagen`,uploaded:`Bakgrund uppladdad`,invalidFile:`Välj en giltig bildfil`,fileTooLarge:`Bakgrundsbildens storlek måste vara mindre än 5MB`,readFailed:`Kunde inte läsa bildfil`,uploadFailed:`Kunde inte ladda upp bakgrundsbild`},modelSelector:{searchInstalled:`Sök installerade modeller...`,searchOllama:`Sök i Ollama-biblioteket...`,searchHuggingFace:`Sök på HuggingFace...`,selectModel:`Välj modell`,personas:`Personas`,ollamaModels:`Ollama-modeller`,pluginModels:`Plugin-modeller`,actions:`Åtgärder`,installed:`Installerad`,use:`Använd`,pull:`Ladda ner`,pullRestricted:`Modellinstallation är begränsad till administratörer på denna instans.`,adminOnlyPull:`Endast administratörer`,legacyProvider:`leverantör ej registrerad`,providerNotRecorded:`Leverantör ej registrerad`,providerUnavailable:`leverantör otillgänglig`,reselectProvider:`välj leverantör igen för att fästa denna modell`,unavailable:`otillgänglig`,unavailableSelections:`Otillgängliga val`,agentModels:`Agenter`},whatsNew:{title:`Nyheter`,releaseNotes:`Versionsinformation`,cta:`Okej, nu kör vi`,starAsk:`Gillar du Libre WebUI? Lämna en stjärna på GitHub`},notes:{title:`Anteckningar`,new:`Ny anteckning`,untitled:`Namnlös`,empty:`Inga anteckningar än`,selectOrCreate:`Välj en anteckning eller skapa en ny`,contentPlaceholder:`Skriv i Markdown…`,saved:`Sparad`,saveFailed:`Kunde inte spara anteckningen`,createFailed:`Kunde inte skapa en anteckning`,deleteConfirm:`Ta bort den här anteckningen?`,deleteFailed:`Kunde inte ta bort anteckningen`,tools:`Anteckningsverktyg`,revisions:`Historik`,attachments:`Bilagor`,share:`Dela`,assist:`AI-redigering`,noRevisions:`Inga tidigare versioner ännu`,restore:`Återställ`,revisionRestored:`Version återställd`,revisionRestoreFailed:`Kunde inte återställa den här versionen`,addAttachment:`Lägg till bilaga`,noAttachments:`Inga bilagor ännu`,attachmentAdded:`Bilaga tillagd`,attachmentFailed:`Kunde inte lägga till bilagan`,attachmentDownloadFailed:`Kunde inte ladda ner bilagan`,shareUsernamePlaceholder:`Användarnamn`,permissionRead:`Kan visa`,permissionWrite:`Kan redigera`,shareAction:`Dela`,notShared:`Inte delad med någon ännu`,revokeShare:`Återkalla åtkomst`,shareHint:`Delade anteckningar visas i den andra personens anteckningslista. Åtkomsten kan återkallas när som helst.`,shareUserNotFound:`Ingen användare med det namnet`,shareAdded:`Delad med {{username}}`,shareFailed:`Kunde inte dela anteckningen`,assistPlaceholder:`Beskriv ändringen, t.ex. korta ner sammanfattningen eller rätta grammatiken`,assistGenerate:`Föreslå redigering`,assistNoModel:`Välj först en modell i chatten`,assistNoChanges:`Modellen föreslog inga ändringar`,assistApply:`Tillämpa`,assistDiscard:`Släng`,assistApplied:`Redigering tillämpad`,assistRevisionHint:`Vid tillämpning behålls den tidigare versionen i historiken, så varje AI-redigering går att ångra.`,assistFailed:`Kunde inte generera redigeringen`,pin:`Fäst anteckning`,unpin:`Lossa anteckning`,pinned:`Fäst`,export:`Ladda ner som Markdown`,sharedWithYou:`Delad med dig`},calendar:{title:`Kalender`,today:`Idag`,month:`Månad`,week:`Vecka`,previous:`Föregående`,next:`Nästa`,newEvent:`Ny händelse`,editEvent:`Redigera händelse`,eventTitle:`Titel`,titlePlaceholder:`Händelsens titel`,date:`Datum`,start:`Start`,end:`Slut`,allDay:`Hela dagen`,repeat:`Upprepa`,repeatNone:`Upprepas inte`,repeatDaily:`Dagligen`,repeatWeekly:`Varje vecka`,repeatMonthly:`Varje månad`,repeatYearly:`Varje år`,notes:`Anteckningar`,more:`+{{n}} till`,loadFailed:`Kalendern kunde inte läsas in`,saveFailed:`Händelsen kunde inte sparas`,deleteFailed:`Händelsen kunde inte tas bort`,day:`Dag`,calendarLabel:`Kalender`,personalCalendar:`Personlig`,reminderLabel:`Påminnelse`,reminderNone:`Ingen påminnelse`,reminderMinutes:`{{minutes}} minuter innan`,reminderHour:`1 timme innan`,reminderDay:`1 dag innan`,sharedReadOnly:`Händelsen är delad med dig som skrivskyddad.`,sharedBadge:`delad`,shareCalendar:`Dela kalender`,newCalendarPlaceholder:`Ny kalender…`,calendarSaveFailed:`Kalendern kunde inte sparas`,exportFailed:`Kalendern kunde inte exporteras`,importFailed:`Filen kunde inte importeras`,importResult:`{{total}} händelser importerade`,importIcs:`Importera`,exportIcs:`Exportera`},automations:{title:`Automatiseringar`,tab:{automations:`Automatiseringar`,runs:`Körningar`},newAutomation:`Ny automatisering`,editAutomation:`Redigera automatisering`,empty:`Inga automatiseringar ännu. Skapa en för att köra en uppgift enligt ett schema.`,loadFailed:`Automatiseringarna kunde inte läsas in`,saveFailed:`Automatiseringen kunde inte sparas`,actionFailed:`Åtgärden misslyckades`,runQueued:`Körning startad`,status:{active:`Aktiv`,paused:`Pausad`},nextRun:`Nästa körning {{when}}`,actions:`Åtgärder`,pause:`Pausa`,resume:`Återuppta`,runNow:`Kör nu`,openChat:`Öppna chatt`,noRuns:`Inga körningar ännu`,deletedAutomation:`Borttagen automatisering`,runHistory:`Körningshistorik (senaste 30 dagarna)`,succeeded:`lyckades`,failed:`misslyckades`,form:{name:`Namn`,namePlaceholder:`Min automatisering`,triggers:`Utlösare`,addTrigger:`Lägg till utlösare`,instructions:`Instruktioner`,instructionsPlaceholder:`Vad ska köras enligt det här schemat?`,model:`Modell`,modelAuto:`Auto`,notification:`Avisering`,notifyApp:`App`,notifyOff:`Av`,frequency:`Frekvens`,time:`Tid`,minute:`Minut`,fromHour:`Från`,toHour:`Till`,weekday:`Veckodag`,dayOfMonth:`Dag`,month:`Månad`,target:`Kör som`,targetChat:`Chattsession`,targetWork:`Work-uppgift`,workPolicy:`Work-policy`,workPolicyDefault:`Standard (globala gränser)`,taskBoundNote:`Den här rutinen körs inne i agentens egen arbetsyta och konversation, med agentens modell och körmiljö.`},kind:{once:`En gång`,hourly:`Varje timme`,daily:`Dagligen`,weekly:`Varje vecka`,monthly:`Varje månad`,yearly:`Varje år`},trigger:{once:`En gång den {{when}}`,hourly:`Varje timme vid :{{minute}}`,daily:`Dagligen kl. {{time}}`,weekly:`Varje {{day}} kl. {{time}}`,monthly:`Den {{day}}:e varje månad kl. {{time}}`,yearly:`Varje år den {{date}} kl. {{time}}`},finishedNotification:`{{n}} automatiseringskörningar klara`,templatesTitle:`Mallar`,templates:{morningBrief:{name:`Morgonöversikt`,description:`Börja dagen med rubriker och prioriteringar.`},newsDigest:{name:`AI-nyhetsöversikt`,description:`Modellsläpp, forskning och finansiering som spelar roll.`},weeklyReview:{name:`Veckogenomgång`,description:`Avsluta veckan: framgångar, lösa trådar, nästa prioriteringar.`},monthlyReport:{name:`Månadsrapport`,description:`En statusrapportskiss den första varje månad.`}},openTask:`Öppna uppgift`,webhook:{title:`Webhook-utlösare`,enabledHint:`Externa system kan starta den här automatiseringen med hemligheten. Rotation ogiltigförklarar den tidigare hemligheten.`,disabledHint:`Låt ett externt system (CI, cron, hemautomation) starta den här automatiseringen med en POST och en hemlighet.`,rotate:`Rotera hemlighet`,enable:`Aktivera`,disable:`Inaktivera`,revealHint:`Visas bara en gång. Skicka den som Bearer-token eller X-Libre-Webhook-Secret-header.`,failed:`Webhooken kunde inte uppdateras.`}},home:{active:`aktiv`,continue:`Fortsätt`,start:`Börja`,explore:`Utforska`},palette:{empty:`Inga träffar.`,placeholder:`Sök chattar, Work, åtgärder…`,toggleTheme:`Växla tema`,actions:`Åtgärder`,chats:`Chattar`,search:`Sök`,settings:`Inställningar`,work:`Arbete`,messages:`Meddelanden`,notes:`Anteckningar`,documents:`Dokument`},tabs:{actions:`Flikåtgärder`,close:`Stäng flik`,closeAll:`Stäng alla flikar`,closeOthers:`Stäng övriga flikar`,closeRight:`Stäng flikar till höger`,home:`Hem`,label:`Öppna flikar`,new:`Ny flik`,newWork:`Nytt Work`,chat:`Chatt`,newChat:`Ny chatt`,work:`Arbete`},tools:{arguments:`Argument`,result:`Resultat`,callStatus:{awaiting_approval:`Väntar på godkännande`,running:`Kör`,succeeded:`Klart`,failed:`Misslyckades`,denied:`Nekad`,cancelled:`Avbruten`},approval:{title:`Verktyget behöver godkännande`,description:`Modellen vill köra {{tool}} på {{server}}. Anropet kan ändra data utanför den här chatten.`,builtinSource:`den här servern`,allowOnce:`Tillåt en gång`,allowSession:`Tillåt i den här chatten`,allowAlways:`Tillåt alltid`,deny:`Neka`}},promptsPage:{title:`Prompter`,description:`Återanvändbara promptmallar med typade variabler. Skriv / i chattrutan för att infoga en.`,newPrompt:`Ny prompt`,editPrompt:`Redigera prompt`,empty:`Inga prompter än`,emptyHint:`En prompt är en sparad meddelandemall. När du har skapat en infogar /slug i chattrutan den och frågar efter de variabler den deklarerar.`,loadFailed:`Dina prompter kunde inte läsas in.`,saved:`Prompten sparades`,saveFailed:`Prompten kunde inte sparas.`,deleted:`Prompten raderades`,deleteFailed:`Prompten kunde inte raderas.`,deleteTitle:`Radera prompt`,deleteConfirm:`Radera "{{title}}"? Även versionshistoriken försvinner.`,exportFailed:`Prompten kunde inte exporteras.`,imported:`Prompten importerades`,importFailed:`Filen kunde inte importeras.`,historyFailed:`Versionshistoriken kunde inte läsas in.`,rolledBack:`Prompten återställdes`,rollbackFailed:`Prompten kunde inte återställas.`,versionLabel:`v{{version}}`,updated:`Uppdaterad {{when}}`,form:{slug:`Slug`,slugPlaceholder:`weekly-report`,slugHint:`Används som /slug i chattrutan.`,slugInvalid:`Endast gemener, siffror och bindestreck.`,title:`Titel`,titlePlaceholder:`Veckorapport`,description:`Beskrivning`,descriptionPlaceholder:`Vad prompten är till för`,content:`Innehåll`,contentPlaceholder:`Skriv prompten. Omge allt du vill fylla i senare med dubbla klammerparenteser.`,contentHint:`En platshållare är ett namn inom dubbla klammerparenteser. Deklarera den nedan för att ge den en etikett eller ett standardvärde.`,tags:`Taggar`,tagsPlaceholder:`research, skrivande`,variables:`Variabler`,variablesHint:`Valfritt. Deklarera en platshållare här för att ge den en etikett, ett standardvärde eller en uppsättning val.`,variableName:`Namn`,variableType:`Typ`,variableLabel:`Etikett`,variableDefault:`Standard`,variableRequired:`Obligatorisk`,variableOptions:`Alternativ`,variableOptionsPlaceholder:`Val separerade med komma`,addVariable:`Lägg till variabel`,removeVariable:`Ta bort variabel`},variableTypes:{text:`Text`,number:`Tal`,select:`Val`,boolean:`Ja eller nej`},history:{open:`Versionshistorik`,title:`Historik för {{title}}`,subtitle:`Återställning sparar den valda revisionen som en ny version. Inget skrivs över.`,empty:`Inga tidigare versioner än.`,current:`Nuvarande`,rollback:`Återställ`,rollingBack:`Återställer...`},templatesTitle:`Börja från en mall`,templates:{reviewPr:{name:`Granskning av pull request`,description:`Strukturerad kodgranskning med justerbar stränghet.`},summarize:{name:`Sammanfatta för en målgrupp`,description:`Punktsammanfattning anpassad till läsaren.`},translate:{name:`Översätt`,description:`Översättning som bevarar ton och formatering.`},explainCode:{name:`Förklara kod`,description:`Genomgång plus gränsfall och risker.`}}},skillsPage:{title:`Färdigheter`,description:`Namngivna instruktionsuppsättningar som modellen kan läsa in vid behov under arbetet.`,newSkill:`Ny färdighet`,editSkill:`Redigera färdighet`,empty:`Inga färdigheter än`,emptyHint:`En färdighet är en uppsättning instruktioner som modellen bara läser in när den behöver dem. Nämn $slug i ett meddelande, eller låt modellen hämta den via verktyget load_skill.`,loadFailed:`Dina färdigheter kunde inte läsas in.`,saved:`Färdigheten sparades`,saveFailed:`Färdigheten kunde inte sparas.`,toggleFailed:`Färdigheten kunde inte ändras.`,deleted:`Färdigheten raderades`,deleteFailed:`Färdigheten kunde inte raderas.`,deleteTitle:`Radera färdighet`,deleteConfirm:`Radera "{{name}}"? Även versionshistoriken försvinner.`,exportFailed:`Färdigheten kunde inte exporteras.`,imported:`Färdigheten importerades`,importFailed:`Filen kunde inte importeras.`,historyFailed:`Versionshistoriken kunde inte läsas in.`,rolledBack:`Färdigheten återställdes`,rollbackFailed:`Färdigheten kunde inte återställas.`,versionLabel:`v{{version}}`,updated:`Uppdaterad {{when}}`,form:{slug:`Slug`,slugPlaceholder:`code-review`,slugHint:`Används som $slug när du nämner färdigheten.`,slugInvalid:`Endast gemener, siffror och bindestreck.`,name:`Namn`,namePlaceholder:`Kodgranskning`,description:`Beskrivning`,descriptionPlaceholder:`När den här färdigheten ska användas`,descriptionHint:`Det här är manifestet modellen ser. Skriv det så att modellen förstår när färdigheten passar utan att läsa in den.`,instructions:`Instruktioner`,instructionsPlaceholder:`Markdown-instruktioner som modellen läser när den läser in färdigheten.`,instructionsHint:`Läses bara in när färdigheten används, så längden kostar ingenting fram till dess.`,enabled:`Aktiverad`,enabledHint:`Inaktiverade färdigheter finns kvar sparade men erbjuds aldrig till modellen.`},history:{open:`Versionshistorik`,title:`Historik för {{name}}`},templatesTitle:`Börja från en mall`,templates:{citeSources:{name:`Ange källor`,description:`Numrerade referenser med URL:er, inga påståenden utan källa.`},releaseNotes:{name:`Stil för versionsnoteringar`,description:`Grupperade poster för användare, utan interna id:n.`},meetingNotes:{name:`Format för mötesanteckningar`,description:`Beslut, åtgärdspunkter och öppna frågor från en utskrift.`}},importUrl:{button:`Från URL`,title:`Importera en färdighet från en URL`,hint:`Klistra in en skills.sh- eller GitHub-länk, owner/repo/skill, eller en direktlänk till en SKILL.md-fil.`,placeholder:`https://skills.sh/owner/repo/skill eller owner/repo/skill`,overwrite:`Skriv över min färdighet om denna slug redan finns`},files:{title:`Medföljande filer`,hint:`Referensdokument och skript som modellen läser vid behov med read_skill_file.`,add:`Lägg till fil`,empty:`Inga medföljande filer ännu.`,pathPlaceholder:`docs/reference.md`,contentPlaceholder:`Filinnehåll…`,loadFailed:`Det gick inte att läsa in filen`,saveFailed:`Det gick inte att spara filen`,deleteFailed:`Det gick inte att ta bort filen`},folderImport:{button:`Från mapp`,missingSkillMd:`Mappen behöver en SKILL.md-fil`,done:`Färdighet importerad med {{count}} medföljande filer`}},toolsPage:{title:`Verktyg`,description:`Verktygsservrar som modellen kan anropa, och de godkännanden du har gett dem.`,approvalNotice:`Verktyg som ändrar data utanför chatten frågar alltid om godkännande, om du inte har gett verktyget ett permanent godkännande eller ett godkännande för chatten.`,registerServer:`Registrera server`,registerHint:`Libre WebUI läser servern en gång och fäster de verktyg den exponerar. Uppdatera servern senare för att fånga ändringar.`,editServer:`Redigera server`,empty:`Inga verktygsservrar`,emptyHintAdmin:`Registrera en OpenAPI- eller MCP-server så att modellen har något att anropa.`,emptyHintUser:`Ingen administratör har delat några verktygsservrar med dig än.`,loadFailed:`Verktygsservrarna kunde inte läsas in.`,saved:`Verktygsservern sparades`,saveFailed:`Verktygsservern kunde inte sparas.`,deleted:`Verktygsservern raderades`,deleteFailed:`Verktygsservern kunde inte raderas.`,deleteTitle:`Radera verktygsserver`,deleteConfirm:`Radera "{{name}}"? Alla förlorar åtkomsten till dess verktyg.`,refresh:`Uppdatera verktyg`,refreshed:`Verktygen lästes om från servern`,refreshFailed:`Servern kunde inte läsas.`,toolsLoadFailed:`De fästa verktygen kunde inte läsas in.`,overrideFailed:`Verktyget kunde inte ändras.`,pinnedTools:`Fästa verktyg`,noPinnedTools:`Servern exponerade inga verktyg.`,sideEffect:`Sidoeffekt`,sideEffectOverride:`Sidoeffekt`,specRevision:`Revision {{revision}}`,credential:`Personlig autentiseringsuppgift`,credentialHint:`Lagras krypterad och används bara för dina egna anrop till den här servern.`,credentialPlaceholder:`Klistra in din token`,credentialSet:`Autentiseringsuppgift angiven`,credentialMissing:`Autentiseringsuppgift saknas`,credentialSaved:`Autentiseringsuppgiften sparades`,credentialSaveFailed:`Autentiseringsuppgiften kunde inte sparas.`,credentialRemove:`Ta bort`,credentialRemoved:`Autentiseringsuppgiften togs bort`,credentialRemoveFailed:`Autentiseringsuppgiften kunde inte tas bort.`,builtinSource:`Den här servern`,kinds:{openapi:`OpenAPI`,mcp:`MCP`},authModes:{none:`Ingen autentisering`,bearer:`Bearer-token`,header:`Egen header`},accessModes:{"admins-only":`Endast administratörer`,"all-users":`Alla`,granted:`Endast de som fått åtkomst`},form:{name:`Namn`,namePlaceholder:`Väder-API`,kind:`Typ`,description:`Beskrivning`,descriptionPlaceholder:`Vad servern gör`,baseUrl:`Bas-URL`,specUrl:`Spec-URL`,specUrlHint:`Valfritt. Bas-URL:en används när fältet är tomt.`,authMode:`Autentisering`,authHeader:`Headernamn`,accessMode:`Vem som får använda den`,timeoutMs:`Tidsgräns (ms)`,maxResponseBytes:`Max svar (byte)`,serverDefault:`Serverns standard`,enabled:`Aktiverad`,enabledHint:`Inaktiverade servrar förblir registrerade men erbjuds aldrig till modellen.`},approvals:{title:`Stående godkännanden`,description:`Verktyg du har låtit köra utan att fråga igen. Återkalla ett så frågar det nästa gång.`,empty:`Inga stående godkännanden.`,revoke:`Återkalla`,revoked:`Godkännandet återkallades`,revokeFailed:`Godkännandet kunde inte återkallas.`,scope:{once:`En gång`,session:`Den här chatten`,always:`Alltid`}},templatesTitle:`Börja från en mall`,templates:{petstore:{name:`Petstore-demo`,description:`Ett offentligt demo-API för ett tryggt första test från början till slut.`},internalOpenApi:{name:`Internt API`,description:`En utgångspunkt för din egen OpenAPI-tjänst.`},mcpServer:{name:`MCP-server`,description:`En utgångspunkt för en MCP-server över Streamable HTTP.`}}},composer:{promptMenu:{label:`Promptbibliotek`,empty:`Inga prompts ännu — skapa en under Inställningar → Prompts, eller börja skriva en slug.`},skillMenu:{label:`Färdigheter`,empty:`Inga färdigheter ännu — skapa en under Inställningar → Färdigheter.`},variables:{title:`Fyll i {{title}}`,insert:`Infoga`,cancel:`Avbryt`,required:`{{name}} krävs`},toolsMenu:{enable:`Använd verktyg för det här meddelandet`,builtin:`Inbyggda verktyg`,servers:`Verktygsservrar`,hint:`Anrop med sidoeffekter ber fortfarande om godkännande innan de körs.`}},share:{title:`Dela ”{{name}}”`,subtitle:`Ge personer eller grupper åtkomst. Bara du hanterar delningarna.`,kindUser:`Användare`,kindGroup:`Grupp`,usernamePlaceholder:`Exakt användarnamn`,groupPlaceholder:`Exakt gruppnamn`,permissionRead:`Kan visa`,permissionWrite:`Kan redigera`,action:`Dela`,empty:`Inte delad med någon ännu.`,hint:`Ange exakt användar- eller gruppnamn. Mottagarna ser den i sin egen arbetsyta; återkallning tar bort åtkomsten direkt.`,revoke:`Återkalla åtkomst`,added:`Delad med {{name}}`,failed:`Delningen misslyckades`,userNotFound:`Ingen användare med det namnet`,groupNotFound:`Ingen grupp med det namnet`},channels:{title:`Kanaler`,browsePublic:`Bläddra bland publika kanaler`,newDm:`Nytt direktmeddelande`,newChannel:`Ny kanal`,empty:`Inga kanaler ännu. Skapa en eller bläddra bland publika.`,selectPrompt:`Välj en kanal för att börja`,pins:`Fästa`,members:`Medlemmar`,settings:`Kanalinställningar`,sendFailed:`Meddelandet kunde inte skickas`,uploadFailed:`Filen kunde inte laddas upp`,memberAdded:`Medlem tillagd`,memberAddFailed:`Användaren kunde inte läggas till`,attach:`Bifoga en fil`,askModel:`Fråga en modell med detta meddelande`,noModel:`Ingen modell`,composerPlaceholder:`Skriv ett meddelande…`,thread:`Tråd`,replyPlaceholder:`Svara…`,invitePlaceholder:`Användare att bjuda in`,roleOwner:`ägare`,removeMember:`Ta bort från kanalen`,leave:`Lämna kanalen`,noPins:`Inget fäst ännu.`,noMessages:`Inga meddelanden ännu — säg hej.`,create:`Skapa`,createFailed:`Kanalen kunde inte skapas`,nameLabel:`Namn`,typeLabel:`Typ`,typePublic:`Publik — vem som helst kan gå med`,typePrivate:`Privat — endast inbjudan`,descriptionLabel:`Beskrivning`,openDm:`Öppna konversation`,dmFailed:`Konversationen kunde inte öppnas`,dmHint:`Direktmeddelanden är privata mellan er två.`,dmPlaceholder:`Exakt användarnamn`,noPublic:`Inga publika kanaler.`,joined:`Medlem`,join:`Gå med`,save:`Spara`,delete:`Ta bort kanal`,modelAuthor:`Modell`,unknownAuthor:`Någon`,edited:`redigerat`,deletedMessage:`Meddelandet togs bort`,modelThinking:`Modellen tänker…`,react:`Lägg till reaktion`,reply:`Svara i tråden`,pin:`Fäst meddelande`,unpin:`Lossa meddelande`,edit:`Redigera meddelande`,deleteMessage:`Ta bort meddelande`,replyCount:`{{total}} svar`},notifications:{title:`Aviseringar`,empty:`Du är ikapp.`,markAllRead:`Markera alla som lästa`,markRead:`Markera som läst`},voiceMode:{title:`Röstläge`,open:`Starta röstläget`,close:`Stäng röstläget`,starting:`Startar…`,listening:`Lyssnar…`,muted:`Mikrofonen är avstängd`,transcribing:`Transkriberar…`,generating:`Tänker…`,speaking:`Talar…`,mute:`Stäng av mikrofonen`,unmute:`Slå på mikrofonen`,finishTurn:`Klar med att tala`,skipReply:`Hoppa över svaret`,microphoneFailed:`Mikrofonen är inte tillgänglig`,transcriptionFailed:`Transkriberingen misslyckades`,replyTimeout:`Svaret tog för lång tid`,unsupported:`Röstläget är inte tillgängligt`,unsupportedHint:`Röstläget kräver en mikrofon och en tal-till-text-leverantör eller webbläsarens taligenkänning.`},imageEdit:{title:`Redigera bild`,prompt:`Beskriv ändringen`,promptPlaceholder:`Till exempel: ersätt himlen med en solnedgång`,model:`Modell`,apply:`Tillämpa redigering`,maskHint:`Måla över områdena som ska målas om; lämna duken orörd för att redigera hela bilden.`,brushSize:`Penselstorlek`,clearMask:`Rensa mask`,referenceImages:`Referensbilder (upp till {{total}})`,noModels:`Ingen konfigurerad modell stöder bildredigering.`,saved:`Redigerad bild sparad i galleriet`,failed:`Bildredigeringen misslyckades`,loadFailed:`Kunde inte läsa in källbilden`},costs:{title:`Kostnader och budgetar`,description:`Tariffpriser tillämpas på användningsloggen; budgetar bevakar eller begränsar utgifterna.`,loadFailed:`Kunde inte läsa in kostnadsdata`,saveFailed:`Det gick inte att spara`,exportFailed:`Export misslyckades`,exportCsv:`Exportera CSV`,totalSpend:`Total kostnad`,meteredEvents:`Prissatta händelser`,unmeteredEvents:`Oprissatta händelser`,topModel:`Toppmodell`,budgets:`Budgetar`,noBudgets:`Inga budgetar ännu.`,budgetName:`Budgetnamn`,principalId:`Användar- eller grupp-id`,addBudget:`Lägg till budget`,deleteBudget:`Ta bort budget`,budgetSaved:`Budget sparad`,scope:{instance:`Hela instansen`,user:`Användare`,group:`Grupp`},period:{daily:`Dagligen`,weekly:`Veckovis`,monthly:`Månadsvis`},mode:{observe:`Observera`,soft:`Varna`,hard:`Varna och blockera`},tariffs:`Tariffer`,noTariffs:`Inga tariffer ännu — kostnader förblir oprissatta tills du lägger till priser.`,plugin:`Insticksprogram`,model:`Modell`,modelOptional:`Modell (valfritt)`,allModels:`Alla modeller`,inputPerMillion:`Indata $/M tokens`,outputPerMillion:`Utdata $/M tokens`,unitPrice:`Styckpris`,effectiveFrom:`Gäller från`,addTariff:`Lägg till tariff`,deleteTariff:`Ta bort tariff`,tariffSaved:`Tariff sparad`},evaluations:{title:`Utvärderingar`,description:`Blinda arenadueller, en Elo-topplista, återanvändbara utvärderingsset och din feedbackdata.`,loadFailed:`Kunde inte läsa in utvärderingar`,matchFailed:`Arenaduellen misslyckades`,voteRecorded:`Röst registrerad`,voteFailed:`Kunde inte registrera rösten`,saveFailed:`Det gick inte att spara`,exportFailed:`Export misslyckades`,setSaved:`Utvärderingsset sparat`,runStarted:`Utvärderingskörning startad`,pickModel:`Välj en modell`,tabs:{arena:`Arena`,leaderboard:`Topplista`,sets:`Set`,feedback:`Feedback`},arenaModelA:`Modell A`,arenaModelB:`Modell B`,arenaPrompt:`Ställ samma fråga till båda modellerna…`,startMatch:`Starta duell`,arenaHint:`Modellernas identitet hålls dold tills du röstar.`,candidate:`Svar {{letter}}`,voteFirst:`Första är bättre`,voteSecond:`Andra är bättre`,voteTie:`Oavgjort`,voteBothBad:`Båda dåliga`,model:`Modell`,rating:`Poäng`,record:`Facit`,votes:`Röster`,noVotes:`Inga röster ännu — starta en duell för att bygga topplistan.`,newSet:`Nytt utvärderingsset`,setName:`Setnamn`,setPrompts:`En prompt per rad…`,saveSet:`Spara set`,yourSets:`Dina set`,noSets:`Inga utvärderingsset ännu.`,itemCount:`{{total}} prompts`,run:`Kör`,deleteSet:`Ta bort set`,cancelRun:`Avbryt körning`,exportRun:`Exportera körning`,status:{queued:`I kö`,running:`Körs`,completed:`Slutförd`,failed:`Misslyckad`,cancelled:`Avbruten`},noFeedback:`Ingen feedback ännu — betygsätt svar för att bygga din data.`},passwordStrength:{levels:{weak:`Svagt`,fair:`Okej`,good:`Bra`,strong:`Starkt`},checks:{minLength:`Minst 12 tecken`,hasCase:`Stora och små bokstäver`,hasNumber:`Minst en siffra`,tooLong:`Högst 72 byte`}},connectModels:{adminOnly:`Be din administratör att ansluta en modellleverantör.`,skip:`Hoppa över för nu — jag ansluter modeller senare`,ollama:{status:{checking:`Kontrollerar tillgänglighet…`,healthy:`Igång och redo för lokala modeller`,offline:`Hittades inte på den här datorn`,disabled:`Inaktiverad — inga kontroller körs`},recheck:`Kontrollera igen`,enable:`Aktivera`,disable:`Sluta leta efter Ollama`,enabledToast:`Ollama-leverantören aktiverad`,disabledToast:`Ollama-kontroller inaktiverade — du kan aktivera dem igen i Inställningar`,settingsFailed:`Det gick inte att uppdatera Ollama-inställningarna`,offlineHint:`Installera Ollama från ollama.com så upptäcks den automatiskt — eller använd ett av alternativen nedan istället. Om du inte tänker använda Ollama kan du stänga av dessa kontroller.`,healthyHint:`Ollama är ansluten. Hämta en modell i Modeller så är du redo att chatta.`},local:{title:`Lokal server`,subtitle:`llama.cpp, vLLM, llama-swap, LM Studio, mlx-lm`,keyPlaceholder:`API-nyckel (valfritt)`,test:`Testa anslutning`,testing:`Testar…`,reachable:`Ansluten — hittade {{count}} modeller`,unreachable:`Inget modell-API svarade på den adressen`,noModels:`Endpointen svarade men listade inga modeller. Läs in en modell på din server och testa igen.`,enable:`Aktivera leverantör`,enabling:`Aktiverar…`,enabled:`{{name}} ansluten — dess modeller är nu tillgängliga`,enableFailed:`Det gick inte att aktivera leverantören`},cloud:{title:`Moln-API`,subtitle:`OpenAI, Anthropic, Groq, OpenRouter med flera`,keyPlaceholder:`Klistra in din {{name}}-API-nyckel`,connect:`Anslut`,connecting:`Ansluter…`,connected:`{{name}} ansluten — dess modeller är nu tillgängliga`,saveFailed:`Det gick inte att spara API-nyckeln`}}};export{e as default};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./config-Ckn9cand.js";var t=()=>{let e=localStorage.getItem(`auth-token`);return e?{Authorization:`Bearer ${e}`}:{}},n=8,r=2e3,i=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),a=async a=>{let o=0,s=0;for(;!a.signal.aborted&&s<n;)try{let n=await fetch(`${e}${a.path}?after=${o}`,{headers:{Accept:`text/event-stream`,...t()},credentials:`same-origin`,signal:a.signal});if(!n.ok||!n.body){s+=1,await i(r,a.signal);continue}s=0;let c=n.body.getReader(),l=new TextDecoder,u=``;try{for(;;){let{done:e,value:t}=await c.read();u+=l.decode(t,{stream:!e}).replace(/\r\n/g,`
1
+ import{t as e}from"./config-DJwXAf8i.js";var t=()=>{let e=localStorage.getItem(`auth-token`);return e?{Authorization:`Bearer ${e}`}:{}},n=8,r=2e3,i=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),a=async a=>{let o=0,s=0;for(;!a.signal.aborted&&s<n;)try{let n=await fetch(`${e}${a.path}?after=${o}`,{headers:{Accept:`text/event-stream`,...t()},credentials:`same-origin`,signal:a.signal});if(!n.ok||!n.body){s+=1,await i(r,a.signal);continue}s=0;let c=n.body.getReader(),l=new TextDecoder,u=``;try{for(;;){let{done:e,value:t}=await c.read();u+=l.decode(t,{stream:!e}).replace(/\r\n/g,`
2
2
  `);let n=u.indexOf(`
3
3
 
4
4
  `);for(;n>=0;){let e=u.slice(0,n);u=u.slice(n+2),n=u.indexOf(`