spec-cat 0.1.28 → 0.1.29
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.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{DykekIOz.js → BYSSU_C5.js} +1 -1
- package/.output/public/_nuxt/{DXzkgxwX.js → BuAdOXGq.js} +1 -1
- package/.output/public/_nuxt/BvFtAA65.js +85 -0
- package/.output/public/_nuxt/{DJnEVOKq.js → C3xB8Cgs.js} +1 -1
- package/.output/public/_nuxt/{DSUO3OjT.js → C7HUOCmf.js} +1 -1
- package/.output/public/_nuxt/{BnjcVEL-.js → CjahVUNV.js} +1 -1
- package/.output/public/_nuxt/{XuDblT7a.js → DHRTMwte.js} +1 -1
- package/.output/public/_nuxt/{BRd9HFwL.js → DJrEvjo-.js} +2 -2
- package/.output/public/_nuxt/{C6ilGlzF.js → DL_gJOgv.js} +1 -1
- package/.output/public/_nuxt/{2nXTHzKg.js → DWfl6VER.js} +1 -1
- package/.output/public/_nuxt/{DWeUOMg4.js → Dpc_a9DZ.js} +1 -1
- package/.output/public/_nuxt/{80f7bXLB.js → WBf5CG5l.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/65ae0c7c-58de-4f20-a97f-c1be9bfe34bb.json +1 -0
- package/.output/public/_nuxt/{default.D3bZ26KV.css → default.D9amvrGI.css} +1 -1
- package/.output/public/_nuxt/entry.D8StCG4P.css +1 -0
- package/.output/public/_nuxt/ggQsoUsu.js +1 -0
- package/.output/server/chunks/_/aiProviderSelection.mjs +1 -1
- package/.output/server/chunks/_/claude.mjs +1 -1
- package/.output/server/chunks/_/claudeService.mjs +1 -1
- package/.output/server/chunks/_/conversationStore.mjs +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +657 -657
- package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs +1 -1
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId/restore.post.mjs +1 -1
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs +1 -1
- package/.output/server/chunks/routes/api/jobs/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs +208 -32
- package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings.post.mjs +1 -1
- package/.output/server/chunks/routes/api/skills/_skillId/prompt.post.mjs +1 -1
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/specs/traceability/_featureId_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/worktrees/_name/switch.post.mjs +1 -1
- package/.output/server/chunks/routes/api/worktrees/_name_.delete.mjs +1 -1
- package/.output/server/node_modules/onnxruntime-node/bin/napi-v3/linux/x64/libonnxruntime.so.1.14.0 +0 -0
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/CoA0shxq.js +0 -93
- package/.output/public/_nuxt/builds/meta/28d9e18f-8df1-4f6c-a452-5573f8625b68.json +0 -1
- package/.output/public/_nuxt/entry.B1b8QW5b.css +0 -1
- package/.output/public/_nuxt/xtHaEzqj.js +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BuAdOXGq.js","./DJrEvjo-.js","./entry.D8StCG4P.css","./C3xB8Cgs.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{y as v,z as y,A as d,d as ze,C as te,G as m,Q as Je,S as Lt,R as nt,I as $e,E as Ie,B as _,K,g as M,J as Fe,U as ls,k as ee,V as er,L as Ze,H as be,o as Ot,W as Qt,X as _p,N as We,Y as nr,T as Sr,Z as Xs,O as vn,D as ht,P as vr,_ as Rp,$ as xu,a0 as _e,a1 as cs,a2 as mr,a3 as Os,a4 as mc,a5 as d1,c as f1,a6 as Ah,a7 as Bp,a8 as p1,q as m1,a9 as g1,x as O1}from"./DJrEvjo-.js";import{r as At,c as bn,b as ol,a as ds,u as yu}from"./CjahVUNV.js";import{g as mo,m as v1,p as b1,h as _h,i as x1,j as Rh,k as y1,l as k1,n as w1,o as S1,q as Zp,s as Bh,C as $1,_ as C1,t as ku,u as Q1,r as P1,a as T1}from"./BYSSU_C5.js";import{_ as ei}from"./DlAUqK2U.js";import{S as Sa,i as M1,b as A1,P as _1,W as Zh,M as Eh,c as Dh,d as Lh,g as Xh,e as R1,D as Ep,f as Dp,h as B1,a as go,u as Oo,j as Mr,k as Qs,l as Ro}from"./BuAdOXGq.js";import{u as gc,_ as Z1}from"./DHRTMwte.js";function E1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75"})])}function D1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5m8.25 3v6.75m0 0-3-3m3 3 3-3M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z"})])}function L1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 8.25H7.5a2.25 2.25 0 0 0-2.25 2.25v9a2.25 2.25 0 0 0 2.25 2.25h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25H15M9 12l3 3m0 0 3-3m-3 3V2.25"})])}function X1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"})])}function I1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18"})])}function Lp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 12c0-1.232-.046-2.453-.138-3.662a4.006 4.006 0 0 0-3.7-3.7 48.678 48.678 0 0 0-7.324 0 4.006 4.006 0 0 0-3.7 3.7c-.017.22-.032.441-.046.662M19.5 12l3-3m-3 3-3-3m-12 3c0 1.232.046 2.453.138 3.662a4.006 4.006 0 0 0 3.7 3.7 48.656 48.656 0 0 0 7.324 0 4.006 4.006 0 0 0 3.7-3.7c.017-.22.032-.441.046-.662M4.5 12l3 3m-3-3-3 3"})])}function Xp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5"})])}function Ip(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3"})])}function Vp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 9V4.5M9 9H4.5M9 9 3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5 5.25 5.25"})])}function zp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15"})])}function Np(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"})])}function V1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.75 3.104v5.714a2.25 2.25 0 0 1-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 0 1 4.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0 1 12 15a9.065 9.065 0 0 0-6.23-.693L5 14.5m14.8.8 1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0 1 12 21c-2.773 0-5.491-.235-8.135-.687-1.718-.293-2.3-2.379-1.067-3.61L5 14.5"})])}function Wp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z"})])}function z1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 12.75c1.148 0 2.278.08 3.383.237 1.037.146 1.866.966 1.866 2.013 0 3.728-2.35 6.75-5.25 6.75S6.75 18.728 6.75 15c0-1.046.83-1.867 1.866-2.013A24.204 24.204 0 0 1 12 12.75Zm0 0c2.883 0 5.647.508 8.207 1.44a23.91 23.91 0 0 1-1.152 6.06M12 12.75c-2.883 0-5.647.508-8.208 1.44.125 2.104.52 4.136 1.153 6.06M12 12.75a2.25 2.25 0 0 0 2.248-2.354M12 12.75a2.25 2.25 0 0 1-2.248-2.354M12 8.25c.995 0 1.971-.08 2.922-.236.403-.066.74-.358.795-.762a3.778 3.778 0 0 0-.399-2.25M12 8.25c-.995 0-1.97-.08-2.922-.236-.402-.066-.74-.358-.795-.762a3.734 3.734 0 0 1 .4-2.253M12 8.25a2.25 2.25 0 0 0-2.248 2.146M12 8.25a2.25 2.25 0 0 1 2.248 2.146M8.683 5a6.032 6.032 0 0 1-1.155-1.002c.07-.63.27-1.222.574-1.747m.581 2.749A3.75 3.75 0 0 1 15.318 5m0 0c.427-.283.815-.62 1.155-.999a4.471 4.471 0 0 0-.575-1.752M4.921 6a24.048 24.048 0 0 0-.392 3.314c1.668.546 3.416.914 5.223 1.082M19.08 6c.205 1.08.337 2.187.392 3.314a23.882 23.882 0 0 1-5.223 1.082"})])}function N1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 14.25v2.25m3-4.5v4.5m3-6.75v6.75m3-9v9M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z"})])}function W1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155"})])}function j1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 12.76c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.076-4.076a1.526 1.526 0 0 1 1.037-.443 48.282 48.282 0 0 0 5.68-.494c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0 0 12 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018Z"})])}function wu(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 12.75 6 6 9-13.5"})])}function q1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"})])}function Su(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"})])}function Y1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 15.75 7.5-7.5 7.5 7.5"})])}function $u(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z"})])}function Is(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5A3.375 3.375 0 0 0 6.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0 0 15 2.25h-1.5a2.251 2.251 0 0 0-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 0 0-9-9Z"})])}function jp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9.75v6.75m0 0-3-3m3 3 3-3m-8.25 6a4.5 4.5 0 0 1-1.41-8.775 5.25 5.25 0 0 1 10.233-2.33 3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5H6.75Z"})])}function qp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})])}function F1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"})])}function U1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375M9 15l2.25 2.25L15 12"})])}function G1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"})])}function H1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m5.231 13.481L15 17.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v16.5c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Zm3.75 11.625a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z"})])}function Vs(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function Zn(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"})])}function K1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88"})])}function J1(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z"}),d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})])}function ev(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 0 0-1.883 2.542l.857 6a2.25 2.25 0 0 0 2.227 1.932H19.05a2.25 2.25 0 0 0 2.227-1.932l.857-6a2.25 2.25 0 0 0-1.883-2.542m-16.5 0V6A2.25 2.25 0 0 1 6 3.75h3.879a1.5 1.5 0 0 1 1.06.44l2.122 2.12a1.5 1.5 0 0 0 1.06.44H18A2.25 2.25 0 0 1 20.25 9v.776"})])}function tv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z"})])}function rv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5-3.9 19.5m-2.1-19.5-3.9 19.5"})])}function nv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z"})])}function sv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 18v-5.25m0 0a6.01 6.01 0 0 0 1.5-.189m-1.5.189a6.01 6.01 0 0 1-1.5-.189m3.75 7.478a12.06 12.06 0 0 1-4.5 0m3.75 2.383a14.406 14.406 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18"})])}function Yp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})])}function us(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"})])}function iv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 12h14"})])}function ov(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13"})])}function Fp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10"})])}function av(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986V5.653Z"})])}function Ih(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 0 1-.657.643 48.39 48.39 0 0 1-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 0 1-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 0 0-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 0 1-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 0 0 .657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 0 1-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .369-.128.713-.349 1.003-.215.283-.4.604-.4.959v0c0 .333.277.599.61.58a48.1 48.1 0 0 0 5.427-.63 48.05 48.05 0 0 0 .582-4.717.532.532 0 0 0-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.96.401v0a.656.656 0 0 0 .658-.663 48.422 48.422 0 0 0-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 0 1-.61-.58v0Z"})])}function Cu(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z"})])}function Up(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"})])}function Qu(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m0-10.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.75c0 5.592 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.57-.598-3.75h-.152c-3.196 0-6.1-1.25-8.25-3.286Zm0 13.036h.008v.008H12v-.008Z"})])}function $a(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z"})])}function lv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"}),d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 9.563C9 9.252 9.252 9 9.563 9h4.874c.311 0 .563.252.563.563v4.874c0 .311-.252.563-.563.563H9.564A.562.562 0 0 1 9 14.437V9.564Z"})])}function Pu(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z"}),d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 6h.008v.008H6V6Z"})])}function cv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M11.42 15.17 17.25 21A2.652 2.652 0 0 0 21 17.25l-5.877-5.877M11.42 15.17l2.496-3.03c.317-.384.74-.626 1.208-.766M11.42 15.17l-4.655 5.653a2.548 2.548 0 1 1-3.586-3.586l6.837-5.63m5.108-.233c.55-.164 1.163-.188 1.743-.14a4.5 4.5 0 0 0 4.486-6.336l-3.276 3.277a3.004 3.004 0 0 1-2.25-2.25l3.276-3.276a4.5 4.5 0 0 0-6.336 4.486c.091 1.076-.071 2.264-.904 2.95l-.102.085m-1.745 1.437L5.909 7.5H4.5L2.25 3.75l1.5-1.5L7.5 4.5v1.409l4.26 4.26m-1.745 1.437 1.745-1.437m6.615 8.206L15.75 15.75M4.867 19.125h.008v.008h-.008v-.008Z"})])}const uv={class:"flex items-center gap-1.5 px-2 py-1.5 bg-retro-panel border-b border-retro-border"},hv={class:"relative flex-1 min-w-0"},dv={key:0,class:"text-[11px] text-retro-muted flex-shrink-0 min-w-[60px] text-center"},fv=["disabled"],pv=["disabled"],mv=ze({__name:"GitFindWidget",props:{resultCount:{},currentIndex:{}},emits:["search","next","prev","close"],setup(r,{expose:e,emit:t}){const n=t,s=M(""),i=M(null);let o=null;function a(){o&&clearTimeout(o),o=setTimeout(()=>{n("search",s.value)},200)}function l(u){u.key==="Escape"?(u.preventDefault(),n("close")):u.key==="Enter"&&(u.preventDefault(),u.shiftKey?n("prev"):n("next"))}function c(){i.value?.focus(),i.value?.select()}return e({focus:c}),(u,h)=>(v(),y("div",uv,[te(m(us),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("div",hv,[Je(d("input",{ref_key:"inputRef",ref:i,"onUpdate:modelValue":h[0]||(h[0]=p=>nt(s)?s.value=p:null),type:"text",placeholder:"Find in commits...","aria-label":"Search commits",class:"w-full px-2 py-1 text-sm bg-retro-dark border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan",onInput:a,onKeydown:l},null,544),[[Lt,m(s)]])]),m(s)?(v(),y("span",dv,[r.resultCount>0?(v(),y($e,{key:0},[Ie(_(r.currentIndex+1)+" of "+_(r.resultCount),1)],64)):(v(),y($e,{key:1},[Ie(" No results ")],64))])):K("",!0),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text disabled:opacity-30 disabled:cursor-not-allowed transition-colors",disabled:r.resultCount===0,"aria-label":"Previous result",title:"Previous (Shift+Enter)",onClick:h[1]||(h[1]=p=>n("prev"))},[te(m(Y1),{class:"w-4 h-4"})],8,fv),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text disabled:opacity-30 disabled:cursor-not-allowed transition-colors",disabled:r.resultCount===0,"aria-label":"Next result",title:"Next (Enter)",onClick:h[2]||(h[2]=p=>n("next"))},[te(m(q1),{class:"w-4 h-4"})],8,pv),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text transition-colors","aria-label":"Close find widget",title:"Close (Escape)",onClick:h[3]||(h[3]=p=>n("close"))},[te(m(At),{class:"w-4 h-4"})])]))}}),gv={class:"flex flex-col bg-retro-dark border border-retro-border rounded shadow-lg max-w-md w-full"},Ov={class:"flex items-center justify-between px-3 py-2 border-b border-retro-border"},vv={class:"flex-1 overflow-auto max-h-[300px]"},bv={class:"font-semibold text-retro-cyan flex-shrink-0 min-w-[60px]"},xv=["onKeyup"],yv=["onClick"],kv={class:"text-retro-muted truncate flex-1 font-mono"},wv=["onClick"],Sv=["onClick"],$v={key:0,class:"px-3 py-4 text-center text-retro-muted text-xs"},Cv={key:0,class:"px-3 py-2 border-t border-retro-border space-y-2"},Qv={class:"flex gap-2 justify-end"},Pv=["disabled"],Tv={key:1,class:"px-3 py-2 border-t border-retro-border"},Mv=ze({__name:"GitRemoteManager",props:{remotes:{},loading:{type:Boolean}},emits:["add","edit","delete","close"],setup(r,{emit:e}){const t=e,n=M(!1),s=M(""),i=M(""),o=M(null),a=M("");function l(){n.value=!0,s.value="",i.value=""}function c(){!s.value.trim()||!i.value.trim()||(t("add",{name:s.value.trim(),url:i.value.trim()}),n.value=!1)}function u(f){o.value=f.name,a.value=f.fetchUrl}function h(f){a.value.trim()&&(t("edit",{name:f,newUrl:a.value.trim()}),o.value=null)}function p(){o.value=null}return(f,g)=>(v(),y("div",gv,[d("div",Ov,[g[5]||(g[5]=d("h3",{class:"text-sm font-semibold text-retro-text"},"Remote Repositories",-1)),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text transition-colors",onClick:g[0]||(g[0]=O=>t("close"))},[te(m(At),{class:"w-4 h-4"})])]),d("div",vv,[(v(!0),y($e,null,Fe(r.remotes,O=>(v(),y("div",{key:O.name,class:"flex items-center gap-2 px-3 py-2 border-b border-retro-border/50 text-xs"},[d("span",bv,_(O.name),1),m(o)===O.name?(v(),y($e,{key:0},[Je(d("input",{"onUpdate:modelValue":g[1]||(g[1]=x=>nt(a)?a.value=x:null),type:"text",class:"flex-1 px-2 py-1 text-xs bg-retro-panel border border-retro-border rounded text-retro-text focus:outline-none focus:border-retro-cyan",onKeyup:[ls(x=>h(O.name),["enter"]),ls(p,["escape"])]},null,40,xv),[[Lt,m(a)]]),d("button",{class:"p-0.5 text-retro-green hover:text-retro-green/80",onClick:x=>h(O.name)},[te(m(wu),{class:"w-3.5 h-3.5"})],8,yv),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text",onClick:p},[te(m(At),{class:"w-3.5 h-3.5"})])],64)):(v(),y($e,{key:1},[d("span",kv,_(O.fetchUrl),1),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text",title:"Edit",onClick:x=>u(O)},[te(m(Fp),{class:"w-3.5 h-3.5"})],8,wv),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-red",title:"Delete",onClick:x=>t("delete",O.name)},[te(m(bn),{class:"w-3.5 h-3.5"})],8,Sv)],64))]))),128)),r.remotes.length===0?(v(),y("div",$v," No remotes configured ")):K("",!0)]),m(n)?(v(),y("div",Cv,[Je(d("input",{"onUpdate:modelValue":g[2]||(g[2]=O=>nt(s)?s.value=O:null),type:"text",placeholder:"Remote name (e.g., origin)",class:"w-full px-2 py-1 text-xs bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan"},null,512),[[Lt,m(s)]]),Je(d("input",{"onUpdate:modelValue":g[3]||(g[3]=O=>nt(i)?i.value=O:null),type:"text",placeholder:"Remote URL",class:"w-full px-2 py-1 text-xs bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan",onKeyup:ls(c,["enter"])},null,544),[[Lt,m(i)]]),d("div",Qv,[d("button",{class:"px-2 py-1 text-xs text-retro-muted hover:text-retro-text transition-colors",onClick:g[4]||(g[4]=O=>n.value=!1)}," Cancel "),d("button",{class:"px-2 py-1 text-xs bg-retro-cyan/20 text-retro-cyan border border-retro-cyan/40 rounded hover:bg-retro-cyan/30 transition-colors",disabled:!m(s).trim()||!m(i).trim(),onClick:c}," Add Remote ",8,Pv)])])):K("",!0),m(n)?K("",!0):(v(),y("div",Tv,[d("button",{class:"flex items-center gap-1 text-xs text-retro-cyan hover:text-retro-cyan/80 transition-colors",onClick:l},[te(m(ol),{class:"w-3.5 h-3.5"}),g[6]||(g[6]=Ie(" Add Remote ",-1))])]))]))}}),al={NODE_RADIUS:4,ROW_HEIGHT:32,COLUMN_WIDTH:20,PADDING:10,VISIBLE_BUFFER:10},Bo=["#3B82F6","#EF4444","#10B981","#F59E0B","#8B5CF6","#EC4899","#14B8A6","#F97316","#06B6D4","#84CC16","#F43F5E","#A855F7"],zs={A:{label:"Added",colorClass:"text-retro-green"},M:{label:"Modified",colorClass:"text-retro-yellow"},D:{label:"Deleted",colorClass:"text-retro-red"},R:{label:"Renamed",colorClass:"text-retro-blue"},C:{label:"Copied",colorClass:"text-retro-purple"},U:{label:"Unmerged",colorClass:"text-retro-cyan"}},Av=["width","height"],_v=["d","stroke","stroke-dasharray"],Rv={key:0},Bv=["cx","r"],Zv=["cx","r","fill"],Ev=["cx","r","stroke"],Dv=["cx","r","fill"],Lv=["cx","r","stroke"],Xv=["cx","r","fill"],Iv=["cx","r"],Vv=["cx","r","fill"],Gp=ze({__name:"GitGraphSvg",props:{rowData:{},maxLane:{default:4},highlightBranches:{},tooltipText:{}},setup(r){const e=r,{COLUMN_WIDTH:t,ROW_HEIGHT:n,NODE_RADIUS:s,PADDING:i}=al,o=ee(()=>i*2+(e.maxLane+1)*t),a=n,l=n/2;function c(p){return i+p*t}function u(p){const f=c(p.fromLane),g=c(p.toLane);if(p.type==="vertical")return`M ${f} 0 L ${g} ${a}`;if(p.type==="vertical-top")return`M ${f} 0 L ${f} ${l}`;if(p.type==="vertical-bottom")return`M ${f} ${l} L ${f} ${a}`;if(p.style==="rounded")return`M ${f} ${l} C ${f} ${a}, ${g} ${a}, ${g} ${a}`;{const O=a*.75;return`M ${f} ${l} L ${f} ${O} L ${g} ${a}`}}const h=ee(()=>e.rowData?c(e.rowData.lane):i);return(p,f)=>(v(),y("svg",{width:m(o),height:m(a),class:"block flex-shrink-0","aria-hidden":"true"},[r.rowData?(v(),y($e,{key:0},[(v(!0),y($e,null,Fe(r.rowData.connections,(g,O)=>(v(),y("path",{key:O,d:u(g),stroke:g.color,"stroke-width":"2",fill:"none","stroke-dasharray":g.type.startsWith("merge")?"4 3":"none"},null,8,_v))),128)),d("g",null,[r.tooltipText?(v(),y("title",Rv,_(r.tooltipText),1)):K("",!0),r.rowData.nodeType==="head"?(v(),y($e,{key:1},[d("circle",{cx:m(h),cy:l,r:m(s)+2,fill:"none",stroke:"currentColor","stroke-width":"2",class:"text-retro-cyan"},null,8,Bv),d("circle",{cx:m(h),cy:l,r:m(s),fill:r.rowData.color},null,8,Zv)],64)):r.rowData.nodeType==="merge"?(v(),y($e,{key:2},[d("circle",{cx:m(h),cy:l,r:m(s)+1,fill:"none",stroke:r.rowData.color,"stroke-width":"1.5"},null,8,Ev),d("circle",{cx:m(h),cy:l,r:m(s)-1,fill:r.rowData.color},null,8,Dv)],64)):r.rowData.nodeType==="stash"?(v(),y($e,{key:3},[d("circle",{cx:m(h),cy:l,r:m(s),fill:"none",stroke:r.rowData.color,"stroke-width":"2"},null,8,Lv),d("circle",{cx:m(h),cy:l,r:m(s)-2,fill:r.rowData.color},null,8,Xv)],64)):r.rowData.nodeType==="uncommitted"?(v(),y("circle",{key:4,cx:m(h),cy:l,r:m(s),fill:"none",stroke:"currentColor","stroke-width":"2",class:"text-retro-yellow","stroke-dasharray":"3 2"},null,8,Iv)):(v(),y("circle",{key:5,cx:m(h),cy:l,r:m(s),fill:r.rowData.color},null,8,Vv))])],64)):K("",!0)],8,Av))}}),zv=["aria-selected","aria-label"],Nv={key:1,class:"flex gap-1 flex-shrink-0"},Wv=["title","onContextmenu"],jv={key:2,class:"flex gap-1 flex-shrink-0"},qv=["onContextmenu"],Yv={class:"text-retro-text text-xs truncate flex-1"},Fv={key:5,class:"flex-shrink-0 text-retro-muted text-[10px] hidden sm:inline"},Uv={key:6,class:"flex-shrink-0 text-retro-muted text-[10px]"},Vh=72,Gv=ze({__name:"GitCommitRow",props:{commit:{},index:{},isSelected:{type:Boolean},isHighlighted:{type:Boolean},isBranchHighlighted:{type:Boolean},isFeatureHighlighted:{type:Boolean},isPreviewHighlighted:{type:Boolean},isMuted:{type:Boolean},currentBranchName:{},localBranchNames:{},graphRowData:{},maxLane:{},columnVisibility:{}},emits:["click","keydown","branchContextMenu","commitContextMenu","tagContextMenu"],setup(r,{emit:e}){const t=r,n=e,s=ee(()=>{const p=t.commit.branches;if(p.length===0)return[];const f=t.localBranchNames,g=[],O=[];for(const P of p)f.has(P)?g.push(P):O.push(P);const x=new Set(g),b=new Map,w=[];for(const P of O){const E=P.indexOf("/");if(E>0){const j=P.substring(E+1),z=P.substring(0,E);x.has(j)?(b.has(j)||b.set(j,[]),b.get(j).push(z)):w.push(P)}else w.push(P)}const Q=[];for(const P of g){const E=b.get(P)||[];E.length>0?Q.push({displayName:`${P}/${E.join(",")}`,originalBranches:[P,...E.map(j=>`${j}/${P}`)],isLocal:!0}):Q.push({displayName:P,originalBranches:[P],isLocal:!0})}for(const P of w)Q.push({displayName:P,originalBranches:[P],isLocal:!1});return Q});function i(p,f){p.preventDefault(),p.stopPropagation();const g=f.originalBranches[0];n("branchContextMenu",{branch:g,x:p.clientX,y:p.clientY,isCurrentBranch:f.isLocal&&f.originalBranches.includes(t.currentBranchName??""),isLocal:f.isLocal})}function o(p,f){p.preventDefault(),p.stopPropagation(),n("tagContextMenu",{tag:f,x:p.clientX,y:p.clientY})}function a(p){p.preventDefault(),p.stopPropagation(),n("commitContextMenu",{x:p.clientX,y:p.clientY})}const{ROW_HEIGHT:l}=al,c=ee(()=>{const p=[t.commit.shortHash];return t.commit.branches.length>0&&p.push(t.commit.branches.join(", ")),t.commit.tags.length>0&&p.push(t.commit.tags.map(f=>`tag: ${f}`).join(", ")),p.join(" — ")});function u(p){const g=Date.now()/1e3-p;return g<60?"just now":g<3600?`${Math.floor(g/60)}m ago`:g<86400?`${Math.floor(g/3600)}h ago`:g<604800?`${Math.floor(g/86400)}d ago`:g<2592e3?`${Math.floor(g/604800)}w ago`:new Date(p*1e3).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}function h(p){const f=p.split(`
|
|
3
|
+
`)[0];return f.length>Vh?f.substring(0,Vh-3)+"...":f}return(p,f)=>{const g=Gp;return v(),y("div",{class:Ze(["flex items-center cursor-pointer group focus:outline-none focus:ring-1 focus:ring-retro-cyan/50 focus:ring-inset",{"opacity-40":r.isMuted,"bg-retro-magenta/10":r.isPreviewHighlighted,"bg-retro-yellow/20":r.isFeatureHighlighted&&!r.isPreviewHighlighted}]),style:er({height:`${m(l)}px`}),role:"row",tabindex:"0","aria-selected":r.isSelected,"aria-label":`Commit ${r.commit.shortHash} by ${r.commit.author}: ${r.commit.message.split(`
|
|
4
|
+
`)[0]}`,onClick:f[0]||(f[0]=O=>n("click",O)),onKeydown:f[1]||(f[1]=O=>n("keydown",O)),onContextmenu:a},[te(g,{rowData:r.graphRowData,maxLane:r.maxLane,tooltipText:m(c)},null,8,["rowData","maxLane","tooltipText"]),d("div",{class:Ze(["flex-1 flex items-center gap-2 px-2 min-w-0 rounded-r transition-colors",{"bg-retro-magenta/10 border-l-2 border-retro-magenta/40":r.isPreviewHighlighted,"bg-retro-yellow/30 border-l-2 border-retro-yellow":r.isFeatureHighlighted&&!r.isPreviewHighlighted,"bg-retro-cyan/15":r.isSelected&&!r.isFeatureHighlighted&&!r.isPreviewHighlighted,"bg-retro-yellow/10":r.isHighlighted&&!r.isSelected&&!r.isFeatureHighlighted&&!r.isPreviewHighlighted,"bg-retro-cyan/5":r.isBranchHighlighted&&!r.isSelected&&!r.isHighlighted&&!r.isFeatureHighlighted&&!r.isPreviewHighlighted,"group-hover:bg-retro-panel/50":!r.isSelected&&!r.isHighlighted&&!r.isFeatureHighlighted&&!r.isPreviewHighlighted&&!r.isBranchHighlighted}]),style:er({height:`${m(l)-4}px`})},[!r.columnVisibility||r.columnVisibility.commit!==!1?(v(),y("span",{key:0,class:Ze(["flex-shrink-0 font-mono text-[11px]",r.commit.isHead?"text-retro-cyan font-semibold":"text-retro-muted"])},_(r.commit.shortHash),3)):K("",!0),m(s).length>0?(v(),y("div",Nv,[(v(!0),y($e,null,Fe(m(s),O=>(v(),y("span",{key:O.displayName,class:Ze(["px-1.5 py-0.5 text-[10px] rounded font-semibold leading-none cursor-context-menu hover:ring-1 hover:ring-retro-cyan/50",r.commit.isHead&&O.isLocal?"bg-retro-cyan/20 text-retro-cyan border border-retro-cyan/40":r.isPreviewHighlighted?"bg-retro-magenta/10 text-retro-magenta border border-retro-magenta/40":r.isFeatureHighlighted?"bg-retro-yellow/15 text-retro-yellow border border-retro-yellow/30":r.isBranchHighlighted?"bg-retro-cyan/15 text-retro-cyan/80 border border-retro-cyan/30":O.isLocal?"bg-retro-green/15 text-retro-green border border-retro-green/30":"bg-retro-orange/15 text-retro-orange border border-retro-orange/30"]),title:O.originalBranches.join(", "),onContextmenu:x=>i(x,O)},_(O.displayName),43,Wv))),128))])):K("",!0),r.commit.tags.length>0?(v(),y("div",jv,[(v(!0),y($e,null,Fe(r.commit.tags,O=>(v(),y("span",{key:O,class:"px-1 py-0.5 text-[10px] rounded-sm bg-retro-yellow/15 text-retro-yellow border border-retro-yellow/25 flex items-center gap-0.5 leading-none cursor-context-menu hover:ring-1 hover:ring-retro-yellow/50",onContextmenu:x=>o(x,O)},[te(m(Pu),{class:"w-2.5 h-2.5"}),Ie(" "+_(O),1)],40,qv))),128))])):K("",!0),d("span",Yv,_(h(r.commit.message)),1),r.commit.signatureStatus==="good"?(v(),be(m(Up),{key:3,class:"w-3.5 h-3.5 flex-shrink-0 text-retro-green",title:"Verified signature"})):r.commit.signatureStatus==="bad"?(v(),be(m(Qu),{key:4,class:"w-3.5 h-3.5 flex-shrink-0 text-retro-red",title:"Bad signature"})):K("",!0),!r.columnVisibility||r.columnVisibility.author!==!1?(v(),y("span",Fv,_(r.commit.author),1)):K("",!0),!r.columnVisibility||r.columnVisibility.date!==!1?(v(),y("span",Uv,_(u(r.commit.timestamp)),1)):K("",!0)],6)],46,zv)}}});function Hv(){const{COLUMN_WIDTH:r,ROW_HEIGHT:e,NODE_RADIUS:t,PADDING:n}=al;function s(l){let c=0;for(let u=0;u<l.length;u++){const h=l.charCodeAt(u);c=(c<<5)-c+h,c=c&c}return Math.abs(c)}function i(l){const c=s(l)%Bo.length;return Bo[c]}function o(l,c="rounded"){const u=new Map;if(l.length===0)return u;const h=new Set,p=new Map;for(const Q of l)p.set(Q.hash,Q);const f=l.find(Q=>Q.isHead)||l[0];if(f){let Q=f;for(;Q;){h.add(Q.hash);const P=Q.parents?.[0];Q=P?p.get(P):void 0}}const g=new Map,O=new Map,x=new Map,b=new Map,w=new Map;for(let Q=0;Q<l.length;Q++){const P=l[Q];w.set(P.hash,Q);const E=h.has(P.hash);let j,z;if(b.has(P.hash)){const L=b.get(P.hash);j=L.lane,z=L.color,b.delete(P.hash)}else if(E)j=0,z=Bo[0];else{for(j=1;x.has(j);)j++;z=i(P.hash.substring(0,7))}g.set(P.hash,j),O.set(P.hash,z),x.set(j,P.hash);const ae=P.isMerge||P.parents&&P.parents.length>1;let ce="regular";P.isHead?ce="head":ae&&(ce="merge"),u.set(P.hash,{commitHash:P.hash,lane:j,color:z,nodeType:ce,isMainline:h.has(P.hash),connections:[]});const Oe=P.parents||[];for(let L=0;L<Oe.length;L++){const Z=Oe[L];if(g.has(Z)||b.has(Z))continue;const F=h.has(Z);let q,N;if(L===0)q=j,N=z;else if(F)q=0,N=Bo[0];else{for(q=1;x.has(q)||q===j;)q++;N=i(Z.substring(0,7))}b.set(Z,{lane:q,color:N,childHash:P.hash})}const W=Oe[0];if(!W)x.delete(j);else{const L=g.get(W),Z=b.get(W),F=L??Z?.lane;F!==void 0&&F!==j&&x.delete(j)}}for(let Q=0;Q<l.length;Q++){const P=l[Q],E=u.get(P.hash);if(!E)continue;const j=P.parents||[];for(let z=0;z<j.length;z++){const ae=j[z],ce=g.get(ae),Oe=w.get(ae);if(ce===void 0)continue;const W=E.lane,L=ce,Z=z===0?E.color:O.get(ae)||i(ae.substring(0,7));if(W===L?E.connections.push({type:"vertical-bottom",fromLane:W,toLane:L,color:Z,style:c}):z>0?E.connections.push({type:W<L?"merge-out":"merge-in",fromLane:W,toLane:L,color:Z,style:c}):E.connections.push({type:W<L?"branch-out":"branch-in",fromLane:W,toLane:L,color:Z,style:c}),Oe!==void 0&&Oe>Q+1)for(let F=Q+1;F<Oe;F++){const q=l[F],N=u.get(q.hash);N&&N.connections.push({type:"vertical",fromLane:L,toLane:L,color:Z,style:c})}if(Oe!==void 0){const F=u.get(ae);F&&F.connections.push({type:"vertical-top",fromLane:L,toLane:L,color:Z,style:c})}}}return u}function a(l){let c=0;for(const u of l.values()){u.lane>c&&(c=u.lane);for(const h of u.connections)h.fromLane>c&&(c=h.fromLane),h.toLane>c&&(c=h.toLane)}return c}return{computeGraphRows:o,computeMaxLane:a,getBranchColor:i,COLUMN_WIDTH:r,ROW_HEIGHT:e,NODE_RADIUS:t,PADDING:n}}const Kv=["aria-selected"],Jv={class:"text-retro-yellow text-xs font-medium"},eb={key:1,class:"flex items-center justify-center gap-2 p-2 text-retro-muted text-sm"},tb={key:2,class:"p-2 text-center text-retro-muted/50 text-xs"},rb=ze({__name:"GitCommitList",props:{commits:{},stashes:{},selectedCommit:{},hasMore:{type:Boolean},loading:{type:Boolean},loadingMore:{type:Boolean},searchQuery:{},uncommittedChangesCount:{},isUncommittedChangesSelected:{type:Boolean},highlightBranches:{},featureHighlightBranches:{},featureMergeBases:{},previewHighlightBranches:{},previewMergeBases:{},currentBranchName:{},localBranchNames:{},graphStyle:{default:"rounded"},muteNonAncestral:{type:Boolean},columnVisibility:{}},emits:["select","compareSelect","loadMore","branchContextMenu","commitContextMenu","tagContextMenu","stashContextMenu","selectUncommittedChanges","scrollStart","scrollEnd"],setup(r,{expose:e,emit:t}){const n=r,s=t;function i(){s("selectUncommittedChanges")}function o(S){(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),s("selectUncommittedChanges"))}const a=ee(()=>n.searchQuery?.toLowerCase()??""),l=ee(()=>new Set(n.highlightBranches??[])),c=ee(()=>l.value.size>0),u=ee(()=>{const S=a.value;if(!S)return new Set;const k=new Set;for(const A of n.commits)(A.message.toLowerCase().includes(S)||A.author.toLowerCase().includes(S)||A.shortHash.toLowerCase().includes(S)||A.hash.toLowerCase().includes(S)||A.branches.some(R=>R.toLowerCase().includes(S))||A.tags.some(R=>R.toLowerCase().includes(S)))&&k.add(A.hash);return k}),h=ee(()=>{if(!c.value)return new Set;const S=new Set;for(const k of n.commits)k.branches.some(A=>l.value.has(A))&&S.add(k.hash);return S}),p=ee(()=>{if(!n.featureHighlightBranches||n.featureHighlightBranches.length===0)return new Set;const S=n.featureMergeBases??{},k=new Map;for(const R of n.commits)k.set(R.hash,R);const A=new Set;for(const R of n.featureHighlightBranches){const H=n.commits.find(Xe=>Xe.branches.includes(R));if(!H)continue;const oe=S[R]??null;if(!oe)continue;let ye=H;for(;ye&&ye.hash!==oe;)A.add(ye.hash),ye=ye.parents?.[0]?k.get(ye.parents[0]):void 0}return A}),f=ee(()=>{if(!n.previewHighlightBranches||n.previewHighlightBranches.length===0)return new Set;const S=n.previewMergeBases??{},k=new Map;for(const R of n.commits)k.set(R.hash,R);const A=new Set;for(const R of n.previewHighlightBranches){const H=n.commits.find(Xe=>Xe.branches.includes(R));if(!H)continue;const oe=S[R]??null;if(!oe)continue;let ye=H;for(;ye&&ye.hash!==oe;)A.add(ye.hash),ye=ye.parents?.[0]?k.get(ye.parents[0]):void 0}return A});function g(S,k){s("branchContextMenu",{...k,commitHash:S.hash})}function O(S,k){s("commitContextMenu",{commit:S,...k})}function x(S,k){s("tagContextMenu",{...k,commitHash:S.hash})}const{ROW_HEIGHT:b,VISIBLE_BUFFER:w}=al,{computeGraphRows:Q,computeMaxLane:P}=Hv(),E=ee(()=>Q([...n.commits],n.graphStyle)),j=ee(()=>P(E.value)),z=ee(()=>{const S=n.stashes||[];if(S.length===0)return n.commits.map((H,oe)=>({type:"commit",commit:H,commitIndex:oe}));const k=[],A=[...S].sort((H,oe)=>new Date(oe.date).getTime()-new Date(H.date).getTime());let R=0;for(let H=0;H<n.commits.length;H++){const oe=n.commits[H],ye=oe.timestamp*1e3;for(;R<A.length&&new Date(A[R].date).getTime()>=ye;)k.push({type:"stash",stash:A[R]}),R++;k.push({type:"commit",commit:oe,commitIndex:H})}for(;R<A.length;)k.push({type:"stash",stash:A[R]}),R++;return k}),ae=M(null),ce=M(0),Oe=M(400);let W=null;const L=ee(()=>{const S=w,k=z.value.length,A=Math.max(0,Math.floor(ce.value/b)-S),R=Math.min(k,Math.ceil((ce.value+Oe.value)/b)+S);return{startIndex:A,endIndex:R}}),Z=ee(()=>{const{startIndex:S,endIndex:k}=L.value;return z.value.slice(S,k).map((A,R)=>({row:A,index:S+R,graphRow:A.type==="commit"&&E.value.get(A.commit.hash)||null,isHighlighted:A.type==="commit"?u.value.has(A.commit.hash):!1,isBranchHighlighted:A.type==="commit"?h.value.has(A.commit.hash):!1,isFeatureHighlighted:A.type==="commit"?p.value.has(A.commit.hash):!1,isPreviewHighlighted:A.type==="commit"?f.value.has(A.commit.hash):!1,isMuted:A.type==="commit"&&n.muteNonAncestral?!(E.value.get(A.commit.hash)?.isMainline??!1):!1}))}),F=ee(()=>z.value.length*b),q=ee(()=>L.value.startIndex*b);function N(S){const k=S.target;ce.value=k.scrollTop,W||s("scrollStart"),W&&clearTimeout(W),W=setTimeout(()=>{W=null,s("scrollEnd")},150),n.hasMore&&!n.loading&&!n.loadingMore&&k.scrollTop+k.clientHeight>=k.scrollHeight-200&&s("loadMore")}function X(S,k){k.ctrlKey||k.metaKey?s("compareSelect",S):s("select",S)}function I(S,k,A){if(S.key==="Enter"||S.key===" ")S.preventDefault(),s("select",k);else if(S.key==="ArrowDown"){S.preventDefault();for(let R=A+1;R<z.value.length;R++){const H=z.value[R];if(H.type==="commit"){s("select",H.commit),xe(R);break}}}else if(S.key==="ArrowUp"){S.preventDefault();for(let R=A-1;R>=0;R--){const H=z.value[R];if(H.type==="commit"){s("select",H.commit),xe(R);break}}}}function xe(S){if(!ae.value)return;const k=S*b,A=ae.value.scrollTop,R=A+ae.value.clientHeight;k<A?ae.value.scrollTop=k:k+b>R&&(ae.value.scrollTop=k+b-ae.value.clientHeight)}Ot(()=>{if(ae.value){Oe.value=ae.value.clientHeight;const S=new ResizeObserver(k=>{for(const A of k)Oe.value=A.contentRect.height});S.observe(ae.value),Qt(()=>S.disconnect())}});function J(){return ae.value?.scrollTop??0}function fe(S){ae.value&&(ae.value.scrollTop=S)}return e({getScrollPosition:J,setScrollPosition:fe,scrollToIndex:xe}),(S,k)=>{const A=Gp,R=Gv;return v(),y("div",{ref_key:"containerRef",ref:ae,class:"h-full overflow-auto",role:"list","aria-label":"Commit history",onScroll:N},[r.uncommittedChangesCount&&r.uncommittedChangesCount>0?(v(),y("div",{key:0,class:"flex items-center cursor-pointer group sticky top-0 z-10 bg-retro-dark border-b border-retro-border",style:er({height:`${m(b)}px`}),role:"button",tabindex:"0","aria-selected":r.isUncommittedChangesSelected,onClick:i,onKeydown:o},[te(A,{rowData:{commitHash:"uncommitted",lane:0,color:"#F59E0B",nodeType:"uncommitted",isMainline:!1,connections:[]},maxLane:m(j)},null,8,["maxLane"]),d("div",{class:Ze(["flex-1 flex items-center gap-2 px-2 min-w-0 rounded-r transition-colors",{"bg-retro-yellow/15":r.isUncommittedChangesSelected,"group-hover:bg-retro-panel/50":!r.isUncommittedChangesSelected}]),style:er({height:`${m(b)-4}px`})},[te(m(mo),{class:"w-4 h-4 text-retro-yellow flex-shrink-0"}),d("span",Jv," Uncommitted Changes ("+_(r.uncommittedChangesCount)+") ",1),k[1]||(k[1]=d("span",{class:"flex-1"},null,-1)),k[2]||(k[2]=d("span",{class:"text-retro-muted text-[10px]"},"Working tree",-1))],6)],44,Kv)):K("",!0),d("div",{class:"relative",style:er({height:`${m(F)}px`})},[d("div",{class:"absolute left-0 right-0",style:er({transform:`translateY(${m(q)}px)`})},[(v(!0),y($e,null,Fe(m(Z),({row:H,index:oe,graphRow:ye,isHighlighted:Xe,isBranchHighlighted:Re,isFeatureHighlighted:Ge,isPreviewHighlighted:Ue,isMuted:pe})=>(v(),y($e,{key:H.type==="commit"?H.commit.hash:`stash-${H.stash.index}`},[H.type==="commit"?_p([H.commit.hash,H.commit.message,H.commit.timestamp,H.commit.branches.join("|"),H.commit.tags.join("|"),r.selectedCommit?.hash===H.commit.hash,Xe,Re,Ge,Ue,pe,n.currentBranchName||"",n.columnVisibility?.date!==!1,n.columnVisibility?.author!==!1,n.columnVisibility?.commit!==!1],()=>(v(),be(R,{key:0,commit:H.commit,index:H.commitIndex,isSelected:r.selectedCommit?.hash===H.commit.hash,isHighlighted:Xe,isBranchHighlighted:Re,isFeatureHighlighted:Ge,isPreviewHighlighted:Ue,isMuted:pe,currentBranchName:n.currentBranchName,localBranchNames:n.localBranchNames,graphRowData:ye,maxLane:m(j),columnVisibility:n.columnVisibility,onClick:Qe=>X(H.commit,Qe),onKeydown:Qe=>I(Qe,H.commit,oe),onBranchContextMenu:Qe=>g(H.commit,Qe),onCommitContextMenu:Qe=>O(H.commit,Qe),onTagContextMenu:Qe=>x(H.commit,Qe)},null,8,["commit","index","isSelected","isHighlighted","isBranchHighlighted","isFeatureHighlighted","isPreviewHighlighted","isMuted","currentBranchName","localBranchNames","graphRowData","maxLane","columnVisibility","onClick","onKeydown","onBranchContextMenu","onCommitContextMenu","onTagContextMenu"])),k,0):K("",!0)],64))),128))],4)],4),(r.loading||r.loadingMore)&&r.commits.length>0?(v(),y("div",eb,[...k[3]||(k[3]=[d("div",{class:"w-3 h-3 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"},null,-1),Ie(" Loading more commits... ",-1)])])):K("",!0),!r.hasMore&&r.commits.length>0&&!r.loading?(v(),y("div",tb,_(r.commits.length)+" commits loaded ",1)):K("",!0)],544)}}});function nb(r){const e=r.charAt(0).toUpperCase();return e in zs?e:"M"}function Zo(r,e){if(r&&typeof r=="object"){const t=r;if(typeof t.data?.message=="string"&&t.data.message.trim())return t.data.message;if(typeof t.statusMessage=="string"&&t.statusMessage.trim())return t.statusMessage;if(typeof t.message=="string"&&t.message.trim())return t.message}return r instanceof Error&&r.message?r.message:e}function zh(r,e){const t=e.trim().toLowerCase();return t?r.filter(n=>n.message.toLowerCase().includes(t)||n.author.toLowerCase().includes(t)||n.shortHash.includes(t)||n.hash.includes(t)||n.branches.some(s=>s.toLowerCase().includes(t))||n.tags.some(s=>s.toLowerCase().includes(t))):[...r]}function sb(r,e){return e.size===0?[...r]:r.filter(t=>t.branches.some(n=>e.has(n)))}const ib={class:"flex flex-col h-full border-t border-retro-border bg-retro-dark"},ob={class:"flex items-center justify-between p-2 border-b border-retro-border flex-shrink-0"},ab={class:"flex items-center gap-2 text-xs min-w-0"},lb={class:"font-mono text-retro-cyan"},cb={class:"font-mono text-retro-cyan"},ub={key:0,class:"px-3 py-1.5 text-xs text-retro-muted border-b border-retro-border flex-shrink-0"},hb={class:"text-retro-green"},db={class:"text-retro-red"},fb={key:1,class:"flex-1 flex items-center justify-center"},pb={key:2,class:"flex-1 overflow-auto"},mb={class:"text-retro-text truncate flex-1"},gb={class:"text-retro-muted"},Ob={key:0,class:"flex-shrink-0 text-[10px] font-mono"},vb={key:0,class:"text-retro-green"},bb={key:1,class:"text-retro-red ml-1"},xb={key:1,class:"flex-shrink-0 text-[10px] text-retro-muted italic"},yb={key:3,class:"flex-1 flex items-center justify-center text-retro-muted text-sm"},kb=ze({__name:"GitComparisonView",props:{fromCommit:{},toCommit:{},files:{},stats:{},loading:{type:Boolean}},emits:["close"],setup(r,{emit:e}){const t=e;function n(s){const i=nb(s);return zs[i]||zs.M}return(s,i)=>(v(),y("div",ib,[d("div",ob,[d("div",ab,[i[1]||(i[1]=d("span",{class:"text-retro-muted"},"Comparing",-1)),d("span",lb,_(r.fromCommit.shortHash),1),i[2]||(i[2]=d("span",{class:"text-retro-muted"},"→",-1)),d("span",cb,_(r.toCommit.shortHash),1)]),d("button",{class:"p-1 text-retro-muted hover:text-retro-text transition-colors flex-shrink-0","aria-label":"Close comparison",onClick:i[0]||(i[0]=o=>t("close"))},[te(m(At),{class:"w-4 h-4"})])]),r.stats?(v(),y("div",ub,[Ie(_(r.stats.filesChanged)+" file"+_(r.stats.filesChanged!==1?"s":"")+" changed, ",1),d("span",hb,"+"+_(r.stats.additions),1),d("span",db," -"+_(r.stats.deletions),1)])):K("",!0),r.loading?(v(),y("div",fb,[...i[3]||(i[3]=[d("div",{class:"flex items-center gap-2 text-retro-muted text-sm"},[d("div",{class:"w-4 h-4 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"}),Ie(" Loading comparison... ")],-1)])])):r.files&&r.files.length>0?(v(),y("div",pb,[(v(!0),y($e,null,Fe(r.files,o=>(v(),y("div",{key:o.path,class:"flex items-center gap-2 px-3 py-1.5 hover:bg-retro-panel/50 text-xs border-b border-retro-border/50"},[d("span",{class:Ze(["flex-shrink-0 w-4 text-center font-semibold text-[10px]",n(o.status).colorClass])},_(o.status.charAt(0)),3),d("span",mb,[o.oldPath&&o.status.startsWith("R")?(v(),y($e,{key:0},[d("span",gb,_(o.oldPath),1),i[4]||(i[4]=d("span",{class:"text-retro-muted mx-1"},"→",-1))],64)):K("",!0),Ie(" "+_(o.path),1)]),o.binary?(v(),y("span",xb,"binary")):(v(),y("span",Ob,[o.additions>0?(v(),y("span",vb,"+"+_(o.additions),1)):K("",!0),o.deletions>0?(v(),y("span",bb,"-"+_(o.deletions),1)):K("",!0)]))]))),128))])):r.files&&r.files.length===0?(v(),y("div",yb," No differences between these commits ")):K("",!0)]))}}),wb={":art:":"🎨",":zap:":"⚡",":fire:":"🔥",":bug:":"🐛",":ambulance:":"🚑",":sparkles:":"✨",":memo:":"📝",":rocket:":"🚀",":lipstick:":"💄",":tada:":"🎉",":white_check_mark:":"✅",":lock:":"🔒",":closed_lock_with_key:":"🔐",":bookmark:":"🔖",":rotating_light:":"🚨",":construction:":"🚧",":green_heart:":"💚",":arrow_down:":"⬇️",":arrow_up:":"⬆️",":pushpin:":"📌",":construction_worker:":"👷",":chart_with_upwards_trend:":"📈",":recycle:":"♻️",":heavy_plus_sign:":"➕",":heavy_minus_sign:":"➖",":wrench:":"🔧",":hammer:":"🔨",":globe_with_meridians:":"🌐",":pencil2:":"✏️",":poop:":"💩",":rewind:":"⏪",":twisted_rightwards_arrows:":"🔀",":package:":"📦",":alien:":"👽",":truck:":"🚚",":page_facing_up:":"📄",":boom:":"💥",":bento:":"🍱",":wheelchair:":"♿",":bulb:":"💡",":beers:":"🍻",":speech_balloon:":"💬",":card_file_box:":"🗃️",":loud_sound:":"🔊",":mute:":"🔇",":busts_in_silhouette:":"👥",":children_crossing:":"🚸",":building_construction:":"🏗️",":iphone:":"📱",":clown_face:":"🤡",":egg:":"🥚",":see_no_evil:":"🙈",":camera_flash:":"📸",":alembic:":"⚗️",":mag:":"🔍",":label:":"🏷️",":seedling:":"🌱",":triangular_flag_on_post:":"🚩",":goal_net:":"🥅",":dizzy:":"💫",":wastebasket:":"🗑️",":passport_control:":"🛂",":adhesive_bandage:":"🩹",":monocle_face:":"🧐",":coffin:":"⚰️",":test_tube:":"🧪",":necktie:":"👔",":stethoscope:":"🩺",":bricks:":"🧱",":technologist:":"🧑💻",":money_with_wings:":"💸",":thread:":"🧵",":safety_vest:":"🦺"},Sb=/https?:\/\/[^\s<>)"']+/g;function $b(r){return r.replace(Sb,e=>`<a href="${e}" target="_blank" rel="noopener noreferrer" class="text-retro-blue hover:underline">${e}</a>`)}function Cb(r){return r.replace(/:[a-z0-9_]+:/g,e=>wb[e]||e)}function Qb(r){if(!r)return"";let e=Cb(r);return e=v1.parse(e),e=$b(e),e=b1.sanitize(e,{ALLOWED_TAGS:["a","strong","em","code","b","i","br","p","ul","ol","li","pre","blockquote","h1","h2","h3"],ALLOWED_ATTR:["href","target","rel","class"]}),e}const Pb={class:"flex-shrink-0 flex items-center justify-between px-4 py-2 border-b border-retro-border bg-retro-panel"},Tb={class:"flex items-center gap-2 min-w-0"},Mb={class:"text-retro-cyan font-mono text-sm"},Ab={class:"text-retro-muted text-sm truncate"},_b={class:"flex items-center gap-1 flex-shrink-0"},Rb=["aria-label","title"],Bb={class:"flex-1 overflow-auto p-4 space-y-4"},Zb={class:"space-y-2"},Eb={class:"flex items-center gap-2 text-sm"},Db={class:"text-retro-text font-mono text-xs bg-retro-panel px-2 py-1 rounded"},Lb={class:"flex items-center gap-2 text-sm"},Xb={class:"text-retro-text"},Ib={class:"text-retro-muted"},Vb={key:0,class:"flex items-center gap-2 text-sm"},zb={class:"text-retro-text"},Nb={class:"text-retro-muted"},Wb={class:"flex items-center gap-2 text-sm"},jb={class:"text-retro-text"},qb={key:1,class:"flex items-start gap-2 text-sm"},Yb={class:"flex flex-wrap gap-1"},Fb=["onClick","title"],Ub={key:2,class:"flex items-start gap-2 text-sm"},Gb={class:"flex flex-wrap gap-1"},Hb={key:3,class:"flex items-start gap-2 text-sm"},Kb={class:"flex flex-wrap gap-1"},Jb={class:"space-y-1"},ex={class:"text-retro-text text-sm font-mono bg-retro-panel p-3 rounded"},tx={key:0,class:"space-y-1"},rx=["innerHTML"],nx={key:1,class:"space-y-2"},sx={class:"flex items-center gap-2 text-sm"},ix={class:"text-retro-muted"},ox={key:0,class:"flex items-center gap-2"},ax={class:"text-retro-green text-xs font-mono"},lx={class:"flex-1 h-2 rounded overflow-hidden bg-retro-panel flex"},cx={class:"text-retro-red text-xs font-mono"},ux={key:2,class:"space-y-2"},hx={class:"flex items-center justify-between"},dx={class:"text-retro-muted text-xs uppercase tracking-wide"},fx={class:"flex items-center gap-1"},px={key:0,class:"text-retro-muted text-sm py-2"},mx={key:1,class:"space-y-0.5"},gx=["onClick"],Ox=["title"],vx={class:"text-retro-text font-mono text-xs truncate flex-1"},bx={class:"text-retro-muted"},xx={class:"text-retro-text"},yx={key:0,class:"flex-shrink-0 font-mono text-xs flex items-center gap-1"},kx={key:0,class:"text-retro-green"},wx={key:1,class:"text-retro-red"},Sx={key:1,class:"flex-shrink-0 font-mono text-xs text-retro-muted"},$x={key:2,class:"space-y-0"},Cx=["onClick"],Qx={class:"text-retro-text font-mono text-xs"},Px=["title"],Tx={class:"text-retro-text font-mono text-xs truncate flex-1"},Mx={class:"text-retro-muted"},Ax={class:"text-retro-text"},_x={key:0,class:"flex-shrink-0 font-mono text-xs flex items-center gap-1"},Rx={key:0,class:"text-retro-green"},Bx={key:1,class:"text-retro-red"},Zx={key:1,class:"flex-shrink-0 font-mono text-xs text-retro-muted"},Ex={key:3,class:"flex items-center gap-2 text-retro-muted text-sm py-2"},Dx={key:4,class:"text-retro-muted text-sm py-2"},Lx=ze({__name:"GitCommitDetail",props:{commit:{},files:{},stats:{},loading:{type:Boolean,default:!1},committer:{},committerEmail:{},detailPosition:{default:"inline"}},emits:["close","navigateToCommit","togglePosition","navigatePrev","navigateNext","openFileDiff"],setup(r,{emit:e}){const t=r,n=e,s=M(null),i=M("flat"),o=M(new Set),a=ee(()=>!t.committer||!t.committerEmail?!1:t.committer!==t.commit.author||t.committerEmail!==t.commit.email),l=ee(()=>{const W=t.commit.body;return W?Qb(W):""}),c=ee(()=>{if(!t.stats)return"";const{filesChanged:W,additions:L,deletions:Z}=t.stats,q=[`${W} ${W===1?"file":"files"} changed`];return L>0&&q.push(`+${L} insertion${L===1?"":"s"}`),Z>0&&q.push(`-${Z} deletion${Z===1?"":"s"}`),q.join(", ")});function u(W){const L=[];for(const Z of W){const F=Z.path.split("/");let q=L;for(let N=0;N<F.length;N++){const X=F[N],I=N===F.length-1,xe=F.slice(0,N+1).join("/");let J=q.find(fe=>fe.name===X&&fe.isDirectory===!I);J||(J={name:X,fullPath:xe,isDirectory:!I,children:[],file:I?Z:void 0},q.push(J)),I||(q=J.children)}}return h(L),L}function h(W){for(const L of W)if(L.isDirectory)for(h(L.children);L.children.length===1&&L.children[0].isDirectory;){const Z=L.children[0];L.name=`${L.name}/${Z.name}`,L.fullPath=Z.fullPath,L.children=Z.children}}function p(W){return[...W].sort((L,Z)=>L.isDirectory&&!Z.isDirectory?-1:!L.isDirectory&&Z.isDirectory?1:L.name.localeCompare(Z.name))}function f(W,L,Z){const F=[];for(const q of p(W)){const N=Z.size===0?!0:Z.has(q.fullPath);F.push({key:q.fullPath,depth:L,isDirectory:q.isDirectory,name:q.name,fullPath:q.fullPath,expanded:q.isDirectory?N:!1,file:q.file}),q.isDirectory&&N&&F.push(...f(q.children,L+1,Z))}return F}const g=ee(()=>!t.files||t.files.length===0?[]:u(t.files)),O=ee(()=>f(g.value,0,o.value));function x(W){o.value.has(W)?o.value.delete(W):o.value.add(W),o.value=new Set(o.value)}function b(){const W=L=>{const Z=[];for(const F of L)F.isDirectory&&(Z.push(F.fullPath),Z.push(...W(F.children)));return Z};o.value=new Set(W(g.value))}function w(){o.value=new Set}We(i,W=>{W==="tree"&&b()});function Q(W){return new Date(W*1e3).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0})}function P(W){return zs[W]||{label:W,colorClass:"text-retro-muted"}}const E=ee(()=>{if(!t.stats)return{addPct:0,delPct:0};const W=t.stats.additions+t.stats.deletions;return W===0?{addPct:50,delPct:50}:{addPct:Math.round(t.stats.additions/W*100),delPct:Math.round(t.stats.deletions/W*100)}});function j(W){W.key==="ArrowUp"?(W.preventDefault(),n("navigatePrev")):W.key==="ArrowDown"?(W.preventDefault(),n("navigateNext")):W.key==="Escape"&&(W.preventDefault(),n("close"))}Ot(()=>{nr(()=>{s.value?.focus()})}),We(()=>t.commit.hash,()=>{nr(()=>{s.value?.focus()})});function z(){n("close")}function ae(W){n("navigateToCommit",W)}function ce(){n("togglePosition")}function Oe(W){n("openFileDiff",W)}return(W,L)=>(v(),y("section",{ref_key:"containerRef",ref:s,tabindex:0,onKeydown:j,class:"flex-1 min-h-0 flex flex-col border-t border-retro-border bg-retro-dark focus:outline-none","aria-label":"Commit details",role:"region"},[d("div",Pb,[d("div",Tb,[d("span",Mb,_(r.commit.shortHash),1),d("span",Ab,_(r.commit.message.split(`
|
|
5
|
+
`)[0]),1)]),d("div",_b,[d("button",{onClick:ce,class:"p-1 hover:bg-retro-dark rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan","aria-label":r.detailPosition==="inline"?"Dock detail to bottom":"Show detail inline",title:r.detailPosition==="inline"?"Dock to bottom":"Show inline"},[r.detailPosition==="inline"?(v(),be(m(zp),{key:0,class:"w-4 h-4 text-retro-muted hover:text-retro-text"})):(v(),be(m(Vp),{key:1,class:"w-4 h-4 text-retro-muted hover:text-retro-text"}))],8,Rb),d("button",{onClick:z,class:"p-1 hover:bg-retro-dark rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan","aria-label":"Close commit details"},[te(m(At),{class:"w-4 h-4 text-retro-muted hover:text-retro-text"})])])]),d("div",Bb,[d("div",Zb,[d("div",Eb,[L[2]||(L[2]=d("span",{class:"text-retro-muted w-20 flex-shrink-0"},"Hash:",-1)),d("code",Db,_(r.commit.hash),1)]),d("div",Lb,[te(m(_h),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("span",Xb,_(r.commit.author),1),d("span",Ib,"<"+_(r.commit.email)+">",1)]),a.value?(v(),y("div",Vb,[te(m(_h),{class:"w-4 h-4 text-retro-yellow flex-shrink-0"}),L[3]||(L[3]=d("span",{class:"text-retro-muted text-xs uppercase mr-1"},"Committer:",-1)),d("span",zb,_(r.committer),1),d("span",Nb,"<"+_(r.committerEmail)+">",1)])):K("",!0),d("div",Wb,[te(m(x1),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("span",jb,_(Q(r.commit.timestamp)),1)]),r.commit.parents?.length>0?(v(),y("div",qb,[L[4]||(L[4]=d("span",{class:"text-retro-muted w-20 flex-shrink-0"},"Parents:",-1)),d("div",Yb,[(v(!0),y($e,null,Fe(r.commit.parents,Z=>(v(),y("button",{key:Z,onClick:F=>ae(Z),class:"text-retro-cyan font-mono text-xs bg-retro-panel px-2 py-0.5 rounded hover:bg-retro-dark hover:text-retro-text transition-colors cursor-pointer focus:outline-none focus:ring-2 focus:ring-retro-cyan",title:`Navigate to parent ${Z.substring(0,7)}`},_(Z.substring(0,7)),9,Fb))),128))])])):K("",!0),r.commit.branches?.length>0?(v(),y("div",Ub,[L[5]||(L[5]=d("span",{class:"text-retro-muted w-20 flex-shrink-0"},"Branches:",-1)),d("div",Gb,[(v(!0),y($e,null,Fe(r.commit.branches,Z=>(v(),y("span",{key:Z,class:"text-retro-green font-mono text-xs bg-retro-panel px-2 py-0.5 rounded"},_(Z),1))),128))])])):K("",!0),r.commit.tags?.length>0?(v(),y("div",Hb,[L[6]||(L[6]=d("span",{class:"text-retro-muted w-20 flex-shrink-0"},"Tags:",-1)),d("div",Kb,[(v(!0),y($e,null,Fe(r.commit.tags,Z=>(v(),y("span",{key:Z,class:"text-retro-yellow font-mono text-xs bg-retro-panel px-2 py-0.5 rounded"},_(Z),1))),128))])])):K("",!0)]),d("div",Jb,[L[7]||(L[7]=d("h4",{class:"text-retro-muted text-xs uppercase tracking-wide"}," Message ",-1)),d("div",ex,_(r.commit.message.split(`
|
|
6
|
+
`)[0]),1)]),r.commit.body?(v(),y("div",tx,[L[8]||(L[8]=d("h4",{class:"text-retro-muted text-xs uppercase tracking-wide"}," Body ",-1)),d("div",{class:"text-retro-text text-sm font-mono bg-retro-panel p-3 rounded commit-body-rendered",innerHTML:l.value},null,8,rx)])):K("",!0),r.stats?(v(),y("div",nx,[d("div",sx,[d("span",ix,_(c.value),1)]),r.stats.additions>0||r.stats.deletions>0?(v(),y("div",ox,[d("span",ax,"+"+_(r.stats.additions),1),d("div",lx,[d("div",{class:"bg-retro-green h-full transition-all",style:er({width:E.value.addPct+"%"})},null,4),d("div",{class:"bg-retro-red h-full transition-all",style:er({width:E.value.delPct+"%"})},null,4)]),d("span",cx,"-"+_(r.stats.deletions),1)])):K("",!0)])):K("",!0),r.files?(v(),y("div",ux,[d("div",hx,[d("h4",dx," Files Changed ("+_(r.files.length)+") ",1),d("div",fx,[d("button",{onClick:L[0]||(L[0]=Z=>i.value="flat"),class:Ze(["p-1 rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan",i.value==="flat"?"bg-retro-panel text-retro-cyan":"text-retro-muted hover:text-retro-text"]),"aria-label":"Flat file list",title:"Flat file list"},[te(m(Yp),{class:"w-4 h-4"})],2),d("button",{onClick:L[1]||(L[1]=Z=>i.value="tree"),class:Ze(["p-1 rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan",i.value==="tree"?"bg-retro-panel text-retro-cyan":"text-retro-muted hover:text-retro-text"]),"aria-label":"Tree file view",title:"Tree file view"},[te(m(Rh),{class:"w-4 h-4"})],2)])]),r.files.length===0?(v(),y("div",px," No files changed in this commit. ")):i.value==="flat"?(v(),y("ul",mx,[(v(!0),y($e,null,Fe(r.files,Z=>(v(),y("li",{key:Z.path,class:"flex items-center gap-2 text-sm py-1 px-2 hover:bg-retro-panel rounded group cursor-pointer",onClick:F=>Oe(Z)},[d("span",{class:Ze(["flex-shrink-0 w-5 h-5 flex items-center justify-center text-xs font-bold rounded",P(Z.status).colorClass]),title:P(Z.status).label},_(Z.status),11,Ox),te(m(Vs),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("span",vx,[Z.status==="R"&&Z.oldPath?(v(),y($e,{key:0},[d("span",bx,_(Z.oldPath),1),L[9]||(L[9]=d("span",{class:"text-retro-yellow mx-1"},"→",-1)),d("span",xx,_(Z.path),1)],64)):(v(),y($e,{key:1},[Ie(_(Z.path),1)],64))]),!Z.binary&&(Z.additions>0||Z.deletions>0)?(v(),y("span",yx,[Z.additions>0?(v(),y("span",kx,"+"+_(Z.additions),1)):K("",!0),Z.deletions>0?(v(),y("span",wx,"-"+_(Z.deletions),1)):K("",!0)])):Z.binary?(v(),y("span",Sx,"binary")):K("",!0)],8,gx))),128))])):(v(),y("div",$x,[d("div",{class:"flex items-center gap-2 mb-1"},[d("button",{onClick:b,class:"text-xs text-retro-muted hover:text-retro-text transition-colors"}," Expand all "),L[10]||(L[10]=d("span",{class:"text-retro-muted text-xs"},"|",-1)),d("button",{onClick:w,class:"text-xs text-retro-muted hover:text-retro-text transition-colors"}," Collapse all ")]),(v(!0),y($e,null,Fe(O.value,Z=>(v(),y("div",{key:Z.key,class:Ze(["flex items-center gap-1 py-0.5 px-1 hover:bg-retro-panel rounded text-sm cursor-pointer",{"select-none":Z.isDirectory}]),style:er({paddingLeft:Z.depth*16+4+"px"}),onClick:F=>Z.isDirectory?x(Z.fullPath):Z.file?Oe(Z.file):void 0},[Z.isDirectory?(v(),y($e,{key:0},[te(m(y1),{class:Ze(["w-3 h-3 text-retro-muted transition-transform flex-shrink-0",{"rotate-90":Z.expanded}])},null,8,["class"]),te(m(Rh),{class:"w-4 h-4 text-retro-yellow flex-shrink-0"}),d("span",Qx,_(Z.name),1)],64)):Z.file?(v(),y($e,{key:1},[d("span",{class:Ze(["flex-shrink-0 w-5 h-5 flex items-center justify-center text-xs font-bold rounded",P(Z.file.status).colorClass]),title:P(Z.file.status).label},_(Z.file.status),11,Px),te(m(Vs),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("span",Tx,[Z.file.status==="R"&&Z.file.oldPath?(v(),y($e,{key:0},[d("span",Mx,_(Z.file.oldPath.split("/").pop()),1),L[11]||(L[11]=d("span",{class:"text-retro-yellow mx-1"},"→",-1)),d("span",Ax,_(Z.name),1)],64)):(v(),y($e,{key:1},[Ie(_(Z.name),1)],64))]),!Z.file.binary&&(Z.file.additions>0||Z.file.deletions>0)?(v(),y("span",_x,[Z.file.additions>0?(v(),y("span",Rx,"+"+_(Z.file.additions),1)):K("",!0),Z.file.deletions>0?(v(),y("span",Bx,"-"+_(Z.file.deletions),1)):K("",!0)])):Z.file.binary?(v(),y("span",Zx,"binary")):K("",!0)],64)):K("",!0)],14,Cx))),128))]))])):r.loading?(v(),y("div",Ex,[...L[12]||(L[12]=[d("div",{class:"w-3 h-3 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"},null,-1),Ie(" Loading file changes... ",-1)])])):(v(),y("div",Dx," Failed to load file changes. "))])],544))}}),Xx=ei(Lx,[["__scopeId","data-v-29f450ea"]]),Ix={class:"flex-1 min-h-0 flex flex-col border-t border-retro-border bg-retro-dark","aria-label":"Uncommitted changes details"},Vx={class:"flex-shrink-0 flex items-center justify-between px-4 py-2 border-b border-retro-border bg-retro-panel"},zx={class:"flex items-center gap-2 min-w-0"},Nx={class:"text-retro-muted text-sm"},Wx={key:0,class:"w-3 h-3 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin",title:"Staging..."},jx={class:"flex-1 overflow-auto p-4 space-y-3"},qx={class:"space-y-2"},Yx=["disabled"],Fx={class:"space-y-1"},Ux={class:"flex items-center justify-between"},Gx={class:"text-retro-green text-xs uppercase tracking-wide font-semibold"},Hx={key:0,class:"text-retro-muted text-xs py-1"},Kx={key:1,class:"space-y-0.5"},Jx=["aria-label","onClick"],ey={class:"text-retro-text font-mono text-xs truncate"},ty={class:"space-y-1"},ry={class:"flex items-center justify-between"},ny={class:"text-retro-yellow text-xs uppercase tracking-wide font-semibold"},sy={key:0,class:"text-retro-muted text-xs py-1"},iy={key:1,class:"space-y-0.5"},oy=["aria-label","onClick"],ay={class:"text-retro-text font-mono text-xs truncate"},ly=ze({__name:"GitUncommittedDetail",props:{stagedFiles:{default:()=>[]},unstagedFiles:{default:()=>[]},isStaging:{type:Boolean,default:!1},isCommitting:{type:Boolean,default:!1}},emits:["close","stageFiles","unstageFiles","stageAll","unstageAll","commit"],setup(r,{emit:e}){const t=r,n=e,s=M(""),i=M(!1),o=ee(()=>s.value.trim().length>0&&t.stagedFiles.length>0&&!i.value&&!t.isCommitting);function a(O){return zs[O]||{label:O,colorClass:"text-retro-muted"}}function l(){n("close")}function c(O){n("stageFiles",[O.path])}function u(O){n("unstageFiles",[O.path])}function h(){n("stageAll")}function p(){n("unstageAll")}async function f(){o.value&&(i.value=!0,n("commit",s.value.trim()),s.value="",i.value=!1)}function g(O){(O.metaKey||O.ctrlKey)&&O.key==="Enter"&&(O.preventDefault(),f())}return(O,x)=>(v(),y("section",Ix,[d("div",Vx,[d("div",zx,[te(m(mo),{class:"w-4 h-4 text-retro-yellow"}),x[1]||(x[1]=d("span",{class:"text-retro-yellow font-semibold text-sm"},"Uncommitted Changes",-1)),d("span",Nx,"("+_(r.stagedFiles.length+r.unstagedFiles.length)+" files)",1),t.isStaging?(v(),y("div",Wx)):K("",!0)]),d("button",{onClick:l,class:"p-1 hover:bg-retro-dark rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan","aria-label":"Close uncommitted changes details"},[te(m(At),{class:"w-4 h-4 text-retro-muted hover:text-retro-text"})])]),d("div",jx,[d("div",qx,[Je(d("textarea",{"onUpdate:modelValue":x[0]||(x[0]=b=>nt(s)?s.value=b:null),placeholder:"Commit message...",rows:"3",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan resize-none font-mono",onKeydown:g},null,544),[[Lt,m(s)]]),d("button",{disabled:!m(o),class:Ze(["w-full px-3 py-1.5 text-sm font-semibold rounded transition-colors disabled:opacity-40 disabled:cursor-not-allowed",m(o)?"bg-retro-green text-retro-dark hover:bg-retro-green/90":"bg-retro-green/30 text-retro-dark"]),onClick:f},_(m(i)||t.isCommitting?"Committing...":`Commit (${r.stagedFiles.length} staged)`),11,Yx)]),d("div",Fx,[d("div",Ux,[d("h4",Gx," Staged Changes ("+_(r.stagedFiles.length)+") ",1),r.stagedFiles.length>0?(v(),y("button",{key:0,class:"text-[11px] text-retro-muted hover:text-retro-text transition-colors",onClick:p}," Unstage All ")):K("",!0)]),r.stagedFiles.length===0?(v(),y("div",Hx," No staged files. Stage files below to commit. ")):(v(),y("ul",Kx,[(v(!0),y($e,null,Fe(r.stagedFiles,b=>(v(),y("li",{key:"staged-"+b.path,class:"flex items-center gap-2 text-sm py-1 px-2 hover:bg-retro-panel rounded group"},[d("button",{class:"flex-shrink-0 w-5 h-5 flex items-center justify-center rounded hover:bg-retro-red/20 transition-colors opacity-60 group-hover:opacity-100",title:"Unstage file","aria-label":`Unstage ${b.path}`,onClick:w=>u(b)},[te(m(iv),{class:"w-3.5 h-3.5 text-retro-red"})],8,Jx),d("span",{class:Ze(["flex-shrink-0 w-4 text-center text-xs font-bold",a(b.status).colorClass])},_(b.status),3),te(m(Vs),{class:"w-3.5 h-3.5 text-retro-muted flex-shrink-0"}),d("span",ey,_(b.oldPath?`${b.oldPath} → ${b.path}`:b.path),1)]))),128))]))]),d("div",ty,[d("div",ry,[d("h4",ny," Unstaged Changes ("+_(r.unstagedFiles.length)+") ",1),r.unstagedFiles.length>0?(v(),y("button",{key:0,class:"text-[11px] text-retro-muted hover:text-retro-text transition-colors",onClick:h}," Stage All ")):K("",!0)]),r.unstagedFiles.length===0?(v(),y("div",sy," No unstaged changes. ")):(v(),y("ul",iy,[(v(!0),y($e,null,Fe(r.unstagedFiles,b=>(v(),y("li",{key:"unstaged-"+b.path,class:"flex items-center gap-2 text-sm py-1 px-2 hover:bg-retro-panel rounded group"},[d("button",{class:"flex-shrink-0 w-5 h-5 flex items-center justify-center rounded hover:bg-retro-green/20 transition-colors opacity-60 group-hover:opacity-100",title:"Stage file","aria-label":`Stage ${b.path}`,onClick:w=>c(b)},[te(m(ol),{class:"w-3.5 h-3.5 text-retro-green"})],8,oy),d("span",{class:Ze(["flex-shrink-0 w-4 text-center text-xs font-bold",a(b.status).colorClass])},_(b.status),3),te(m(Vs),{class:"w-3.5 h-3.5 text-retro-muted flex-shrink-0"}),d("span",ay,_(b.oldPath?`${b.oldPath} → ${b.path}`:b.path),1)]))),128))]))])])]))}}),cy=["aria-label"],uy={key:0,class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border truncate font-mono"},hy={key:0,class:"my-1 border-t border-retro-border",role:"separator"},dy=["aria-disabled","onClick","onMouseenter"],fy={key:1,class:"w-4 h-4 flex-shrink-0"},Nh=220,py=36,my=9,gy=29,dn=8,vo=ze({__name:"GitContextMenu",props:{items:{},x:{},y:{},title:{}},emits:["close","action"],setup(r,{emit:e}){const t=r,n=e,s=M(null),i=M(-1),o=ee(()=>t.items.map((f,g)=>({item:f,i:g})).filter(({item:f})=>!f.disabled).map(({i:f})=>f));let a=!1;function l(f){a&&s.value&&!s.value.contains(f.target)&&n("close")}Ot(()=>{requestAnimationFrame(()=>{a=!0}),document.addEventListener("mousedown",l),document.addEventListener("contextmenu",l),nr(()=>{s.value?.focus()})}),Qt(()=>{a=!1,document.removeEventListener("mousedown",l),document.removeEventListener("contextmenu",l)});function c(f){const g=o.value;if(g.length===0)return;if(i.value===-1){i.value=f===1?g[0]:g[g.length-1];return}const O=g.indexOf(i.value);if(O===-1){i.value=f===1?g[0]:g[g.length-1];return}const x=O+f;x>=0&&x<g.length&&(i.value=g[x])}function u(f){switch(f.key){case"Escape":f.preventDefault(),n("close");break;case"ArrowDown":f.preventDefault(),c(1);break;case"ArrowUp":f.preventDefault(),c(-1);break;case"Enter":{f.preventDefault();const g=t.items[i.value];g&&!g.disabled&&(n("action",g.key),n("close"));break}}}function h(f){f.disabled||(n("action",f.key),n("close"))}const p=ee(()=>{const f=t.title?gy:0,g=t.items.filter(Q=>Q.separator).length,O=t.items.length*py+g*my+dn,x=f+O;let b=t.x,w=t.y;return typeof window<"u"&&(b+Nh>window.innerWidth-dn&&(b=window.innerWidth-Nh-dn),b<dn&&(b=dn),w+x>window.innerHeight-dn&&(w=window.innerHeight-x-dn),w<dn&&(w=dn)),{left:`${b}px`,top:`${w}px`}});return(f,g)=>(v(),be(Sr,{to:"body"},[d("div",{ref_key:"menuRef",ref:s,class:"fixed z-50 bg-retro-panel border border-retro-border rounded shadow-lg py-1 min-w-[220px]",style:er(m(p)),role:"menu","aria-label":r.title??"Context menu",tabindex:"-1",onKeydown:u},[r.title?(v(),y("div",uy,_(r.title),1)):K("",!0),(v(!0),y($e,null,Fe(r.items,(O,x)=>(v(),y($e,{key:O.key},[O.separator?(v(),y("div",hy)):K("",!0),d("button",{class:Ze(["w-full flex items-center gap-2 px-3 py-2 text-sm transition-colors focus:outline-none",[O.disabled?"text-retro-muted/50 cursor-not-allowed":O.danger?["text-retro-red hover:bg-retro-red/10 focus:bg-retro-red/10",m(i)===x?"bg-retro-red/10":""]:["text-retro-text hover:bg-retro-cyan/10 focus:bg-retro-cyan/10",m(i)===x?"bg-retro-cyan/10":""]]]),role:"menuitem","aria-disabled":O.disabled||void 0,tabindex:-1,onClick:b=>h(O),onMouseenter:b=>i.value=O.disabled?m(i):x,onMouseleave:g[0]||(g[0]=b=>i.value=-1)},[O.icon?(v(),be(Xs(O.icon),{key:0,class:Ze(["w-4 h-4 flex-shrink-0",O.disabled?"opacity-50":O.danger?"":"text-retro-muted"])},null,8,["class"])):(v(),y("span",fy)),Ie(" "+_(O.label),1)],42,dy)],64))),128))],44,cy)]))}}),Oy=ze({__name:"GitBranchMenu",props:{branchName:{},isCurrentBranch:{type:Boolean},isLocal:{type:Boolean},x:{},y:{}},emits:["close","checkout","createBranch","deleteBranch","rename","merge","rebase","push","pull","fetch","copyName"],setup(r,{emit:e}){const t=r,n=e,s=ee(()=>[{key:"checkout",label:"Checkout",icon:ds,disabled:t.isCurrentBranch},{key:"rename",label:"Rename",icon:k1,separator:!0},{key:"deleteBranch",label:"Delete",icon:bn,danger:!0,disabled:t.isCurrentBranch},{key:"merge",label:"Merge into Current",icon:Np,separator:!0,disabled:t.isCurrentBranch},{key:"rebase",label:"Rebase Current Onto",icon:Lp,disabled:t.isCurrentBranch},{key:"push",label:"Push",icon:Xp,separator:!0},{key:"copyName",label:"Copy Branch Name",icon:Is,separator:!0}]),i=ee(()=>[{key:"checkout",label:"Checkout",icon:ds},{key:"deleteBranch",label:"Delete Remote Branch",icon:bn,separator:!0,danger:!0},{key:"fetch",label:"Fetch",icon:jp,separator:!0},{key:"pull",label:"Pull into Current",icon:X1},{key:"copyName",label:"Copy Branch Name",icon:Is,separator:!0}]),o=ee(()=>t.isLocal?s.value:i.value),a={checkout:()=>n("checkout"),createBranch:()=>n("createBranch"),deleteBranch:()=>n("deleteBranch"),rename:()=>n("rename"),merge:()=>n("merge"),rebase:()=>n("rebase"),push:()=>n("push"),pull:()=>n("pull"),fetch:()=>n("fetch"),copyName:()=>n("copyName")};function l(c){a[c]?.(),n("close")}return(c,u)=>{const h=vo;return v(),be(h,{items:m(o),x:r.x,y:r.y,title:r.branchName,onAction:l,onClose:u[0]||(u[0]=p=>n("close"))},null,8,["items","x","y","title"])}}}),vy=ze({__name:"GitCommitMenu",props:{commit:{},x:{},y:{}},emits:["close","addTag","createBranch","checkout","cherryPick","revert","mergeInto","reset","copyHash","copySubject"],setup(r,{emit:e}){const t=e,n=ee(()=>[{key:"addTag",label:"Add Tag",icon:Pu},{key:"createBranch",label:"Create Branch",icon:ol},{key:"checkout",label:"Checkout (detached HEAD)",icon:ds,separator:!0},{key:"cherryPick",label:"Cherry Pick",icon:G1},{key:"revert",label:"Revert",icon:Ip},{key:"mergeInto",label:"Merge into Current",icon:Np,separator:!0},{key:"reset",label:"Reset Current Branch to Here",icon:Lp,danger:!0},{key:"copyHash",label:"Copy Commit Hash",icon:Is,separator:!0},{key:"copySubject",label:"Copy Commit Subject",icon:Is}]),s={addTag:()=>t("addTag"),createBranch:()=>t("createBranch"),checkout:()=>t("checkout"),cherryPick:()=>t("cherryPick"),revert:()=>t("revert"),mergeInto:()=>t("mergeInto"),reset:()=>t("reset"),copyHash:()=>t("copyHash"),copySubject:()=>t("copySubject")};function i(o){s[o]?.(),t("close")}return(o,a)=>{const l=vo;return v(),be(l,{items:m(n),x:r.x,y:r.y,title:r.commit.shortHash,onAction:i,onClose:a[0]||(a[0]=c=>t("close"))},null,8,["items","x","y","title"])}}}),by=ze({__name:"GitTagMenu",props:{tagName:{},x:{},y:{}},emits:["close","viewDetails","deleteTag","pushTag","copyName"],setup(r,{emit:e}){const t=e,n=[{key:"viewDetails",label:"View Details",icon:Pu},{key:"deleteTag",label:"Delete Tag",icon:bn,separator:!0,danger:!0},{key:"pushTag",label:"Push Tag",icon:Xp},{key:"copyName",label:"Copy Tag Name",icon:Is,separator:!0}],s={viewDetails:()=>t("viewDetails"),deleteTag:()=>t("deleteTag"),pushTag:()=>t("pushTag"),copyName:()=>t("copyName")};function i(o){s[o]?.()}return(o,a)=>{const l=vo;return v(),be(l,{items:n,x:r.x,y:r.y,title:r.tagName,onClose:a[0]||(a[0]=c=>t("close")),onAction:i},null,8,["x","y","title"])}}}),xy=ze({__name:"GitStashMenu",props:{stashIndex:{},stashMessage:{},x:{},y:{}},emits:["close","apply","pop","drop","createBranch","copyName","copyHash"],setup(r,{emit:e}){const t=e,n=[{key:"apply",label:"Apply Stash",icon:L1},{key:"pop",label:"Pop Stash",icon:Ip},{key:"createBranch",label:"Create Branch from Stash",icon:w1,separator:!0},{key:"drop",label:"Drop Stash",icon:bn,separator:!0,danger:!0},{key:"copyName",label:"Copy Stash Reference",icon:Is,separator:!0},{key:"copyHash",label:"Copy Stash Hash",icon:rv}],s={apply:()=>t("apply"),pop:()=>t("pop"),drop:()=>t("drop"),createBranch:()=>t("createBranch"),copyName:()=>t("copyName"),copyHash:()=>t("copyHash")};function i(o){s[o]?.()}return(o,a)=>{const l=vo;return v(),be(l,{items:n,x:r.x,y:r.y,title:r.stashMessage,onClose:a[0]||(a[0]=c=>t("close")),onAction:i},null,8,["x","y","title"])}}}),yy=ze({__name:"GitUncommittedMenu",props:{x:{},y:{}},emits:["close","stash","reset","clean"],setup(r,{emit:e}){const t=e,n=[{key:"stash",label:"Stash Uncommitted Changes",icon:D1},{key:"reset",label:"Reset Working Directory",icon:ds,separator:!0,danger:!0},{key:"clean",label:"Clean Untracked Files",icon:bn,danger:!0}],s={stash:()=>t("stash"),reset:()=>t("reset"),clean:()=>t("clean")};function i(o){s[o]?.()}return(o,a)=>{const l=vo;return v(),be(l,{items:n,x:r.x,y:r.y,title:"Uncommitted Changes",onClose:a[0]||(a[0]=c=>t("close")),onAction:i},null,8,["x","y"])}}}),ky={class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},wy={class:"flex items-center justify-between px-4 py-3 border-b border-retro-border"},Sy={class:"text-sm font-mono text-retro-text"},$y={class:"p-4"},Cy={key:0,class:"mb-3 p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},Qy={class:"flex justify-end gap-2 px-4 py-3 border-t border-retro-border"},Py=["disabled"],Ty=["disabled"],Ut=ze({__name:"GitDialog",props:{title:{},visible:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null},confirmLabel:{default:"Confirm"},confirmDanger:{type:Boolean,default:!1},cancelLabel:{default:"Cancel"}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e;function s(i){i.key==="Escape"&&n("close"),i.key==="Enter"&&!t.loading&&(i.preventDefault(),n("confirm"))}return We(()=>t.visible,i=>{i?document.addEventListener("keydown",s):document.removeEventListener("keydown",s)}),Qt(()=>{document.removeEventListener("keydown",s)}),(i,o)=>(v(),be(Sr,{to:"body"},[te(vn,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ht(()=>[r.visible?(v(),y("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",role:"dialog","aria-modal":"true",onClick:o[3]||(o[3]=vr(a=>n("close"),["self"]))},[d("div",ky,[d("div",wy,[d("h3",Sy,_(r.title),1),d("button",{type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Close",onClick:o[0]||(o[0]=a=>n("close"))},[te(m(At),{class:"h-4 w-4"})])]),d("div",$y,[r.error?(v(),y("div",Cy,_(r.error),1)):K("",!0),Rp(i.$slots,"default")]),d("div",Qy,[d("button",{type:"button",class:"px-3 py-1.5 text-xs font-mono text-retro-muted hover:text-retro-text bg-retro-panel hover:bg-retro-border rounded transition-colors",disabled:r.loading,onClick:o[1]||(o[1]=a=>n("close"))},_(r.cancelLabel),9,Py),d("button",{type:"button",class:Ze(["px-3 py-1.5 text-xs font-mono rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",[r.confirmDanger?"text-retro-red bg-retro-red/10 border border-retro-red/30 hover:bg-retro-red/20":"text-retro-black bg-retro-cyan hover:bg-retro-cyan/80"]]),disabled:r.loading,onClick:o[2]||(o[2]=a=>n("confirm"))},_(r.loading?"Loading...":r.confirmLabel),11,Ty)])])])):K("",!0)]),_:3})]))}}),ll=xu("gitGraph",()=>{const r=M([]),e=M([]),t=M([]),n=M(new Set),s=M([]),i=M([]),o=M(0),a=M(!1),l=M(null),c=M(null),u=M(null),h=M(!1),p=M(null),f=M(!1),g=M(0),O=M(""),x=M([]),b=M(null),w=M(!1),Q=M(!1),P=M(!1),E=M(!1),j=8e3,z=M(null);let ae=null;function ce(V){z.value=V,ae&&clearTimeout(ae),ae=setTimeout(()=>{z.value=null},j)}function Oe(){z.value=null,ae&&(clearTimeout(ae),ae=null)}async function W(V,ne,Pe,$t){if(!b.value)return{success:!1,error:"No working directory set"};try{const Nr=await $fetch(V,{method:$t?.method??"POST",body:{workingDirectory:b.value,...ne}});return($t?.reloadGraph??!0)&&await sr(b.value),{success:!0,data:Nr}}catch(Nr){const Wr=Zo(Nr,Pe);return ce(Wr),{success:!1,error:Wr}}}const L=M(null),Z=M(!1),F=M(!1),q=M(null),N=M([]),X=M([]),I=M(null),xe=M(null),J=M(null),fe=M("inline"),S=M("list"),k=M("rounded"),A=M(!1),R=M({date:!0,author:!0,commit:!0}),H=M(0),oe=M(0),ye=M(null),Xe=M(null),Re=M(null),Ge=M(null),Ue=M(null),pe=M(null),Qe=M(null),le=M(null),he=M(null),Y=M(null),Me=M(null),Ve=M(!1),Ne=new Map,Rt=10,qt=ee(()=>{if(!O.value&&x.value.length===0)return r.value;let V=r.value;if(O.value){const ne=O.value.toLowerCase(),Pe=`${ne}:${r.value.length}`;if(Ne.has(Pe))V=Ne.get(Pe);else{if(V=zh(V,ne),Ne.size>=Rt){const $t=Ne.keys().next().value;$t&&Ne.delete($t)}Ne.set(Pe,V)}}if(x.value.length>0){const ne=new Set(x.value);V=sb(V,ne)}return V}),an=ee(()=>e.value.find(V=>V.isHead)||null);async function sr(V){b.value=V,h.value=!0,p.value=null;try{const[ne,Pe,$t,Nr,Wr]=await Promise.all([$fetch("/api/git/log",{query:{workingDirectory:V}}),$fetch("/api/git/status",{query:{workingDirectory:V}}),$fetch("/api/git/stash",{query:{workingDirectory:V}}).then(Qn=>Qn.stashes).catch(()=>[]),$fetch("/api/git/remotes",{query:{workingDirectory:V}}).then(Qn=>Qn.remotes).catch(()=>[]),$fetch("/api/git/state",{query:{workingDirectory:V}}).then(Qn=>Qn.state).catch(()=>null)]);r.value=ne.commits,e.value=ne.branches,t.value=ne.tags,n.value=new Set(ne.localBranches??[]),f.value=ne.hasMore,g.value=ne.totalCount,s.value=Pe.stagedFiles??[],i.value=Pe.unstagedFiles??[],o.value=(Pe.stagedCount??0)+(Pe.unstagedCount??0),N.value=$t,X.value=Nr,q.value=Wr,L.value=Date.now(),await Ae()}catch(ne){const Pe=ne instanceof Error?ne.message:"Failed to load git graph";p.value=Pe,r.value=[],e.value=[],t.value=[],s.value=[],i.value=[],o.value=0,N.value=[],X.value=[]}finally{h.value=!1}}async function Dr(){if(b.value)try{const V=await $fetch("/api/git/status",{query:{workingDirectory:b.value}});s.value=V.stagedFiles??[],i.value=V.unstagedFiles??[],o.value=(V.stagedCount??0)+(V.unstagedCount??0)}catch(V){console.error("Failed to refresh uncommitted changes:",V)}}const Pr=M(!1);async function jn(){if(!(!b.value||!f.value||h.value||Pr.value)){Pr.value=!0;try{const V=await $fetch("/api/git/log",{query:{workingDirectory:b.value,offset:r.value.length}});r.value=[...r.value,...V.commits],f.value=V.hasMore}catch(V){console.error("Failed to load more commits:",V)}finally{Pr.value=!1}}}async function ln(V){if(l.value=V,c.value=null,u.value=null,a.value=!1,w.value=!0,!b.value){w.value=!1;return}try{const ne=await $fetch("/api/git/show",{query:{workingDirectory:b.value,hash:V.hash}});c.value=ne.files,u.value=ne.stats}catch(ne){console.error("Failed to load commit details:",ne),c.value=[],u.value={additions:0,deletions:0,filesChanged:0},ce("Failed to load commit details")}finally{w.value=!1}}function cn(){l.value=null,c.value=null,u.value=null,a.value=!1}function $n(){l.value=null,u.value=null,c.value=null,a.value=!0}function qn(V){O.value=V,H.value=0,Lr()}const xt=ee(()=>O.value?zh(r.value,O.value).map(V=>V.hash):[]);function Lr(){oe.value=xt.value.length}function G(){xt.value.length!==0&&(H.value=(H.value+1)%xt.value.length,Lr(),se())}function de(){xt.value.length!==0&&(H.value=H.value<=0?xt.value.length-1:H.value-1,Lr(),se())}function se(){const V=xt.value[H.value];if(V){const ne=r.value.find(Pe=>Pe.hash===V);ne&&ln(ne)}}function ve(V){const ne=x.value.indexOf(V);ne===-1?x.value.push(V):x.value.splice(ne,1)}function Be(){O.value="",x.value=[]}async function qe(V){if(!b.value)return{success:!1,error:"No working directory set"};E.value=!0;try{const ne=await $fetch("/api/git/checkout",{method:"POST",body:{workingDirectory:b.value,branchName:V}});return ne.success&&await sr(b.value),{success:ne.success,error:ne.error}}catch(ne){const Pe=ne instanceof Error?ne.message:"Failed to checkout branch";return ce(Pe),{success:!1,error:Pe}}finally{E.value=!1}}async function He(V,ne){if(!b.value)return{success:!1,error:"No working directory set"};try{const Pe=await $fetch("/api/git/checkout",{method:"POST",body:{workingDirectory:b.value,branchName:V,createBranch:!0,fromCommit:ne}});return Pe.success&&await sr(b.value),{success:Pe.success,error:Pe.error}}catch(Pe){return{success:!1,error:Pe instanceof Error?Pe.message:"Failed to create branch"}}}async function lt(V,ne=!1){return W("/api/git/branch",{branchName:V,force:ne},"Failed to delete branch",{method:"DELETE"})}async function oi(V){return W("/api/git/branch",{branchName:V,remote:!0},"Failed to delete remote branch",{method:"DELETE"})}async function ai(V){if(!b.value)return{success:!1,error:"No working directory set"};Q.value=!0;try{return await $fetch("/api/git/stage",{method:"POST",body:{workingDirectory:b.value,files:V}}),await Dr(),{success:!0}}catch(ne){const Pe=ne instanceof Error?ne.message:"Failed to stage files";return ce(Pe),{success:!1,error:Pe}}finally{Q.value=!1}}async function Xr(V){if(!b.value)return{success:!1,error:"No working directory set"};Q.value=!0;try{return await $fetch("/api/git/unstage",{method:"POST",body:{workingDirectory:b.value,files:V}}),await Dr(),{success:!0}}catch(ne){const Pe=ne instanceof Error?ne.message:"Failed to unstage files";return ce(Pe),{success:!1,error:Pe}}finally{Q.value=!1}}async function li(V){if(!b.value)return{success:!1,error:"No working directory set"};P.value=!0;try{return await $fetch("/api/git/commit",{method:"POST",body:{workingDirectory:b.value,message:V}}),await sr(b.value),{success:!0}}catch(ne){const Pe=ne instanceof Error?ne.message:"Failed to commit changes";return ce(Pe),{success:!1,error:Pe}}finally{P.value=!1}}async function ci(V,ne){return W("/api/git/branch-rename",{oldName:V,newName:ne},"Failed to rename branch")}async function ui(V,ne){return W("/api/git/merge",{branch:V,...ne},"Failed to merge branch")}async function hi(V){return W("/api/git/rebase",{onto:V},"Failed to rebase branch")}async function di(V,ne,Pe,$t){return W("/api/git/push",{branch:V,remote:ne,force:Pe,forceWithLease:$t},"Failed to push branch")}async function fi(V,ne,Pe,$t){return W("/api/git/pull",{branch:V,remote:ne,noFastForward:Pe,squash:$t},"Failed to pull branch")}async function pi(V,ne,Pe){return W("/api/git/fetch",{branch:V,remote:ne,...Pe},"Failed to fetch")}async function mi(V,ne,Pe){return W("/api/git/cherry-pick",{hash:V,recordOrigin:ne,noCommit:Pe},"Failed to cherry-pick commit")}async function gi(V){return W("/api/git/revert",{hash:V},"Failed to revert commit")}async function Oi(V,ne){return W("/api/git/reset",{hash:V,mode:ne},"Failed to reset to commit")}async function vi(V){if(!b.value)return{success:!1,error:"No working directory set"};try{return await $fetch("/api/git/checkout",{method:"POST",body:{workingDirectory:b.value,branchName:V}}),await sr(b.value),{success:!0}}catch(ne){const Pe=ne?.data?.message||ne?.statusMessage||ne?.message||"Failed to checkout commit";return ce(Pe),{success:!1,error:Pe}}}async function bi(V){try{const ne=V.message.split(`
|
|
7
|
+
`)[0];return await or(ne),{success:!0}}catch(ne){const Pe=ne?.message||"Failed to copy commit subject";return ce(Pe),{success:!1,error:Pe}}}async function It(V,ne,Pe,$t,Nr){return W("/api/git/tag",{name:V,hash:ne,annotated:Pe,message:$t,pushToRemote:Nr},"Failed to create tag")}async function Vt(V,ne){return W("/api/git/tag",{name:V,deleteFromRemote:ne},"Failed to delete tag",{method:"DELETE"})}async function Yn(V,ne){return W("/api/git/tag-push",{name:V,remote:ne},"Failed to push tag")}async function Cn(V){if(!b.value)return{success:!1,error:"No working directory set"};try{return{success:!0,data:await $fetch(`/api/git/tag/${encodeURIComponent(V)}`,{query:{workingDirectory:b.value}})}}catch(ne){const Pe=Zo(ne,"Failed to get tag detail");return ce(Pe),{success:!1,error:Pe}}}async function un(V){try{return await or(V),{success:!0}}catch(ne){const Pe=ne?.message||"Failed to copy tag name";return ce(Pe),{success:!1,error:Pe}}}async function Ir(){if(!b.value)return{success:!1,error:"No working directory set"};try{const V=await $fetch("/api/git/stash",{query:{workingDirectory:b.value}});return N.value=V.stashes,{success:!0}}catch(V){const ne=Zo(V,"Failed to load stashes");return ce(ne),{success:!1,error:ne}}}async function vs(V,ne){return W("/api/git/stash-apply",{index:V,reinstateIndex:ne},"Failed to apply stash")}async function bs(V,ne){return W("/api/git/stash-pop",{index:V,reinstateIndex:ne},"Failed to pop stash")}async function xs(V){return W("/api/git/stash-drop",{index:V},"Failed to drop stash")}async function Vr(V,ne){return W("/api/git/stash-branch",{index:V,branchName:ne},"Failed to create branch from stash")}async function ir(V,ne){return W("/api/git/stash",{message:V,includeUntracked:ne},"Failed to stash changes")}async function St(){if(!b.value)return{success:!1,error:"No working directory set"};try{const V=await $fetch("/api/git/remotes",{query:{workingDirectory:b.value}});return X.value=V.remotes,{success:!0}}catch(V){const ne=Zo(V,"Failed to load remotes");return ce(ne),{success:!1,error:ne}}}async function ys(V,ne){return W("/api/git/remote",{name:V,url:ne},"Failed to add remote")}async function Fn(V,ne){return W("/api/git/remote",{name:V,newUrl:ne},"Failed to edit remote",{method:"PUT"})}async function xi(V){return W("/api/git/remote",{name:V},"Failed to delete remote",{method:"DELETE"})}async function Un(V,ne){return W("/api/git/fetch",{all:!0,prune:V,pruneTags:ne},"Failed to fetch all")}function zr(){fe.value=fe.value==="inline"?"bottom":"inline"}function Tr(){S.value=S.value==="list"?"tree":"list"}function ks(V){k.value=V}function Gn(){A.value=!A.value}function yi(V){R.value={...R.value,[V]:!R.value[V]}}async function ki(V){if(ye.value=V,Xe.value=null,V&&b.value)try{const ne=await $fetch("/api/git/merge-base",{params:{workingDirectory:b.value,branch:V}});Xe.value=ne.mergeBase}catch{Xe.value=null}}async function Hn(V,ne){if(Re.value=V,Ge.value=null,Ue.value=ne??null,V&&b.value)try{const Pe=await $fetch("/api/git/merge-base",{params:{workingDirectory:b.value,branch:V,baseBranch:ne??void 0}});Ge.value=Pe.mergeBase}catch{Ge.value=null}}async function wi(V,ne){if(pe.value=V,Qe.value=null,le.value=ne??null,V&&b.value)try{const Pe=await $fetch("/api/git/merge-base",{params:{workingDirectory:b.value,branch:V,baseBranch:ne??void 0}});Qe.value=Pe.mergeBase}catch{Qe.value=null}}async function hn(V,ne,Pe){try{const $t=await $fetch("/api/git/merge-base",{params:{workingDirectory:b.value,branch:V,baseBranch:ne??void 0}});Pe.value=$t.mergeBase}catch{Pe.value=null}}async function Ae(){if(!b.value)return;const V=[];ye.value&&V.push(hn(ye.value,void 0,Xe)),Re.value&&V.push(hn(Re.value,Ue.value,Ge)),pe.value&&V.push(hn(pe.value,le.value,Qe)),V.length>0&&await Promise.all(V)}function U(V){const ne=r.value.find(Pe=>Pe.hash===V||Pe.shortHash===V);ne&&ln(ne)}async function yt(V){return W("/api/git/reset",{hash:"HEAD",mode:V},"Failed to reset working directory")}async function C(){return W("/api/git/clean",{},"Failed to clean untracked files")}function B(V){xe.value=V}function T(){xe.value=null}function D(V){J.value=V}function ie(){J.value=null}const me=M(null),ue=M(null),ke=M(!1),Ke=ee(()=>!!I.value&&!!l.value);function it(V){I.value=V,V&&l.value&&Ee()}function Bt(){I.value=null,me.value=null,ue.value=null,ke.value=!1}async function Ee(){if(!(!b.value||!l.value||!I.value)){ke.value=!0;try{const V=I.value.hash,ne=l.value.hash,Pe=await $fetch("/api/git/diff",{query:{workingDirectory:b.value,from:V,to:ne}});me.value=Pe.files,ue.value=Pe.stats}catch(V){console.error("Failed to load comparison:",V),ce("Failed to load commit comparison"),me.value=null,ue.value=null}finally{ke.value=!1}}}async function or(V){navigator?.clipboard&&await navigator.clipboard.writeText(V)}async function ws(V,ne){he.value=ne,Y.value=V,Me.value=null,Ve.value=!0,await i1()}function Mh(){he.value=null,Y.value=null,Me.value=null,Ve.value=!1}async function i1(){if(!b.value||!Y.value||!he.value){Ve.value=!1;return}Ve.value=!0;try{const V=await $fetch("/api/git/file-diff",{query:{workingDirectory:b.value,commitHash:Y.value,filePath:he.value.path}});Me.value=V}catch(V){console.error("Failed to load file diff:",V),ce("Failed to load file diff"),Me.value=null}finally{Ve.value=!1}}function o1(){r.value=[],e.value=[],t.value=[],n.value=new Set,s.value=[],i.value=[],o.value=0,a.value=!1,l.value=null,c.value=null,u.value=null,h.value=!1,p.value=null,f.value=!1,g.value=0,O.value="",x.value=[],b.value=null,L.value=null,Z.value=!1,F.value=!1,q.value=null,Pr.value=!1,w.value=!1,Q.value=!1,P.value=!1,E.value=!1,N.value=[],X.value=[],I.value=null,me.value=null,ue.value=null,ke.value=!1,xe.value=null,J.value=null,fe.value="inline",S.value="list",k.value="rounded",A.value=!1,R.value={date:!0,author:!0,commit:!0},H.value=0,oe.value=0,ye.value=null,Re.value=null,Ge.value=null,Ue.value=null,pe.value=null,Qe.value=null,le.value=null,he.value=null,Y.value=null,Me.value=null,Ve.value=!1,Oe(),Ne.clear()}async function a1(){if(!b.value||F.value||h.value)return!1;F.value=!0;try{const V=(await $fetch("/api/git/state",{query:{workingDirectory:b.value}})).state,ne=q.value;if(q.value=V,L.value=Date.now(),!ne)return!1;const Pe=ne.headCommit!==V.headCommit||ne.branchListHash!==V.branchListHash,$t=ne.workingTreeHash!==V.workingTreeHash,Nr=ne.stashListHash!==V.stashListHash;if(Pe){const[Pn,_o,u1]=await Promise.all([$fetch("/api/git/log",{query:{workingDirectory:b.value}}),$fetch("/api/git/status",{query:{workingDirectory:b.value}}),$fetch("/api/git/stash",{query:{workingDirectory:b.value}}).then(h1=>h1.stashes).catch(()=>[])]);return r.value=Pn.commits,e.value=Pn.branches,t.value=Pn.tags,n.value=new Set(Pn.localBranches??[]),f.value=Pn.hasMore,g.value=Pn.totalCount,s.value=_o.stagedFiles??[],i.value=_o.unstagedFiles??[],o.value=(_o.stagedCount??0)+(_o.unstagedCount??0),N.value=u1,await Ae(),!0}if(!$t&&!Nr)return!1;const[Wr,Qn]=await Promise.all([$t?$fetch("/api/git/status",{query:{workingDirectory:b.value}}):Promise.resolve(null),Nr?$fetch("/api/git/stash",{query:{workingDirectory:b.value}}).then(Pn=>Pn.stashes).catch(()=>[]):Promise.resolve(null)]);return Wr&&(s.value=Wr.stagedFiles??[],i.value=Wr.unstagedFiles??[],o.value=(Wr.stagedCount??0)+(Wr.unstagedCount??0)),Qn&&(N.value=Qn),!0}catch(V){return console.error("Failed to refresh git graph:",V),!1}finally{F.value=!1}}function l1(){Z.value=!0}function c1(){Z.value=!1}return{commits:_e(r),branches:_e(e),tags:_e(t),localBranchNames:_e(n),stagedFiles:_e(s),unstagedFiles:_e(i),uncommittedChangesCount:_e(o),isUncommittedChangesSelected:_e(a),selectedCommit:_e(l),selectedCommitFiles:_e(c),selectedCommitStats:_e(u),loading:_e(h),loadingMore:_e(Pr),error:_e(p),hasMore:_e(f),totalCount:_e(g),searchQuery:_e(O),filteredBranches:_e(x),workingDirectory:_e(b),stashes:_e(N),remotes:_e(X),comparisonCommit:_e(I),comparisonFiles:_e(me),comparisonStats:_e(ue),comparisonLoading:_e(ke),isComparing:Ke,activeDialog:_e(xe),activeContextMenu:_e(J),detailViewPosition:_e(fe),fileViewMode:_e(S),graphStyle:_e(k),muteNonAncestral:_e(A),columnVisibility:_e(R),searchResultIndex:_e(H),searchResultCount:_e(oe),selectedFeatureId:_e(ye),featureMergeBase:_e(Xe),conversationBranch:_e(Re),conversationMergeBase:_e(Ge),conversationBaseBranch:_e(Ue),previewBranch:_e(pe),previewMergeBase:_e(Qe),previewBaseBranch:_e(le),diffViewerFile:_e(he),diffViewerCommitHash:_e(Y),diffViewerContent:_e(Me),diffViewerLoading:_e(Ve),lastRefreshTime:_e(L),isPollingActive:_e(Z),isRefreshing:_e(F),isLoadingDetails:_e(w),isStaging:_e(Q),isCommitting:_e(P),isCheckingOut:_e(E),operationError:_e(z),filteredCommits:qt,currentBranch:an,searchResultHashes:xt,loadGitGraph:sr,loadMoreCommits:jn,refreshUncommittedChanges:Dr,selectCommit:ln,selectUncommittedChanges:$n,clearSelection:cn,setSearchQuery:qn,toggleBranchFilter:ve,clearFilters:Be,nextSearchResult:G,prevSearchResult:de,checkoutBranch:qe,createBranch:He,deleteLocalBranch:lt,deleteRemoteBranch:oi,stageFiles:ai,unstageFiles:Xr,commitChanges:li,reset:o1,clearOperationError:Oe,renameBranch:ci,mergeBranch:ui,rebaseBranch:hi,pushBranch:di,pullBranch:fi,fetchBranch:pi,cherryPickCommit:mi,revertCommit:gi,resetToCommit:Oi,checkoutCommit:vi,copyCommitSubject:bi,createTag:It,deleteTag:Vt,pushTag:Yn,getTagDetail:Cn,copyTagName:un,loadStashes:Ir,applyStash:vs,popStash:bs,dropStash:xs,stashBranch:Vr,stashChanges:ir,loadRemotes:St,addRemote:ys,editRemote:Fn,deleteRemote:xi,fetchAll:Un,setActiveDialog:B,clearActiveDialog:T,setActiveContextMenu:D,clearActiveContextMenu:ie,selectComparisonCommit:it,clearComparison:Bt,loadComparisonData:Ee,copyToClipboard:or,toggleDetailViewPosition:zr,toggleFileViewMode:Tr,setGraphStyle:ks,toggleMuteNonAncestral:Gn,toggleColumnVisibility:yi,navigateToCommit:U,resetWorking:yt,cleanUntracked:C,setSelectedFeatureId:ki,setConversationBranch:Hn,setPreviewBranch:wi,openFileDiff:ws,closeFileDiff:Mh,checkAndRefresh:a1,startPolling:l1,stopPolling:c1}});async function Wh(){if(typeof window>"u")return{conversations:[],archivedConversations:[],discardedConversations:0,discardedArchives:0};try{const r=await $fetch("/api/conversations");if(!r||!Array.isArray(r.conversations))return console.warn("[conversationStorage] Invalid data structure from server"),{conversations:[],archivedConversations:[],discardedConversations:0,discardedArchives:0};r.version!==Sa&&console.warn(`[conversationStorage] Storage version mismatch: ${r.version} vs ${Sa}`);const e=r.conversations.map(l=>{if(!l||typeof l!="object")return l;const c=l;return"claudeSessionId"in c&&!("providerSessionId"in c)?{...c,providerSessionId:c.claudeSessionId}:l}),n=(Array.isArray(r.archivedConversations)?r.archivedConversations:[]).map(l=>{if(!l||typeof l!="object")return l;const c=l;return"claudeSessionId"in c&&!("providerSessionId"in c)?{...c,providerSessionId:c.claudeSessionId}:l}),s=e.filter(M1),i=n.filter(A1),o=e.length-s.length,a=n.length-i.length;return o>0&&console.warn(`[conversationStorage] Discarded ${o} corrupted active conversation(s)`),a>0&&console.warn(`[conversationStorage] Discarded ${a} corrupted archive conversation(s)`),{conversations:s,archivedConversations:i,discardedConversations:o,discardedArchives:a}}catch(r){return console.error("[conversationStorage] Failed to load conversations:",r),{conversations:[],archivedConversations:[],discardedConversations:0,discardedArchives:0}}}async function My(r,e=[]){if(typeof window>"u")return!1;try{return await $fetch("/api/conversations",{method:"POST",body:{version:Sa,conversations:r,archivedConversations:e}}),!0}catch(t){return console.error("Failed to save conversations:",t),!1}}async function jh(r){if(typeof window>"u")return!1;try{return await $fetch("/api/conversations/update",{method:"POST",body:{version:Sa,conversation:r}}),!0}catch(e){return console.error("Failed to save conversation:",e),!1}}function Ay(r){return r?r.map(e=>{switch(e.type){case"text":return e.text;case"tool_use":return`[${e.name}] ${e.inputSummary}`;case"tool_result":return e.isError?`Error: ${e.content.slice(0,100)}`:"";case"thinking":case"result_summary":case"session_init":return"";default:return""}}).filter(Boolean).join(`
|
|
8
|
+
`):""}const gr=xu("chat",()=>{const r=M(!1),e=M(_1),t=M("ask"),n=M(""),s=M([]),i=M([]),o=M(null),a=M("active"),l=M(new Set),c=new Map,u=M(!1),h=M(0),p=new Map,f=1200,g=M(null),O=M(null);let x=null;function b(C){return C?c.get(C)??null:null}function w(C){let B=c.get(C);return B||(B={session:null,pendingPermission:null,pendingPlanApproval:null,lastError:null,debugEvents:[]},c.set(C,B)),B}const Q=ee(()=>s.value.find(C=>C.id===o.value)||null),P=ee(()=>Q.value?.messages??[]),E=ee(()=>(h.value,b(o.value)?.session??null)),j=ee(()=>(h.value,b(o.value)?.pendingPermission??null)),z=ee(()=>(h.value,b(o.value)?.pendingPlanApproval??null)),ae=ee(()=>(h.value,b(o.value)?.lastError??null)),ce=ee(()=>(h.value,b(o.value)?.debugEvents??[])),Oe=ee(()=>E.value?.status==="streaming"),W=ee(()=>Q.value?.providerSessionId??""),L=ee(()=>P.value.length>0),Z=ee(()=>P.value[P.value.length-1]||null);function F(C){return l.value.has(C)}const q=ee(()=>o.value?l.value.has(o.value):!1),N=ee(()=>s.value.length>0),X=ee(()=>i.value.length>0),I=ee(()=>s.value.length),xe=ee(()=>I.value>=Zh),J=ee(()=>s.value),fe=ee(()=>i.value),S=ee(()=>g.value&&s.value.find(C=>C.id===g.value)||null);function k(C){return g.value===C}function A(C){a.value=C}async function R(C){if(!(!C?.previewBranch||!C.worktreePath))try{const B=await $fetch("/api/chat/preview-sync",{method:"POST",body:{previewBranch:C.previewBranch,worktreePath:C.worktreePath}});if(!B.success)throw new Error(B.error||"Unknown preview sync failure")}catch(B){console.warn("[chat] Failed to sync preview branch after worktree update",{conversationId:C.id,previewBranch:C.previewBranch,worktreePath:C.worktreePath,error:B instanceof Error?B.message:String(B)})}}async function H(C){if(F(C))return{success:!1,error:"Cannot archive while this conversation is streaming"};if(s.value.findIndex(T=>T.id===C)===-1)return{success:!1,error:"Conversation not found"};try{const T=await $fetch(`/api/conversations/${C}/archive`,{method:"POST"});if(T.success&&T.archived){const D=p.get(C);return D&&(clearTimeout(D),p.delete(C)),c.delete(C),s.value=Array.isArray(T.conversations)?T.conversations:s.value.filter(ie=>ie.id!==C),i.value=Array.isArray(T.archivedConversations)?T.archivedConversations:[T.archived,...i.value],un(),g.value===C&&(g.value=null),o.value===C&&(o.value=s.value[0]?.id??null),typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{activeConversationId:o.value}}).catch(ie=>{console.error("Failed to save active conversation:",ie)}),{success:!0}}return{success:!1,error:"Failed to archive conversation"}}catch(T){return{success:!1,error:T instanceof Error?T.message:"Failed to archive conversation"}}}async function oe(C,B){if(hn().atLimit)return{success:!1,error:`Cannot restore. Active conversations reached ${Eh}.`};if(!i.value.some(D=>D.id===C))return{success:!1,error:"Archived conversation not found"};try{const D=await $fetch(`/api/conversations/archives/${C}/restore`,{method:"POST",body:{baseBranch:B}});return D.success&&D.conversation?(s.value=Array.isArray(D.conversations)?D.conversations:[D.conversation,...s.value],Array.isArray(D.archivedConversations)?i.value=D.archivedConversations:i.value=i.value.filter(ie=>ie.id!==C),a.value="active",vs(D.conversation.id),Cn(),It(),{success:!0,conversationId:D.conversation.id}):{success:!1,error:"Failed to restore archived conversation"}}catch(D){return{success:!1,error:D instanceof Error?D.message:"Failed to restore archived conversation"}}}async function ye(C){const B=i.value.findIndex(T=>T.id===C);if(B===-1)return{success:!1,error:"Archived conversation not found"};try{const T=await $fetch(`/api/conversations/archives/${C}`,{method:"DELETE"});return T.success?(Array.isArray(T.archivedConversations)?i.value=T.archivedConversations:i.value.splice(B,1),un(),{success:!0}):{success:!1,error:"Failed to delete archived conversation"}}catch{return i.value.splice(B,1),It(),{success:!0}}}async function Xe(){if(!(typeof window>"u"))try{const C=await $fetch("/api/settings");if(C){if(typeof C.panelWidth=="number"){const D=C.panelWidth;D>=Dh&&D<=Lh&&(e.value=D)}typeof C.isPanelOpen=="boolean"&&(r.value=C.isPanelOpen),typeof C.activeConversationId=="string"&&(o.value=C.activeConversationId);const{useSettingsStore:B}=await cs(async()=>{const{useSettingsStore:D}=await import("./BuAdOXGq.js").then(ie=>ie.s);return{useSettingsStore:D}},__vite__mapDeps([0,1,2]),import.meta.url),T=B();await T.hydrate(),t.value=T.permissionMode}}catch(C){console.error("Failed to load chat settings:",C)}}function Re(C){t.value=C,typeof window<"u"&&cs(async()=>{const{useSettingsStore:B}=await import("./BuAdOXGq.js").then(T=>T.s);return{useSettingsStore:B}},__vite__mapDeps([0,1,2]),import.meta.url).then(({useSettingsStore:B})=>{B().setPermissionMode(C)})}function Ge(C,B){const T=B??o.value;if(!T)return;const D=w(T);D.pendingPermission=C,h.value++}function Ue(C){const B=C??o.value;if(!B)return;const T=c.get(B);T&&(T.pendingPermission=null,h.value++)}function pe(C,B){const T=B??o.value;if(!T)return;const D=w(T);D.pendingPlanApproval=C,h.value++}function Qe(C){const B=C??o.value;if(!B)return;const T=c.get(B);T&&(T.pendingPlanApproval=null,h.value++)}function le(){r.value=!r.value,Me()}function he(){r.value=!0,Me()}function Y(){r.value=!1,Me()}function Me(){typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{isPanelOpen:r.value}}).catch(C=>{console.error("Failed to save panel state:",C)})}function Ve(C){const B=Math.max(Dh,Math.min(Lh,C));e.value=B,typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{panelWidth:B}}).catch(T=>{console.error("Failed to save panel width:",T)})}function Ne(C){n.value=C}function Rt(C,B){const T=B??o.value;if(!T)return;const D=s.value.find(ie=>ie.id===T);D&&(D.providerSessionId=C)}function qt(C,B){const T=s.value.find(D=>D.id===C);T&&(T.worktreeBranch=B,T.lastCommitTime=new Date().toISOString())}async function an(C){const B=s.value.find(D=>D.id===C);if(!B?.worktreeBranch)return null;const T=B.worktreeBranch.trim();if(!T)return null;try{const ie=(await $fetch("/api/specs/features")).features.find(me=>me.id===T);return ie?(B.featureId!==ie.id&&(B.featureId=ie.id,B.updatedAt=new Date().toISOString(),It()),ie.id):null}catch(D){return console.warn("[chat] Failed to map branch to feature",{conversationId:C,branchName:T,error:D instanceof Error?D.message:String(D)}),null}}function sr(C,B,T){const D=s.value.find(ie=>ie.id===C);D&&(D.providerId=B,D.providerModelKey=T)}function Dr(C){const B=C??o.value;if(!B)return;const T=s.value.find(D=>D.id===B);T&&(T.providerSessionId="")}function Pr(C){return s.value.find(T=>T.id===C)?.providerSessionId??""}function jn(C){l.value.add(C)}function ln(C){l.value.delete(C)}function cn(C,B){const T=B??o.value;if(!T)return;const D=s.value.find(ie=>ie.id===T);D&&D.messages.push(C)}function $n(C,B,T){const D={id:Xh(),role:"user",content:C,attachments:T&&T.length>0?T:void 0,timestamp:new Date().toISOString()};return cn(D,B),D}function qn(C){const B={id:Xh(),role:"assistant",content:"",timestamp:new Date().toISOString(),status:"streaming"};return cn(B,C),B}function xt(C,B,T){const D=T??o.value;if(!D)return;const ie=s.value.find(ue=>ue.id===D);if(!ie)return;const me=ie.messages.findIndex(ue=>ue.id===C);me!==-1&&(ie.messages[me]={...ie.messages[me],...B})}function Lr(C,B){const T=s.value.find(ie=>ie.id===B);if(!T)return;const D=T.messages.findIndex(ie=>ie.id===C);D!==-1&&(T.messages[D]={...T.messages[D],content:"",status:"streaming",contentBlocks:[]})}function G(C,B,T){const D=T??o.value;if(!D)return;const ie=s.value.find(ue=>ue.id===D);if(!ie)return;const me=ie.messages.findIndex(ue=>ue.id===C);me!==-1&&(ie.messages[me].content+=B)}function de(C,B,T){const D=T??o.value;if(!D)return;const ie=s.value.find(ue=>ue.id===D);if(!ie)return;const me=ie.messages.findIndex(ue=>ue.id===C);if(me!==-1){const ue=ie.messages[me],ke=ue.tools?[...ue.tools,B]:[B];ie.messages[me]={...ue,tools:ke}}}function se(C,B,T,D){const ie=D??o.value;if(!ie)return;const me=s.value.find(ke=>ke.id===ie);if(!me)return;const ue=me.messages.findIndex(ke=>ke.id===C);if(ue!==-1){const ke=me.messages[ue];if(ke.tools){const Ke=ke.tools.findIndex(it=>it.id===B);if(Ke!==-1){const it=[...ke.tools];it[Ke]={...it[Ke],...T},me.messages[ue]={...ke,tools:it}}}}Vt(ie,!1)}function ve(C){C.contentBlocks&&(C.content=Ay(C.contentBlocks))}function Be(C,B){if(C.type!==B.type)return!0;switch(B.type){case"text":return C.text!==B.text;case"tool_use":{const T=C;return T.name!==B.name||T.inputSummary!==B.inputSummary}case"tool_result":{const T=C;return T.content!==B.content||T.isError!==B.isError}default:return!1}}function qe(C,B){const T=B??o.value;if(!T)return;const D=s.value.find(me=>me.id===T);if(!D)return;const ie=D.messages.find(me=>me.id===C);ie&&!ie.contentBlocks&&(ie.contentBlocks=[])}function He(C,B,T){const D=T??o.value;if(!D)return;const ie=s.value.find(ue=>ue.id===D);if(!ie)return;const me=ie.messages.find(ue=>ue.id===C);me&&(me.contentBlocks||(me.contentBlocks=[]),me.contentBlocks.push(B),ve(me))}function lt(C,B,T,D){const ie=D??o.value;if(!ie)return;const me=s.value.find(Bt=>Bt.id===ie);if(!me)return;const ue=me.messages.find(Bt=>Bt.id===C);if(!ue?.contentBlocks)return;const ke=ue.contentBlocks.findIndex(Bt=>Bt.id===B);if(ke===-1)return;const it={...ue.contentBlocks[ke]};T(it),ue.contentBlocks[ke]=it}function oi(C,B,T,D,ie){const me=D??o.value;if(!me)return;const ue=s.value.find(or=>or.id===me);if(!ue)return;const ke=ue.messages.find(or=>or.id===C);if(!ke?.contentBlocks)return;const Ke=ke.contentBlocks.findIndex(or=>or.id===B);if(Ke===-1)return;const it=ke.contentBlocks[Ke],Bt={...it};T(Bt),ke.contentBlocks[Ke]=Bt,ie?.syncContent!==!1&&Be(it,Bt)&&ve(ke),Vt(me,!1)}function ai(C,B,T){const D=T??o.value;if(!D)return;const ie=s.value.find(ue=>ue.id===D);if(!ie)return;const me=ie.messages.find(ue=>ue.id===C);me&&(me.contentBlocks||(me.contentBlocks=[]),me.contentBlocks.push(B),ve(me),Vt(D,!1))}function Xr(C,B,T){const D=T??o.value;if(!D)return null;const ie=s.value.find(ue=>ue.id===D);if(!ie)return null;const me=ie.messages.find(ue=>ue.id===C);return me?.contentBlocks?me.contentBlocks.find(ue=>ue.type==="tool_use"&&ue.toolUseId===B)??null:null}function li(C,B,T,D,ie){const me=s.value.find(ke=>ke.id===ie);if(!me)return;const ue=me.messages.findIndex(ke=>ke.id===C);ue!==-1&&(me.messages[ue]={...me.messages[ue],content:T,contentBlocks:B,status:D},Vt(ie,!0))}function ci(C,B){const T=B??o.value;if(!T)return;const D=c.get(T);D?.session&&(D.session.status=C,h.value++)}function ui(C,B){const T=B??o.value;if(!T)return;const D=w(T);D.session={sessionId:C,cwd:n.value,status:"streaming",startedAt:new Date().toISOString()},D.lastError=null,h.value++}function hi(C){const B=C??o.value;if(!B)return;const T=c.get(B);T?.session&&(T.session.status="idle",h.value++)}function di(C,B){const T=B??o.value;if(!T)return;const D=w(T);D.session&&(D.session.status="error",D.session.error=C),D.lastError=C,h.value++}function fi(C,B){if(!u.value)return;const T=B??o.value;if(!T)return;const D=w(T),ie=(()=>{if(typeof C.payload=="string")return C.payload;try{return JSON.stringify(C.payload,null,2)}catch{return String(C.payload)}})(),me=8e3,ue=300,ke=ie.length>me?`${ie.slice(0,me)}
|
|
9
|
+
... (truncated)`:ie;D.debugEvents.push({id:`dbg-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,timestamp:new Date().toISOString(),direction:C.direction,channel:C.channel,eventType:C.eventType||"unknown",payload:ke}),D.debugEvents.length>ue&&D.debugEvents.splice(0,D.debugEvents.length-ue),h.value++}function pi(C){u.value=C}function mi(C){const B=C??o.value;if(!B)return;const T=c.get(B);T&&(T.debugEvents=[],h.value++)}function gi(){if(!o.value)return;const C=s.value.find(T=>T.id===o.value);C&&(C.messages=[]);const B=o.value;c.delete(B),h.value++}function Oi(C){const B=C??o.value;if(!B)return;const T=c.get(B);T&&(T.lastError=null,T.session&&(T.session.error=void 0),h.value++)}async function vi(){const C=await Wh();if(s.value=C.conversations,i.value=C.archivedConversations,C.discardedArchives>0&&console.warn(`[chat] Skipped ${C.discardedArchives} corrupted archived conversation(s)`),Cn(),un(),!g.value){const B=s.value.find(T=>!!T.previewBranch&&!T.finalized);B&&(g.value=B.id)}if(o.value){const B=s.value.find(T=>T.id===o.value);B&&B.cwd?n.value=B.cwd:B||(o.value=null,r.value=!1)}}async function bi(){const C=await Wh(),B=new Map(s.value.map(ue=>[ue.id,ue])),T=new Set(C.conversations.map(ue=>ue.id));let D=0,ie=0,me=0;for(const ue of C.conversations){const ke=B.get(ue.id);if(!ke)s.value.push(ue),B.set(ue.id,ue),D++,console.log(`[chat] refresh: added new conversation ${ue.id} (source=${ue.source}, msgs=${ue.messages.length})`);else if(ue.source!=="user"&&(ue.messages.length>ke.messages.length||ue.updatedAt>(ke.updatedAt||""))){const Ke=s.value.findIndex(it=>it.id===ue.id);Ke!==-1&&(s.value.splice(Ke,1,ue),console.log(`[chat] refresh: updated conversation ${ue.id} (msgs: ${ke.messages.length} → ${ue.messages.length}, updatedAt: ${ke.updatedAt} → ${ue.updatedAt})`)),ie++}else ke&&ue.messages.length!==ke.messages.length&&console.log(`[chat] refresh: skipped update for ${ue.id} (source=${ue.source}, server msgs=${ue.messages.length}, local msgs=${ke.messages.length})`)}for(let ue=s.value.length-1;ue>=0;ue--){const ke=s.value[ue];!T.has(ke.id)&&!l.value.has(ke.id)&&(console.log(`[chat] refresh: removed conversation ${ke.id} (no longer on server)`),o.value===ke.id&&(o.value=null),s.value.splice(ue,1),me++)}return C.archivedConversations&&(i.value=C.archivedConversations),(D>0||ie>0||me>0)&&Cn(),console.log(`[chat] refreshServerConversations: loaded=${C.conversations.length}, added=${D}, updated=${ie}, removed=${me}`),D+ie+me}function It(){My(s.value,i.value)}function Vt(C,B=!1){const T=s.value.find(D=>D.id===C);if(T)if(B){const D=p.get(C);D&&(clearTimeout(D),p.delete(C)),T.updatedAt=new Date().toISOString(),jh(T)}else{if(p.get(C))return;const ie=setTimeout(()=>{T.updatedAt=new Date().toISOString(),jh(T),p.delete(C)},f);p.set(C,ie)}}function Yn(C=!1){o.value&&Vt(o.value,C)}function Cn(){const C=B=>{const T=new Date(B.updatedAt).getTime();return Number.isFinite(T)&&T>0?T:new Date(B.createdAt).getTime()};s.value.sort((B,T)=>C(T)-C(B))}function un(){i.value.sort((C,B)=>new Date(B.archivedAt).getTime()-new Date(C.archivedAt).getTime())}async function Ir(C){if(hn().atLimit)return"";const T=R1();let D=null;if(C?.featureId){const ke=await $fetch("/api/chat/worktree",{method:"POST",body:{conversationId:T,featureId:C.featureId,baseBranch:C.baseBranch}});if(!ke.success&&ke.error)throw new Error(ke.error);D=ke}let ie=null;if(typeof window<"u")try{const{useSettingsStore:ke}=await cs(async()=>{const{useSettingsStore:it}=await import("./BuAdOXGq.js").then(Bt=>Bt.s);return{useSettingsStore:it}},__vite__mapDeps([0,1,2]),import.meta.url),Ke=ke();await Ke.hydrate(),ie=Ke.providerSelection}catch(ke){console.warn("[chat] Failed to load provider selection for new conversation",ke)}const me=ie||{providerId:Dp,modelKey:Ep},ue={id:T,title:"New Conversation",messages:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),cwd:n.value||process.cwd?.()||"",featureId:C?.featureId,providerId:me.providerId,providerModelKey:me.modelKey};if(D?.success&&D.worktreePath&&D.branch&&(ue.worktreePath=D.worktreePath,ue.worktreeBranch=D.branch,ue.cwd=D.worktreePath,ue.hasWorktree=!0,D.baseBranch&&(ue.baseBranch=D.baseBranch)),s.value.unshift(ue),o.value=T,typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{activeConversationId:T}}).catch(ke=>{console.error("Failed to save active conversation:",ke)}),!C?.featureId)try{const ke=await $fetch("/api/chat/worktree",{method:"POST",body:{conversationId:T,baseBranch:C?.baseBranch}});if(ke.success&&ke.worktreePath&&ke.branch){const Ke=s.value.find(it=>it.id===T);Ke&&(Ke.worktreePath=ke.worktreePath,Ke.worktreeBranch=ke.branch,Ke.cwd=ke.worktreePath,Ke.hasWorktree=!0,ke.baseBranch&&(Ke.baseBranch=ke.baseBranch))}}catch(ke){console.warn("[chat] Failed to create worktree for conversation",T,ke)}return Vt(T,!0),T}function vs(C){const B=s.value.find(T=>T.id===C);B&&(o.value=C,r.value=!0,B.cwd&&(n.value=B.cwd),!B.featureId&&B.worktreeBranch&&an(C),typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{activeConversationId:C,isPanelOpen:!0}}).catch(T=>{console.error("Failed to save active conversation:",T)}))}async function bs(C){const B=s.value.findIndex(ie=>ie.id===C);if(B===-1)return;const T=s.value[B];if(g.value===C&&(g.value=null),T.hasWorktree&&T.worktreePath&&T.worktreeBranch)try{await $fetch("/api/chat/worktree",{method:"DELETE",body:{worktreePath:T.worktreePath,branch:T.worktreeBranch}})}catch(ie){console.warn("[chat] Failed to clean up worktree for conversation",C,ie)}s.value.splice(B,1),c.delete(C);const D=p.get(C);D&&(clearTimeout(D),p.delete(C)),o.value===C&&(o.value=null,typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{activeConversationId:null}}).catch(ie=>{console.error("Failed to clear active conversation:",ie)})),It()}async function xs(C,B,T){const D=s.value.find(me=>me.id===C);if(!D)return{success:!1,error:"Conversation not found"};if(!D.hasWorktree)return{success:!1,error:"No worktree associated with this conversation"};const ie=T||D.baseBranch;try{const me=await $fetch("/api/chat/finalize",{method:"POST",body:{conversationId:C,commitMessage:B,baseBranch:ie,worktreePath:D.worktreePath,worktreeBranch:D.worktreeBranch,previewBranch:D.previewBranch}});return me.success?(g.value===C&&(g.value=null),D.worktreePath=void 0,D.worktreeBranch=void 0,D.hasWorktree=!1,D.baseBranch=void 0,D.previewBranch=void 0,D.finalized=!0,D.updatedAt=new Date().toISOString(),It()):me.rebaseInProgress&&await ir(C,D.worktreePath,ie||"main",B),me}catch(me){return{success:!1,error:me instanceof Error?me.message:String(me)}}}async function Vr(C,B){const T=s.value.find(ie=>ie.id===C);if(!T)return{success:!1,error:"Conversation not found"};if(!T.hasWorktree)return{success:!1,error:"No worktree associated with this conversation"};const D=B||T.baseBranch;try{const ie=await $fetch("/api/chat/rebase",{method:"POST",body:{conversationId:C,baseBranch:D,worktreePath:T.worktreePath}});return ie.rebaseInProgress?await ir(C,T.worktreePath,D||"main","","sync"):ie.success&&(await R(T),T.baseBranch=D,It()),ie}catch(ie){return{success:!1,error:ie instanceof Error?ie.message:String(ie)}}}async function ir(C,B,T,D,ie="finalize"){O.value={conversationId:C,worktreePath:B,baseBranch:T,commitMessage:D,files:[],resolvedFiles:new Set,loading:!0,error:null,mode:ie,chatMessages:[],userGuidance:"",lifecycleState:"detected"};try{const me=await $fetch("/api/rebase/conflicts",{params:{worktreePath:B}});O.value&&(O.value.files=me.files,O.value.loading=!1,St("system",`Detected ${me.files.length} conflicted file${me.files.length===1?"":"s"}. Enter optional guidance below and click "Resolve Conflicts Automatically" to start.`,"info"))}catch(me){O.value&&(O.value.error=me instanceof Error?me.message:String(me),O.value.loading=!1)}}function St(C,B,T="info",D){O.value&&O.value.chatMessages.push({id:`conflict-msg-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,role:C,content:B,timestamp:Date.now(),type:T,fileRef:D})}async function ys(C,B){if(!O.value)return!1;try{const T=await $fetch("/api/rebase/resolve",{method:"PUT",body:{worktreePath:O.value.worktreePath,filePath:C,content:B}});return T.success&&O.value&&O.value.resolvedFiles.add(C),T.success}catch{return!1}}async function Fn(){if(!O.value)return{success:!1,error:"No conflict resolution in progress"};const{conversationId:C,commitMessage:B,baseBranch:T,mode:D,worktreePath:ie}=O.value,me=D==="sync"?"/api/rebase/continue-sync":"/api/rebase/continue";try{const ue=s.value.find(Ke=>Ke.id===C),ke=await $fetch(me,{method:"POST",body:{conversationId:C,commitMessage:B,baseBranch:T,worktreePath:ie,worktreeBranch:ue?.worktreeBranch,previewBranch:ue?.previewBranch}});if(ke.success){if(D==="finalize"){g.value===C&&(g.value=null);const Ke=s.value.find(it=>it.id===C);Ke&&(Ke.worktreePath=void 0,Ke.worktreeBranch=void 0,Ke.hasWorktree=!1,Ke.baseBranch=void 0,Ke.previewBranch=void 0,Ke.finalized=!0,Ke.updatedAt=new Date().toISOString(),It())}else if(D==="sync"){const Ke=s.value.find(it=>it.id===C);Ke&&(await R(Ke),Ke.baseBranch=T,Ke.updatedAt=new Date().toISOString(),It())}O.value=null}else ke.rebaseInProgress&&await ir(C,ie,T,B,D);return ke}catch(ue){return{success:!1,error:ue instanceof Error?ue.message:String(ue)}}}async function xi(){if(!O.value)return!1;try{const C=await $fetch("/api/rebase/abort",{method:"POST",body:{worktreePath:O.value.worktreePath}});return O.value=null,C.success}catch{return O.value=null,!1}}async function Un(C){if(!O.value)return!1;const B=O.value.files.find(T=>T.path===C);if(!B)return!1;try{const T=await $fetch("/api/rebase/ai-resolve",{method:"POST",body:{worktreePath:O.value.worktreePath,filePath:C,conflictContent:B.content,userGuidance:O.value.userGuidance||void 0}});if(T.success&&T.resolvedContent!==void 0){B.content=T.resolvedContent;const D=await ys(C,T.resolvedContent);return D?St("assistant",`Resolved: ${C}`,"success",C):St("assistant",`Failed to write resolved content for ${C}`,"error",C),D}return St("assistant",`Failed to resolve ${C}: ${T.error||"Unknown error"}`,"error",C),!1}catch(T){const D=T instanceof Error?T.message:String(T);return St("assistant",`Error resolving ${C}: ${D}`,"error",C),!1}}async function zr(){if(!O.value)return;const C=O.value.files.filter(ue=>!O.value.resolvedFiles.has(ue.path));if(C.length===0){St("system","All files are already resolved.","info");return}x=new AbortController;const B=x.signal;O.value.lifecycleState="resolving";const T=O.value.userGuidance;T&&St("user",T),St("system",`Starting AI resolution for ${C.length} file${C.length===1?"":"s"} (parallel)...`,"info");let D=0,ie=0;const me=3;for(let ue=0;ue<C.length&&!(!O.value||B.aborted);ue+=me){const ke=C.slice(ue,ue+me);for(const it of ke)St("assistant",`Resolving: ${it.path}...`,"progress",it.path);const Ke=await Promise.all(ke.map(it=>Un(it.path)));for(const it of Ke)it?D++:ie++}x=null,O.value&&(B.aborted||(ie===0?(O.value.lifecycleState="resolved",St("system",`All ${D} file${D===1?"":"s"} resolved successfully. Click "Continue Rebase" to proceed.`,"summary")):(O.value.lifecycleState="failed",St("system",`Resolution complete: ${D} succeeded, ${ie} failed. You can retry or abort.`,"summary"))))}async function Tr(){if(!O.value)return;x&&(x.abort(),x=null);const{conversationId:C,worktreePath:B,baseBranch:T,commitMessage:D,mode:ie}=O.value;St("system","Resolution cancelled. Resetting conflict state...","info");try{await $fetch("/api/rebase/abort",{method:"POST",body:{worktreePath:B}})}catch{}O.value=null,St("system","Conflict resolution aborted and reset.","info")}async function ks(C){const B=s.value.find(T=>T.id===C);if(!B)return{success:!1,error:"Conversation not found"};if(!B.hasWorktree||!B.worktreePath||!B.baseBranch)return{success:!1,error:"No worktree to preview"};try{const T=await $fetch("/api/chat/preview",{method:"POST",body:{conversationId:C,worktreePath:B.worktreePath,baseBranch:B.baseBranch}});return T.success&&T.previewBranch&&(B.previewBranch=T.previewBranch,g.value=C,B.updatedAt=new Date().toISOString(),It()),{success:T.success,error:T.error}}catch(T){return{success:!1,error:T instanceof Error?T.message:String(T)}}}async function Gn(C){const B=s.value.find(T=>T.id===C);if(!B)return{success:!1,error:"Conversation not found"};if(!B.previewBranch||!B.baseBranch)return g.value=null,{success:!1,error:"No active preview"};try{const T=await $fetch("/api/chat/preview",{method:"DELETE",body:{previewBranch:B.previewBranch,baseBranch:B.baseBranch}});return T.success&&(B.previewBranch=void 0,g.value=null,B.updatedAt=new Date().toISOString(),It()),{success:T.success,error:T.error}}catch(T){return{success:!1,error:T instanceof Error?T.message:String(T)}}}async function yi(C){if(g.value===C)return await Gn(C);if(g.value){const B=await Gn(g.value);if(!B.success)return{success:!1,error:`Failed to end previous preview: ${B.error}`}}return await ks(C)}function ki(C){const B=C.trim();if(!B)return null;const T=s.value.filter(D=>D.featureId===B?!0:D.worktreeBranch?.trim()===B);return T.length===0?null:T.sort((D,ie)=>new Date(ie.updatedAt).getTime()-new Date(D.updatedAt).getTime())[0]||null}function Hn(C,B){const T=s.value.find(D=>D.id===C);T&&(T.title=B.trim(),T.updatedAt=new Date().toISOString(),Cn(),It())}function wi(C){const B=o.value;if(!B)return;const T=s.value.find(ie=>ie.id===B);if(!T||T.title!=="New Conversation")return;const D=T.messages.find(ie=>ie.role==="user");D&&(D.content.trim().length>0?T.title=B1(D.content):D.attachments&&D.attachments.length>0&&(T.title=D.attachments.length===1?"[Image] New Conversation":`[${D.attachments.length} Images] New Conversation`))}function hn(){const C=s.value.length;return{atLimit:C>=Eh,nearLimit:C>=Zh,count:C}}async function Ae(C,B){o.value||await Ir();const T=$n(C,void 0,B);return wi(),Yn(!0),T}function U(C,B,T){const D=T??o.value;G(C,B,D??void 0),D&&Vt(D,!1)}function yt(C,B){const T=B??o.value;xt(C,{status:"complete"},T??void 0),T&&Vt(T,!0)}return{messages:P,session:E,isPanelOpen:r,panelWidth:_e(e),permissionMode:_e(t),pendingPermission:j,pendingPlanApproval:z,cwd:_e(n),lastError:ae,debugEvents:ce,debugStreamEnabled:_e(u),providerSessionId:W,conversations:_e(s),archivedConversations:_e(i),activeConversationId:_e(o),conversationViewMode:_e(a),conflictState:_e(O),previewingConversationId:_e(g),isStreaming:Oe,hasMessages:L,lastMessage:Z,isActiveConversationStreaming:q,hasConversations:N,hasArchivedConversations:X,activeConversation:Q,conversationCount:I,isNearStorageLimit:xe,sortedConversations:J,sortedArchivedConversations:fe,previewingConversation:S,streamingConversations:_e(l),initialize:Xe,togglePanel:le,openPanel:he,closePanel:Y,setPanelWidth:Ve,setPermissionMode:Re,setPendingPermission:Ge,clearPendingPermission:Ue,setPendingPlanApproval:pe,clearPendingPlanApproval:Qe,setCwd:Ne,setProviderSessionId:Rt,clearProviderSession:Dr,getProviderSessionId:Pr,updateWorktreeBranch:qt,setConversationProviderSelection:sr,startConversationStreaming:jn,endConversationStreaming:ln,isConversationStreaming:F,addMessage:cn,addUserMessage:$n,addAssistantMessage:qn,updateMessage:xt,resetMessageForReplay:Lr,appendToMessage:G,addToolToMessage:de,updateToolInMessage:se,initContentBlocks:qe,appendContentBlock:He,appendContentBlockWithSave:ai,updateBlockById:lt,updateBlockWithSave:oi,findToolUseBlock:Xr,batchSetMessageBlocks:li,syncContentFromBlocks:ve,setSessionStatus:ci,startSession:ui,endSession:hi,setSessionError:di,setDebugStreamEnabled:pi,pushDebugEvent:fi,clearDebugEvents:mi,clearMessages:gi,clearError:Oi,loadConversations:vi,refreshServerConversations:bi,saveAllConversations:It,saveCurrentConversation:Yn,saveConversation:Vt,createConversation:Ir,selectConversation:vs,deleteConversation:bs,archiveConversation:H,restoreArchivedConversation:oe,deleteArchivedConversation:ye,setConversationViewMode:A,findConversationByFeature:ki,syncConversationFeatureFromBranch:an,renameConversation:Hn,checkStorageLimits:hn,finalizeConversation:xs,rebaseConversation:Vr,resolveConflictFile:ys,continueRebase:Fn,abortRebase:xi,aiResolveConflictFile:Un,aiResolveAllConflicts:zr,addConflictChatMessage:St,cancelConflictResolution:Tr,previewConversation:ks,unpreviewConversation:Gn,togglePreview:yi,isConversationPreviewing:k,addUserMessageWithConversation:Ae,appendToMessageWithSave:U,completeMessageWithSave:yt}});function _y(r={}){const e=ll(),t=300,n=5e3,s=250;let i=null,o=null,a=null,l=null,c=null,u=!1,h=!1;const p=M(!1),f=M(!1);let g=r;function O(L){g=L}async function x(){const L=g.getScrollPosition?.()??0,Z=await e.checkAndRefresh();return Z&&g.setScrollPosition&&(await nr(),g.setScrollPosition(L)),Z}function b(){return p.value||!!e.activeContextMenu||!!e.activeDialog}async function w(){if(b()){f.value=!0;return}P()}async function Q(){if(u){h=!0;return}u=!0;try{await x()}finally{u=!1,h&&(h=!1,P())}}function P(){o&&clearTimeout(o),o=setTimeout(()=>{o=null,Q()},s)}function E(L){if(typeof window>"u")return;if(a&&a.readyState===WebSocket.OPEN){a.send(JSON.stringify({type:"watch",workingDirectory:L}));return}l&&(clearTimeout(l),l=null);const F=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/git-watcher-ws`;a=new WebSocket(F),a.onopen=()=>{a.send(JSON.stringify({type:"watch",workingDirectory:L}))},a.onmessage=q=>{try{JSON.parse(q.data).type==="git_changed"&&w()}catch{}},a.onclose=()=>{a=null,e.isPollingActive&&c&&(l=setTimeout(()=>{c&&E(c)},n))},a.onerror=()=>{}}function j(){l&&(clearTimeout(l),l=null),a&&(a.close(),a=null)}function z(L){L&&(c=L),!e.isPollingActive&&(e.startPolling(),c&&E(c))}function ae(){j(),e.stopPolling()}function ce(){p.value=!0,i&&(clearTimeout(i),i=null)}function Oe(){i&&clearTimeout(i),i=setTimeout(async()=>{p.value=!1,f.value&&(f.value=!1,P())},t)}function W(){ae(),i&&(clearTimeout(i),i=null),o&&(clearTimeout(o),o=null),u=!1,h=!1,c=null}return We(()=>[e.activeContextMenu,e.activeDialog],()=>{!e.activeContextMenu&&!e.activeDialog&&f.value&&!p.value&&(f.value=!1,P())}),{isUserInteracting:_e(p),isDeferredRefresh:_e(f),startPolling:z,stopPolling:ae,startInteraction:ce,endInteraction:Oe,cleanup:W,setScrollCallbacks:O}}function Ry(r){function e(s){if((s.ctrlKey||s.metaKey)&&s.key==="h"){s.preventDefault(),r.onScrollToHead();return}if(s.key==="Escape"){s.preventDefault(),r.onEscape();return}}function t(){document.addEventListener("keydown",e)}function n(){document.removeEventListener("keydown",e)}return{start:t,stop:n}}function By(r){const e=M({visible:!1,branchName:"",loading:!1,error:null});async function t(){e.value.loading=!0,e.value.error=null;const J=await r.checkoutBranch(e.value.branchName);e.value.loading=!1,J.success?e.value.visible=!1:e.value.error=J.error||"Unknown error"}const n=M({visible:!1,fromCommit:"",loading:!1,error:null});async function s(J){n.value.loading=!0,n.value.error=null;const fe=await r.createBranch(J.name,n.value.fromCommit);n.value.loading=!1,fe.success?(J.checkout&&await r.checkoutBranch(J.name),n.value.visible=!1):n.value.error=fe.error||"Unknown error"}const i=M({visible:!1,branchName:"",isLocal:!0,force:!1,loading:!1,error:null});async function o(J){i.value.loading=!0,i.value.error=null;const{branchName:fe,isLocal:S}=i.value,k=J?.force??i.value.force,A=S?await r.deleteLocalBranch(fe,k):await r.deleteRemoteBranch(fe);i.value.loading=!1,A.success?i.value.visible=!1:i.value.error=A.error||"Unknown error"}const a=M({visible:!1,branchName:"",newName:"",loading:!1,error:null});async function l(){if(!a.value.newName.trim()){a.value.error="Branch name is required";return}a.value.loading=!0,a.value.error=null;const J=await r.renameBranch(a.value.branchName,a.value.newName.trim());a.value.loading=!1,J.success?a.value.visible=!1:a.value.error=J.error||"Unknown error"}const c=M({visible:!1,branchName:"",loading:!1,error:null});async function u(J){c.value.loading=!0,c.value.error=null;const fe=await r.mergeBranch(c.value.branchName,J);c.value.loading=!1,fe.success?c.value.visible=!1:c.value.error=fe.error||"Unknown error"}const h=M({visible:!1,branchName:"",loading:!1,error:null});async function p(){h.value.loading=!0,h.value.error=null;const J=await r.rebaseBranch(h.value.branchName);h.value.loading=!1,J.success?h.value.visible=!1:h.value.error=J.error||"Unknown error"}const f=M({visible:!1,branchName:"",loading:!1,error:null});async function g(J){f.value.loading=!0,f.value.error=null;const fe=await r.pushBranch(f.value.branchName,J.remote,J.force,J.forceWithLease);f.value.loading=!1,fe.success?f.value.visible=!1:f.value.error=fe.error||"Unknown error"}const O=M({visible:!1,branchName:"",loading:!1,error:null});async function x(J){O.value.loading=!0,O.value.error=null;const fe=await r.pullBranch(O.value.branchName,J.remote,J.noFastForward,J.squash);O.value.loading=!1,fe.success?O.value.visible=!1:O.value.error=fe.error||"Unknown error"}const b=M({visible:!1,commitHash:"",commitMessage:"",loading:!1,error:null});async function w(J){b.value.loading=!0,b.value.error=null;const fe=await r.cherryPickCommit(b.value.commitHash,J.recordOrigin,J.noCommit);b.value.loading=!1,fe.success?b.value.visible=!1:b.value.error=fe.error||"Unknown error"}const Q=M({visible:!1,commitHash:"",commitMessage:"",loading:!1,error:null});async function P(J){Q.value.loading=!0,Q.value.error=null;const fe=await r.resetToCommit(Q.value.commitHash,J.mode);Q.value.loading=!1,fe.success?Q.value.visible=!1:Q.value.error=fe.error||"Unknown error"}const E=M({visible:!1,commitHash:"",loading:!1,error:null});async function j(J){E.value.loading=!0,E.value.error=null;const fe=await r.createTag(J.name,E.value.commitHash,J.annotated,J.message,J.pushToRemote);E.value.loading=!1,fe.success?E.value.visible=!1:E.value.error=fe.error||"Unknown error"}const z=M({visible:!1,tagName:"",loading:!1,error:null});async function ae(J){z.value.loading=!0,z.value.error=null;const fe=await r.deleteTag(z.value.tagName,J.deleteFromRemote?J.remote||"origin":void 0);z.value.loading=!1,fe.success?z.value.visible=!1:z.value.error=fe.error||"Unknown error"}const ce=M({visible:!1,tagName:"",loading:!1,tagDetail:null}),Oe=M({visible:!1,loading:!1,error:null});async function W(J){Oe.value.loading=!0,Oe.value.error=null;const fe=await r.stashChanges(J.message,J.includeUntracked);Oe.value.loading=!1,fe.success?Oe.value.visible=!1:Oe.value.error=fe.error||"Unknown error"}const L=M({visible:!1,stashIndex:0,loading:!1,error:null}),Z=M("");async function F(J){L.value.loading=!0,L.value.error=null;const fe=await r.stashBranch(L.value.stashIndex,J);L.value.loading=!1,fe.success?L.value.visible=!1:L.value.error=fe.error||"Unknown error"}const q=M({visible:!1,loading:!1,error:null});async function N(J){q.value.loading=!0,q.value.error=null;const fe=await r.resetWorking(J.mode);q.value.loading=!1,fe.success?q.value.visible=!1:q.value.error=fe.error||"Unknown error"}const X=M({visible:!1,loading:!1,error:null});async function I(){X.value.loading=!0,X.value.error=null;const J=await r.cleanUntracked();X.value.loading=!1,J.success?X.value.visible=!1:X.value.error=J.error||"Unknown error"}const xe=ee(()=>e.value.visible||n.value.visible||i.value.visible||a.value.visible||c.value.visible||h.value.visible||f.value.visible||O.value.visible||b.value.visible||Q.value.visible||E.value.visible||z.value.visible||ce.value.visible||Oe.value.visible||L.value.visible||q.value.visible||X.value.visible);return{checkoutDialog:e,confirmCheckout:t,createBranchDialog:n,confirmCreateBranch:s,deleteBranchDialog:i,confirmDeleteBranch:o,renameDialog:a,confirmRenameBranch:l,mergeDialog:c,confirmMerge:u,rebaseDialog:h,confirmRebase:p,pushDialog:f,confirmPush:g,pullDialog:O,confirmPull:x,cherryPickDialog:b,confirmCherryPick:w,resetDialog:Q,confirmReset:P,tagCreateDialog:E,confirmTagCreate:j,tagDeleteDialog:z,confirmTagDelete:ae,tagDetailDialog:ce,stashDialog:Oe,confirmStash:W,stashBranchDialog:L,stashBranchInput:Z,confirmStashBranch:F,resetWorkingDialog:q,confirmResetWorking:N,cleanUntrackedDialog:X,confirmCleanUntracked:I,isAnyDialogOpen:xe}}function Zy(r,e){const t=M({visible:!1,x:0,y:0});function n(Y,Me){t.value={visible:!0,x:Y,y:Me},setTimeout(()=>{t.value.visible=!1},1500)}const s=M({visible:!1,branch:"",x:0,y:0,isCurrentBranch:!1,isLocal:!0,commitHash:""});function i(Y){s.value={visible:!0,...Y},r.setActiveContextMenu({type:"branch",props:Y,position:{x:Y.x,y:Y.y}})}function o(){s.value.visible=!1,r.clearActiveContextMenu()}function a(){o(),e.checkoutDialog.value={visible:!0,branchName:s.value.branch,loading:!1,error:null}}function l(){const Y=s.value.branch;o(),e.renameDialog.value={visible:!0,branchName:Y,newName:Y,loading:!1,error:null}}function c(){const{branch:Y,isLocal:Me}=s.value;o(),e.deleteBranchDialog.value={visible:!0,branchName:Y,isLocal:Me,force:!1,loading:!1,error:null}}function u(){const Y=s.value.branch;o(),e.mergeDialog.value={visible:!0,branchName:Y,loading:!1,error:null}}function h(){const Y=s.value.branch;o(),e.rebaseDialog.value={visible:!0,branchName:Y,loading:!1,error:null}}function p(){const Y=s.value.branch;o(),e.pushDialog.value={visible:!0,branchName:Y,loading:!1,error:null}}function f(){const Y=s.value.branch;o(),e.pullDialog.value={visible:!0,branchName:Y,loading:!1,error:null}}async function g(){const Y=s.value.branch;o(),await r.fetchBranch(Y)}async function O(){const Y=s.value.branch;o(),await r.copyToClipboard(Y),n(s.value.x,s.value.y)}function x(){o(),e.createBranchDialog.value={visible:!0,fromCommit:s.value.commitHash,loading:!1,error:null}}const b=M({visible:!1,commit:null,x:0,y:0});function w(Y){b.value={visible:!0,commit:Y.commit,x:Y.x,y:Y.y},r.setActiveContextMenu({type:"commit",props:Y,position:{x:Y.x,y:Y.y}})}function Q(){b.value.visible=!1,r.clearActiveContextMenu()}function P(Y){const Me=b.value.commit;if(!Me)return!1;Q();const Ve=Y(Me);return Ve&&typeof Ve.then=="function"?Ve.then(()=>!0):!0}function E(){P(Y=>{e.tagCreateDialog.value={visible:!0,commitHash:Y.hash,loading:!1,error:null}})}function j(){P(Y=>{e.createBranchDialog.value={visible:!0,fromCommit:Y.hash,loading:!1,error:null}})}function z(){P(Y=>{e.checkoutDialog.value={visible:!0,branchName:Y.hash,loading:!1,error:null}})}function ae(){P(Y=>{e.cherryPickDialog.value={visible:!0,commitHash:Y.hash,commitMessage:Y.message,loading:!1,error:null}})}async function ce(){await P(Y=>r.revertCommit(Y.hash))}function Oe(){P(Y=>{e.mergeDialog.value={visible:!0,branchName:Y.shortHash,loading:!1,error:null}})}function W(){P(Y=>{e.resetDialog.value={visible:!0,commitHash:Y.hash,commitMessage:Y.message,loading:!1,error:null}})}async function L(){const{x:Y,y:Me}=b.value;await P(Ne=>r.copyToClipboard(Ne.hash))&&n(Y,Me)}async function Z(){await P(Y=>r.copyCommitSubject(Y))}const F=M({visible:!1,tag:"",x:0,y:0,commitHash:""});function q(Y){F.value={visible:!0,...Y},r.setActiveContextMenu({type:"tag",props:Y,position:{x:Y.x,y:Y.y}})}function N(){F.value.visible=!1,r.clearActiveContextMenu()}async function X(){const Y=F.value.tag;N(),e.tagDetailDialog.value={visible:!0,tagName:Y,loading:!0,tagDetail:null};const Me=await r.getTagDetail(Y);e.tagDetailDialog.value.loading=!1,Me.success&&Me.data&&(e.tagDetailDialog.value.tagDetail=Me.data)}function I(){const Y=F.value.tag;N(),e.tagDeleteDialog.value={visible:!0,tagName:Y,loading:!1,error:null}}async function xe(){const Y=F.value.tag;N(),await r.pushTag(Y)}async function J(){const Y=F.value.tag;N(),await r.copyToClipboard(Y),n(F.value.x,F.value.y)}const fe=M({visible:!1,x:0,y:0});function S(Y){fe.value={visible:!0,...Y},r.setActiveContextMenu({type:"uncommitted",props:Y,position:{x:Y.x,y:Y.y}})}function k(){fe.value.visible=!1,r.clearActiveContextMenu()}function A(){k(),e.stashDialog.value={visible:!0,loading:!1,error:null}}function R(){k(),e.resetWorkingDialog.value={visible:!0,loading:!1,error:null}}function H(){k(),e.cleanUntrackedDialog.value={visible:!0,loading:!1,error:null}}const oe=M({visible:!1,stash:null,x:0,y:0});function ye(Y){oe.value={visible:!0,stash:Y.stash,x:Y.x,y:Y.y},r.setActiveContextMenu({type:"stash",props:Y,position:{x:Y.x,y:Y.y}})}function Xe(){oe.value.visible=!1,r.clearActiveContextMenu()}function Re(Y){const Me=oe.value.stash;if(!Me)return!1;Xe();const Ve=Y(Me);return Ve&&typeof Ve.then=="function"?Ve.then(()=>!0):!0}async function Ge(){await Re(Y=>r.applyStash(Y.index))}async function Ue(){await Re(Y=>r.popStash(Y.index))}async function pe(){await Re(Y=>r.dropStash(Y.index))}function Qe(){Re(Y=>{e.stashBranchDialog.value={visible:!0,stashIndex:Y.index,loading:!1,error:null}})}async function le(){const{x:Y,y:Me}=oe.value;await Re(Ne=>r.copyToClipboard(`stash@{${Ne.index}}`))&&n(Y,Me)}async function he(){const{x:Y,y:Me}=oe.value;await Re(Ne=>r.copyToClipboard(Ne.hash))&&n(Y,Me)}return{copyFeedback:t,showCopyFeedback:n,branchMenu:s,handleBranchContextMenu:i,closeBranchMenu:o,handleBranchCheckout:a,handleBranchRename:l,handleBranchDelete:c,handleBranchMerge:u,handleBranchRebase:h,handleBranchPush:p,handleBranchPull:f,handleBranchFetch:g,handleBranchCopyName:O,handleBranchCreateBranch:x,commitMenu:b,handleCommitContextMenu:w,closeCommitMenu:Q,handleCommitAddTag:E,handleCommitCreateBranch:j,handleCommitCheckout:z,handleCommitCherryPick:ae,handleCommitRevert:ce,handleCommitMergeInto:Oe,handleCommitReset:W,handleCommitCopyHash:L,handleCommitCopySubject:Z,tagMenu:F,handleTagContextMenu:q,closeTagMenu:N,handleTagViewDetails:X,handleTagDelete:I,handleTagPush:xe,handleTagCopyName:J,uncommittedMenu:fe,handleUncommittedContextMenu:S,closeUncommittedMenu:k,handleUncommittedStash:A,handleUncommittedReset:R,handleUncommittedClean:H,stashMenu:oe,handleStashContextMenu:ye,closeStashMenu:Xe,handleStashApply:Ge,handleStashPop:Ue,handleStashDrop:pe,handleStashCreateBranch:Qe,handleStashCopyName:le,handleStashCopyHash:he}}const Ey={class:"mb-4 p-3 bg-retro-panel border border-retro-border rounded"},Dy={class:"text-sm font-mono text-retro-cyan"},Ly={class:"text-xs font-mono text-retro-text mt-1 truncate"},Xy={class:"space-y-3"},Iy={class:"flex items-start gap-2 cursor-pointer group"},Vy={class:"flex items-start gap-2 cursor-pointer group"},zy=ze({__name:"CherryPickDialog",props:{visible:{type:Boolean},commitHash:{},commitMessage:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e,n=M(!1),s=M(!1);function i(){t("confirm",{recordOrigin:n.value,noCommit:s.value})}function o(){n.value=!1,s.value=!1,t("close")}return(a,l)=>(v(),be(Ut,{title:"Cherry-Pick Commit",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Cherry-Pick",onClose:o,onConfirm:i},{default:ht(()=>[d("div",Ey,[l[2]||(l[2]=d("div",{class:"text-xs font-mono text-retro-muted mb-1"},"Commit",-1)),d("div",Dy,_(r.commitHash.slice(0,7)),1),d("div",Ly,_(r.commitMessage.split(`
|
|
10
|
+
`)[0]),1)]),d("div",Xy,[d("label",Iy,[Je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>nt(n)?n.value=c:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan"},null,512),[[mr,m(n)]]),l[3]||(l[3]=d("div",null,[d("span",{class:"text-sm font-mono text-retro-text group-hover:text-retro-cyan transition-colors"}," Record origin (-x) "),d("p",{class:"text-xs font-mono text-retro-muted mt-0.5"},' Append "(cherry picked from commit ...)" to the commit message ')],-1))]),d("label",Vy,[Je(d("input",{"onUpdate:modelValue":l[1]||(l[1]=c=>nt(s)?s.value=c:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan"},null,512),[[mr,m(s)]]),l[4]||(l[4]=d("div",null,[d("span",{class:"text-sm font-mono text-retro-text group-hover:text-retro-cyan transition-colors"}," No commit "),d("p",{class:"text-xs font-mono text-retro-muted mt-0.5"}," Apply changes to the working directory without committing ")],-1))])])]),_:1},8,["visible","loading","error"]))}}),Ny={class:"mb-4 p-3 bg-retro-panel border border-retro-border rounded"},Wy={class:"text-sm font-mono text-retro-cyan"},jy={class:"mb-4"},qy={class:"flex items-start gap-2 cursor-pointer group"},Yy=ze({__name:"CreateBranchDialog",props:{visible:{type:Boolean},fromCommit:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e,n=M(""),s=M(!0),i=ee(()=>n.value.trim().length>0);function o(){i.value&&t("confirm",{name:n.value.trim(),checkout:s.value})}function a(){n.value="",s.value=!0,t("close")}return(l,c)=>(v(),be(Ut,{title:"Create Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Create Branch",onClose:a,onConfirm:o},{default:ht(()=>[d("div",Ny,[c[2]||(c[2]=d("div",{class:"text-xs font-mono text-retro-muted mb-1"},"From",-1)),d("div",Wy,_(r.fromCommit.slice(0,7)),1)]),d("div",jy,[c[3]||(c[3]=d("label",{class:"block text-xs font-mono text-retro-muted mb-1.5"},"Branch name",-1)),Je(d("input",{"onUpdate:modelValue":c[0]||(c[0]=u=>nt(n)?n.value=u:null),type:"text",placeholder:"feature/my-branch",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan"},null,512),[[Lt,m(n)]])]),d("label",qy,[Je(d("input",{"onUpdate:modelValue":c[1]||(c[1]=u=>nt(s)?s.value=u:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan"},null,512),[[mr,m(s)]]),c[4]||(c[4]=d("div",null,[d("span",{class:"text-sm font-mono text-retro-text group-hover:text-retro-cyan transition-colors"}," Switch to new branch "),d("p",{class:"text-xs font-mono text-retro-muted mt-0.5"}," Checkout the branch after creating it ")],-1))])]),_:1},8,["visible","loading","error"]))}}),Fy=ze({__name:"CleanUntrackedDialog",props:{visible:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e;return(n,s)=>(v(),be(Ut,{title:"Clean Untracked Files",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Clean","confirm-danger":"",onClose:s[0]||(s[0]=i=>t("close")),onConfirm:s[1]||(s[1]=i=>t("confirm"))},{default:ht(()=>[...s[2]||(s[2]=[d("div",{class:"space-y-3"},[d("p",{class:"text-retro-text text-sm font-mono"}," Remove all untracked files and directories from the working tree. "),d("p",{class:"text-retro-muted text-xs font-mono"},[Ie(" This runs "),d("code",null,"git clean -fd"),Ie(" and cannot be undone. ")])],-1)])]),_:1},8,["visible","loading","error"]))}}),Uy={class:"text-retro-text text-sm font-mono mb-2"},Gy={class:"text-retro-cyan"},Hy={class:"space-y-3 mt-4"},Ky={class:"flex items-center gap-2 cursor-pointer"},Jy=ze({__name:"DeleteBranchDialog",props:{visible:{type:Boolean},branchName:{},isLocal:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=M(!1);function i(){n("confirm",{force:s.value})}return We(()=>t.visible,o=>{o&&(s.value=!1)}),(o,a)=>(v(),be(Ut,{title:"Delete Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Delete","confirm-danger":!0,onClose:a[1]||(a[1]=l=>n("close")),onConfirm:i},{default:ht(()=>[a[4]||(a[4]=d("div",{class:"mb-4 p-2 text-xs font-mono text-retro-yellow bg-retro-yellow/10 border border-retro-yellow/30 rounded"}," This action is permanent and cannot be undone. ",-1)),d("p",Uy,[Ie(" Delete "+_(r.isLocal?"local":"remote")+" branch ",1),d("span",Gy,_(r.branchName),1),a[2]||(a[2]=Ie("? ",-1))]),d("div",Hy,[d("label",Ky,[Je(d("input",{"onUpdate:modelValue":a[0]||(a[0]=l=>nt(s)?s.value=l:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[mr,m(s)]]),a[3]||(a[3]=d("span",{class:"text-retro-muted text-sm"},"Force delete (even if not fully merged)",-1))])])]),_:1},8,["visible","loading","error"]))}}),ek={class:"text-retro-text text-sm font-mono mb-4"},tk={class:"text-retro-cyan"},rk={class:"space-y-3"},nk={class:"flex items-center gap-2 cursor-pointer"},sk={class:"flex items-center gap-2 cursor-pointer"},ik={class:"flex items-center gap-2 cursor-pointer"},ok=ze({__name:"MergeDialog",props:{visible:{type:Boolean},branchName:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=M(!1),i=M(!1),o=M(!1);function a(){n("confirm",{noCommit:s.value,noFastForward:i.value,squash:o.value})}return We(()=>t.visible,l=>{l&&(s.value=!1,i.value=!1,o.value=!1)}),(l,c)=>(v(),be(Ut,{title:"Merge Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Merge",onClose:c[3]||(c[3]=u=>n("close")),onConfirm:a},{default:ht(()=>[d("p",ek,[c[4]||(c[4]=Ie(" Merge ",-1)),d("span",tk,_(r.branchName),1),c[5]||(c[5]=Ie(" into current branch ",-1))]),d("div",rk,[d("label",nk,[Je(d("input",{"onUpdate:modelValue":c[0]||(c[0]=u=>nt(s)?s.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[mr,m(s)]]),c[6]||(c[6]=d("span",{class:"text-retro-muted text-sm"},"No commit (stage changes only)",-1))]),d("label",sk,[Je(d("input",{"onUpdate:modelValue":c[1]||(c[1]=u=>nt(i)?i.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[mr,m(i)]]),c[7]||(c[7]=d("span",{class:"text-retro-muted text-sm"},"No fast-forward (always create merge commit)",-1))]),d("label",ik,[Je(d("input",{"onUpdate:modelValue":c[2]||(c[2]=u=>nt(o)?o.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[mr,m(o)]]),c[8]||(c[8]=d("span",{class:"text-retro-muted text-sm"},"Squash (combine all commits into one)",-1))])])]),_:1},8,["visible","loading","error"]))}}),ak={class:"text-retro-text text-sm font-mono mb-4"},lk={class:"text-retro-cyan"},ck={class:"space-y-3"},uk=["value"],hk={class:"flex items-center gap-2 cursor-pointer"},dk={class:"flex items-center gap-2 cursor-pointer"},fk=ze({__name:"PullDialog",props:{visible:{type:Boolean},branchName:{},remotes:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=M("origin"),i=M(!1),o=M(!1);function a(){n("confirm",{remote:s.value,noFastForward:i.value,squash:o.value})}return We(()=>t.visible,l=>{l&&(s.value=t.remotes.includes("origin")?"origin":t.remotes[0]??"origin",i.value=!1,o.value=!1)}),(l,c)=>(v(),be(Ut,{title:"Pull Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Pull",onClose:c[3]||(c[3]=u=>n("close")),onConfirm:a},{default:ht(()=>[d("p",ak,[c[4]||(c[4]=Ie(" Pull ",-1)),d("span",lk,_(r.branchName),1),c[5]||(c[5]=Ie(" from remote ",-1))]),d("div",ck,[d("div",null,[c[6]||(c[6]=d("label",{class:"text-retro-muted text-sm block mb-1"},"Remote",-1)),Je(d("select",{"onUpdate:modelValue":c[0]||(c[0]=u=>nt(s)?s.value=u:null),class:"w-full bg-retro-panel border border-retro-border rounded text-retro-text text-sm px-2 py-1.5 font-mono focus:outline-none focus:border-retro-cyan"},[(v(!0),y($e,null,Fe(r.remotes,u=>(v(),y("option",{key:u,value:u},_(u),9,uk))),128))],512),[[Os,m(s)]])]),d("label",hk,[Je(d("input",{"onUpdate:modelValue":c[1]||(c[1]=u=>nt(i)?i.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[mr,m(i)]]),c[7]||(c[7]=d("span",{class:"text-retro-muted text-sm"},"No fast-forward (always create merge commit)",-1))]),d("label",dk,[Je(d("input",{"onUpdate:modelValue":c[2]||(c[2]=u=>nt(o)?o.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[mr,m(o)]]),c[8]||(c[8]=d("span",{class:"text-retro-muted text-sm"},"Squash (combine all commits into one)",-1))])])]),_:1},8,["visible","loading","error"]))}}),pk={class:"text-retro-text text-sm font-mono mb-4"},mk={class:"text-retro-cyan"},gk={class:"space-y-3"},Ok=["value"],vk={class:"flex items-center gap-2 cursor-pointer"},bk=["checked"],xk={class:"flex items-center gap-2 cursor-pointer"},yk=["checked"],kk={key:0,class:"p-2 text-xs font-mono text-retro-yellow bg-retro-yellow/10 border border-retro-yellow/30 rounded"},wk=ze({__name:"PushDialog",props:{visible:{type:Boolean},branchName:{},remotes:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=M("origin"),i=M(!1),o=M(!1);function a(u){i.value=u,u&&(o.value=!1)}function l(u){o.value=u,u&&(i.value=!1)}function c(){n("confirm",{remote:s.value,force:i.value,forceWithLease:o.value})}return We(()=>t.visible,u=>{u&&(s.value=t.remotes.includes("origin")?"origin":t.remotes[0]??"origin",i.value=!1,o.value=!1)}),(u,h)=>(v(),be(Ut,{title:"Push Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Push",onClose:h[3]||(h[3]=p=>n("close")),onConfirm:c},{default:ht(()=>[d("p",pk,[h[4]||(h[4]=Ie(" Push ",-1)),d("span",mk,_(r.branchName),1),h[5]||(h[5]=Ie(" to remote ",-1))]),d("div",gk,[d("div",null,[h[6]||(h[6]=d("label",{class:"text-retro-muted text-sm block mb-1"},"Remote",-1)),Je(d("select",{"onUpdate:modelValue":h[0]||(h[0]=p=>nt(s)?s.value=p:null),class:"w-full bg-retro-panel border border-retro-border rounded text-retro-text text-sm px-2 py-1.5 font-mono focus:outline-none focus:border-retro-cyan"},[(v(!0),y($e,null,Fe(r.remotes,p=>(v(),y("option",{key:p,value:p},_(p),9,Ok))),128))],512),[[Os,m(s)]])]),d("label",vk,[d("input",{checked:m(i),type:"checkbox",class:"accent-retro-cyan",onChange:h[1]||(h[1]=p=>a(p.target.checked))},null,40,bk),h[7]||(h[7]=d("span",{class:"text-retro-muted text-sm"},"Force push",-1))]),d("label",xk,[d("input",{checked:m(o),type:"checkbox",class:"accent-retro-cyan",onChange:h[2]||(h[2]=p=>l(p.target.checked))},null,40,yk),h[8]||(h[8]=d("span",{class:"text-retro-muted text-sm"},"Force with lease (safer force push)",-1))]),m(i)||m(o)?(v(),y("div",kk,_(m(i)?"Force push will overwrite remote history. Use with caution.":"Force with lease will reject the push if the remote has been updated since your last fetch."),1)):K("",!0)])]),_:1},8,["visible","loading","error"]))}}),Sk={class:"text-retro-text text-sm font-mono mb-4"},$k={class:"text-retro-cyan"},Ck={class:"text-retro-cyan"},Qk={class:"p-2 text-xs font-mono text-retro-yellow bg-retro-yellow/10 border border-retro-yellow/30 rounded"},Pk={class:"text-retro-cyan"},Tk={class:"text-retro-cyan"},Mk=ze({__name:"RebaseDialog",props:{visible:{type:Boolean},branchName:{},ontoBranch:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e;return(n,s)=>(v(),be(Ut,{title:"Rebase Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Rebase",onClose:s[0]||(s[0]=i=>t("close")),onConfirm:s[1]||(s[1]=i=>t("confirm"))},{default:ht(()=>[d("p",Sk,[s[2]||(s[2]=Ie(" Rebase ",-1)),d("span",$k,_(r.branchName),1),s[3]||(s[3]=Ie(" onto ",-1)),d("span",Ck,_(r.ontoBranch),1)]),d("div",Qk,[s[4]||(s[4]=Ie(" This will rewrite commit history. Commits from ",-1)),d("span",Pk,_(r.branchName),1),s[5]||(s[5]=Ie(" will be replayed on top of ",-1)),d("span",Tk,_(r.ontoBranch),1),s[6]||(s[6]=Ie(". ",-1))])]),_:1},8,["visible","loading","error"]))}}),Ak={class:"mb-4 p-3 bg-retro-panel border border-retro-border rounded"},_k={class:"text-sm font-mono text-retro-cyan"},Rk={class:"text-xs font-mono text-retro-text mt-1 truncate"},Bk={class:"space-y-2"},Zk=["value"],Ek={key:0,class:"mt-3 p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},Dk=ze({__name:"ResetDialog",props:{visible:{type:Boolean},commitHash:{},commitMessage:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e,n=M("mixed"),s=[{value:"soft",label:"Soft",description:"Move HEAD, keep staged changes and working directory"},{value:"mixed",label:"Mixed",description:"Move HEAD, reset staging area, keep working directory"},{value:"hard",label:"Hard",description:"Move HEAD, reset staging area and working directory (DESTRUCTIVE)"}];function i(){t("confirm",{mode:n.value})}function o(){n.value="mixed",t("close")}return(a,l)=>(v(),be(Ut,{title:"Reset to Commit",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Reset","confirm-danger":m(n)==="hard",onClose:o,onConfirm:i},{default:ht(()=>[d("div",Ak,[l[1]||(l[1]=d("div",{class:"text-xs font-mono text-retro-muted mb-1"},"Reset to",-1)),d("div",_k,_(r.commitHash.slice(0,7)),1),d("div",Rk,_(r.commitMessage.split(`
|
|
11
|
+
`)[0]),1)]),d("div",Bk,[l[2]||(l[2]=d("div",{class:"text-xs font-mono text-retro-muted mb-2"},"Reset mode",-1)),(v(),y($e,null,Fe(s,c=>d("label",{key:c.value,class:Ze(["flex items-start gap-2 p-2 rounded cursor-pointer group border transition-colors",[m(n)===c.value?"border-retro-cyan bg-retro-cyan/5":"border-transparent hover:bg-retro-panel"]])},[Je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=u=>nt(n)?n.value=u:null),type:"radio",name:"reset-mode",value:c.value,class:"mt-0.5 accent-retro-cyan"},null,8,Zk),[[mc,m(n)]]),d("div",null,[d("span",{class:Ze(["text-sm font-mono transition-colors",[c.value==="hard"?"text-retro-red":"text-retro-text",m(n)===c.value?"text-retro-cyan":""]])},_(c.label),3),d("p",{class:Ze(["text-xs font-mono mt-0.5",c.value==="hard"?"text-retro-red/70":"text-retro-muted"])},_(c.description),3)])],2)),64))]),m(n)==="hard"?(v(),y("div",Ek," Warning: Hard reset will permanently discard all uncommitted changes in your working directory and staging area. This action cannot be undone. ")):K("",!0)]),_:1},8,["visible","loading","error","confirm-danger"]))}}),Lk={class:"space-y-3"},Xk={class:"flex items-start gap-2 cursor-pointer"},Ik={class:"flex items-start gap-2 cursor-pointer"},Vk={key:0,class:"mt-4 p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},zk=ze({__name:"ResetWorkingDialog",props:{visible:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=M("mixed"),i=ee(()=>s.value==="hard");function o(){n("confirm",{mode:s.value})}return We(()=>t.visible,a=>{a&&(s.value="mixed")}),(a,l)=>(v(),be(Ut,{title:"Reset Working Directory",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Reset","confirm-danger":m(i),onClose:l[2]||(l[2]=c=>n("close")),onConfirm:o},{default:ht(()=>[l[5]||(l[5]=d("p",{class:"text-retro-text text-sm font-mono mb-4"}," Reset the working directory to HEAD. ",-1)),d("div",Lk,[d("label",Xk,[Je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>nt(s)?s.value=c:null),type:"radio",value:"mixed",name:"reset-mode",class:"accent-retro-cyan mt-0.5"},null,512),[[mc,m(s)]]),l[3]||(l[3]=d("div",null,[d("span",{class:"text-retro-text text-sm font-mono"},"Mixed"),d("p",{class:"text-retro-muted text-xs font-mono mt-0.5"}," Reset staging area, keep working directory ")],-1))]),d("label",Ik,[Je(d("input",{"onUpdate:modelValue":l[1]||(l[1]=c=>nt(s)?s.value=c:null),type:"radio",value:"hard",name:"reset-mode",class:"accent-retro-cyan mt-0.5"},null,512),[[mc,m(s)]]),l[4]||(l[4]=d("div",null,[d("span",{class:"text-retro-text text-sm font-mono"},"Hard"),d("p",{class:"text-retro-muted text-xs font-mono mt-0.5"}," Reset staging area AND working directory (DESTRUCTIVE) ")],-1))])]),m(i)?(v(),y("div",Vk," WARNING: Hard reset will permanently discard all uncommitted changes. This cannot be undone. ")):K("",!0)]),_:1},8,["visible","loading","error","confirm-danger"]))}}),Nk={class:"space-y-4"},Wk={class:"flex items-center gap-2 cursor-pointer"},jk=ze({__name:"StashDialog",props:{visible:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=M(""),i=M(!1);function o(){n("confirm",{message:s.value.trim()||void 0,includeUntracked:i.value})}return We(()=>t.visible,a=>{a&&(s.value="",i.value=!1)}),(a,l)=>(v(),be(Ut,{title:"Stash Changes",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Stash",onClose:l[2]||(l[2]=c=>n("close")),onConfirm:o},{default:ht(()=>[l[5]||(l[5]=d("p",{class:"text-retro-text text-sm font-mono mb-4"}," Save uncommitted changes to the stash. ",-1)),d("div",Nk,[d("div",null,[l[3]||(l[3]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Message (optional)",-1)),Je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>nt(s)?s.value=c:null),type:"text",placeholder:"Stash description...",class:"w-full px-2 py-1.5 text-sm font-mono bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted/50 focus:outline-none focus:border-retro-cyan"},null,512),[[Lt,m(s)]])]),d("label",Wk,[Je(d("input",{"onUpdate:modelValue":l[1]||(l[1]=c=>nt(i)?i.value=c:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[mr,m(i)]]),l[4]||(l[4]=d("span",{class:"text-retro-muted text-sm"},"Include untracked files",-1))])])]),_:1},8,["visible","loading","error"]))}}),qk={class:"mb-4 p-3 bg-retro-panel border border-retro-border rounded"},Yk={class:"text-sm font-mono text-retro-cyan"},Fk={class:"mb-4"},Uk={class:"mb-3"},Gk={class:"flex items-start gap-2 cursor-pointer group"},Hk={key:0,class:"mb-4"},Kk={class:"space-y-2"},Jk={class:"flex items-start gap-2 cursor-pointer group"},ew=["disabled"],tw={key:0,class:"ml-6"},rw=["value"],nw=ze({__name:"TagCreateDialog",props:{visible:{type:Boolean},commitHash:{},remotes:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e,n=M(""),s=M(!1),i=M(""),o=M(!1),a=M(""),l=ee(()=>n.value.trim().length>0);function c(){if(!l.value)return;const h={name:n.value.trim(),annotated:s.value};s.value&&i.value.trim()&&(h.message=i.value.trim()),o.value&&a.value&&(h.pushToRemote=a.value),t("confirm",h)}function u(){n.value="",s.value=!1,i.value="",o.value=!1,a.value="",t("close")}return We(()=>s.value,h=>{h||(i.value="")}),(h,p)=>(v(),be(Ut,{title:"Create Tag",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Create Tag",onClose:u,onConfirm:c},{default:ht(()=>[d("div",qk,[p[5]||(p[5]=d("div",{class:"text-xs font-mono text-retro-muted mb-1"},"At commit",-1)),d("div",Yk,_(r.commitHash.slice(0,7)),1)]),d("div",Fk,[p[6]||(p[6]=d("label",{class:"block text-xs font-mono text-retro-muted mb-1.5"},"Tag name",-1)),Je(d("input",{"onUpdate:modelValue":p[0]||(p[0]=f=>nt(n)?n.value=f:null),type:"text",placeholder:"v1.0.0",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan"},null,512),[[Lt,m(n)]])]),d("div",Uk,[d("label",Gk,[Je(d("input",{"onUpdate:modelValue":p[1]||(p[1]=f=>nt(s)?s.value=f:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan"},null,512),[[mr,m(s)]]),p[7]||(p[7]=d("div",null,[d("span",{class:"text-sm font-mono text-retro-text group-hover:text-retro-cyan transition-colors"}," Annotated tag "),d("p",{class:"text-xs font-mono text-retro-muted mt-0.5"}," Create a full tag object with message and tagger info ")],-1))])]),m(s)?(v(),y("div",Hk,[p[8]||(p[8]=d("label",{class:"block text-xs font-mono text-retro-muted mb-1.5"},"Tag message",-1)),Je(d("textarea",{"onUpdate:modelValue":p[2]||(p[2]=f=>nt(i)?i.value=f:null),rows:"3",placeholder:"Release description...",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan resize-none"},null,512),[[Lt,m(i)]])])):K("",!0),d("div",Kk,[d("label",Jk,[Je(d("input",{"onUpdate:modelValue":p[3]||(p[3]=f=>nt(o)?o.value=f:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan",disabled:r.remotes.length===0},null,8,ew),[[mr,m(o)]]),d("div",null,[d("span",{class:Ze(["text-sm font-mono transition-colors",r.remotes.length===0?"text-retro-muted":"text-retro-text group-hover:text-retro-cyan"])}," Push to remote ",2)])]),m(o)&&r.remotes.length>0?(v(),y("div",tw,[Je(d("select",{"onUpdate:modelValue":p[4]||(p[4]=f=>nt(a)?a.value=f:null),class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text focus:outline-none focus:border-retro-cyan"},[p[9]||(p[9]=d("option",{value:"",disabled:"",class:"text-retro-muted"},"Select remote",-1)),(v(!0),y($e,null,Fe(r.remotes,f=>(v(),y("option",{key:f,value:f},_(f),9,rw))),128))],512),[[Os,m(a)]])])):K("",!0)])]),_:1},8,["visible","loading","error"]))}}),sw={class:"text-retro-text text-sm font-mono mb-2"},iw={class:"text-retro-cyan"},ow={class:"space-y-3 mt-4"},aw={class:"flex items-center gap-2 cursor-pointer"},lw={key:0,class:"ml-6"},cw=["value"],uw=ze({__name:"TagDeleteDialog",props:{visible:{type:Boolean},tagName:{},remotes:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=M(!1),i=M("origin");function o(){n("confirm",{deleteFromRemote:s.value,remote:s.value?i.value:void 0})}return We(()=>t.visible,a=>{a&&(s.value=!1,i.value=t.remotes.includes("origin")?"origin":t.remotes[0]??"origin")}),(a,l)=>(v(),be(Ut,{title:"Delete Tag",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Delete","confirm-danger":!0,onClose:l[2]||(l[2]=c=>n("close")),onConfirm:o},{default:ht(()=>[l[7]||(l[7]=d("div",{class:"mb-4 p-2 text-xs font-mono text-retro-yellow bg-retro-yellow/10 border border-retro-yellow/30 rounded"}," This action is permanent and cannot be undone. ",-1)),d("p",sw,[l[3]||(l[3]=Ie(" Delete tag ",-1)),d("span",iw,_(r.tagName),1),l[4]||(l[4]=Ie("? ",-1))]),d("div",ow,[d("label",aw,[Je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>nt(s)?s.value=c:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[mr,m(s)]]),l[5]||(l[5]=d("span",{class:"text-retro-muted text-sm"},"Also delete from remote",-1))]),m(s)?(v(),y("div",lw,[l[6]||(l[6]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Remote",-1)),Je(d("select",{"onUpdate:modelValue":l[1]||(l[1]=c=>nt(i)?i.value=c:null),class:"w-full px-2 py-1.5 text-sm font-mono bg-retro-panel border border-retro-border rounded text-retro-text focus:outline-none focus:border-retro-cyan"},[(v(!0),y($e,null,Fe(r.remotes,c=>(v(),y("option",{key:c,value:c},_(c),9,cw))),128))],512),[[Os,m(i)]])])):K("",!0)])]),_:1},8,["visible","loading","error"]))}}),hw={class:"mb-4"},dw={class:"text-retro-cyan text-sm font-mono"},fw={class:"mb-4"},pw={class:"text-retro-text text-sm font-mono"},mw={class:"mb-4"},gw={class:"text-retro-text text-sm font-mono break-all select-all"},Ow={class:"mb-4"},vw={class:"text-retro-text text-sm font-mono"},bw={class:"text-retro-muted"},xw={class:"mb-4"},yw={class:"text-retro-text text-sm font-mono"},kw={key:1,class:"mb-2"},ww={class:"p-2 text-sm font-mono text-retro-text bg-retro-panel border border-retro-border rounded whitespace-pre-wrap"},Sw={key:1,class:"text-retro-muted text-sm font-mono text-center py-4"},$w=ze({__name:"TagDetailDialog",props:{visible:{type:Boolean},tagName:{},tagDetail:{},loading:{type:Boolean,default:!1}},emits:["close"],setup(r,{emit:e}){const t=e;return(n,s)=>(v(),be(Ut,{title:"Tag Details",visible:r.visible,loading:r.loading,"confirm-label":"Close","cancel-label":"Close",onClose:s[0]||(s[0]=i=>t("close")),onConfirm:s[1]||(s[1]=i=>t("close"))},{default:ht(()=>[d("div",hw,[s[2]||(s[2]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Tag",-1)),d("p",dw,_(r.tagName),1)]),r.tagDetail?(v(),y($e,{key:0},[d("div",fw,[s[3]||(s[3]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Type",-1)),d("p",pw,_(r.tagDetail.isAnnotated?"Annotated":"Lightweight"),1)]),d("div",mw,[s[4]||(s[4]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Hash",-1)),d("p",gw,_(r.tagDetail.hash),1)]),r.tagDetail.tagger?(v(),y($e,{key:0},[d("div",Ow,[s[5]||(s[5]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Tagger",-1)),d("p",vw,[Ie(_(r.tagDetail.tagger.name)+" ",1),d("span",bw,"<"+_(r.tagDetail.tagger.email)+">",1)])]),d("div",xw,[s[6]||(s[6]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Date",-1)),d("p",yw,_(r.tagDetail.tagger.date),1)])],64)):K("",!0),r.tagDetail.message?(v(),y("div",kw,[s[7]||(s[7]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Message",-1)),d("div",ww,_(r.tagDetail.message),1)])):K("",!0)],64)):r.loading?(v(),y("div",Sw," Loading tag details... ")):K("",!0)]),_:1},8,["visible","loading"]))}}),Tu=globalThis.setInterval,Cw={class:"h-full flex flex-col bg-retro-dark",role:"region","aria-label":"Git Graph"},Qw={key:0,class:"flex-1 flex flex-col items-center justify-center gap-3"},Pw={key:1,class:"flex-1 flex flex-col items-center justify-center p-8 text-center"},Tw={key:2,class:"flex-1 flex flex-col items-center justify-center p-8 text-center"},Mw={class:"text-retro-red text-sm mb-4"},Aw={key:3,class:"flex-1 flex items-center justify-center p-4"},_w={class:"flex-shrink-0 flex items-center gap-2 p-2 border-b border-retro-border"},Rw={class:"relative"},Bw={key:0,class:"absolute left-0 top-full mt-1 z-10 bg-retro-panel border border-retro-border rounded shadow-lg py-2 min-w-[200px]"},Zw={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},Ew=["checked"],Dw={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},Lw=["checked"],Xw={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},Iw=["checked"],Vw={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},zw=["checked"],Nw={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},Ww=["checked"],jw={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},qw=["checked"],Yw={class:"relative"},Fw=["aria-expanded"],Uw={key:0,class:"text-xs"},Gw={key:0,class:"absolute right-0 top-full mt-1 z-10 bg-retro-panel border border-retro-border rounded shadow-lg py-1 min-w-[220px] max-h-[400px] overflow-auto"},Hw=["checked","onChange"],Kw={class:"text-sm text-retro-text truncate"},Jw={key:0,class:"text-[10px] text-retro-cyan"},eS={class:"px-3 py-1 text-[10px] text-retro-orange font-semibold uppercase tracking-wider mt-1"},tS=["checked","onChange"],rS={class:"text-sm text-retro-text truncate"},nS={class:"relative"},sS={key:0,class:"absolute right-0 top-full mt-1 z-20"},iS=["title"],oS={class:"text-retro-muted text-sm"},aS={class:"text-retro-cyan font-mono"},lS={class:"space-y-3"},cS={class:"text-retro-muted text-sm"},uS={class:"text-retro-cyan font-mono"},hS={class:"space-y-3"},dS={class:"text-retro-muted text-sm"},fS={class:"text-retro-magenta font-mono"},pS={key:0,class:"fixed bottom-4 right-4 z-50 flex items-center gap-2 px-4 py-2.5 text-sm bg-retro-red/90 text-white rounded-lg shadow-lg max-w-sm",role:"alert"},mS={class:"flex-1"},gS=5e3,OS=ze({__name:"GitGraph",props:{workingDirectory:{},isActive:{type:Boolean,default:!0}},setup(r){const e=r,t=ll(),n=gr(),s=_y(),i=By(t),o=Zy(t,i),{checkoutDialog:a,confirmCheckout:l,createBranchDialog:c,confirmCreateBranch:u,deleteBranchDialog:h,confirmDeleteBranch:p,renameDialog:f,confirmRenameBranch:g,mergeDialog:O,confirmMerge:x,rebaseDialog:b,confirmRebase:w,pushDialog:Q,confirmPush:P,pullDialog:E,confirmPull:j,cherryPickDialog:z,confirmCherryPick:ae,resetDialog:ce,confirmReset:Oe,tagCreateDialog:W,confirmTagCreate:L,tagDeleteDialog:Z,confirmTagDelete:F,tagDetailDialog:q,stashDialog:N,confirmStash:X,stashBranchDialog:I,stashBranchInput:xe,confirmStashBranch:J,resetWorkingDialog:fe,confirmResetWorking:S,cleanUntrackedDialog:k,confirmCleanUntracked:A,isAnyDialogOpen:R}=i,{copyFeedback:H,branchMenu:oe,handleBranchContextMenu:ye,closeBranchMenu:Xe,handleBranchCheckout:Re,handleBranchRename:Ge,handleBranchDelete:Ue,handleBranchMerge:pe,handleBranchRebase:Qe,handleBranchPush:le,handleBranchPull:he,handleBranchFetch:Y,handleBranchCopyName:Me,handleBranchCreateBranch:Ve,commitMenu:Ne,handleCommitContextMenu:Rt,closeCommitMenu:qt,handleCommitAddTag:an,handleCommitCreateBranch:sr,handleCommitCheckout:Dr,handleCommitCherryPick:Pr,handleCommitRevert:jn,handleCommitMergeInto:ln,handleCommitReset:cn,handleCommitCopyHash:$n,handleCommitCopySubject:qn,tagMenu:xt,handleTagContextMenu:Lr,closeTagMenu:G,handleTagViewDetails:de,handleTagDelete:se,handleTagPush:ve,handleTagCopyName:Be,uncommittedMenu:qe,closeUncommittedMenu:He,handleUncommittedStash:lt,handleUncommittedReset:oi,handleUncommittedClean:ai,stashMenu:Xr,handleStashContextMenu:li,closeStashMenu:ci,handleStashApply:ui,handleStashPop:hi,handleStashDrop:di,handleStashCreateBranch:fi,handleStashCopyName:pi,handleStashCopyHash:mi}=o,gi=ee(()=>{const Ae=n.activeConversation?.worktreeBranch;return Ae?[Ae]:[]}),Oi=ee(()=>{const Ae=[],U=t.selectedFeatureId;U&&Ae.push(U);const yt=t.conversationBranch;return yt&&!Ae.includes(yt)&&Ae.push(yt),Ae});We(()=>[n.activeConversation?.worktreeBranch,n.activeConversation?.baseBranch],([Ae,U])=>{t.setConversationBranch(Ae??null,U??null)},{immediate:!0});const vi=ee(()=>{const Ae=t.previewBranch;return Ae?[Ae]:[]});We(()=>[n.previewingConversation?.worktreeBranch,n.previewingConversation?.baseBranch],([Ae,U])=>{t.setPreviewBranch(Ae??null,U??null)},{immediate:!0});const bi=ee(()=>{const Ae={};return t.previewBranch&&t.previewMergeBase&&(Ae[t.previewBranch]=t.previewMergeBase),Ae}),It=ee(()=>{const Ae={};return t.selectedFeatureId&&t.featureMergeBase&&(Ae[t.selectedFeatureId]=t.featureMergeBase),t.conversationBranch&&t.conversationMergeBase&&(Ae[t.conversationBranch]=t.conversationMergeBase),Ae}),Vt=ee(()=>t.remotes.map(Ae=>Ae.name)),Yn=M(null);We(()=>e.workingDirectory,async Ae=>{if(Ae){await t.loadGitGraph(Ae);const U=n.previewingConversation?.worktreeBranch;U&&await t.setPreviewBranch(U,n.previewingConversation?.baseBranch??null);const yt=n.activeConversation?.worktreeBranch;yt&&await t.setConversationBranch(yt,n.activeConversation?.baseBranch??null)}},{immediate:!0}),We(()=>e.isActive,Ae=>{Ae&&t.commits.length>0&&!t.error?s.startPolling(e.workingDirectory):s.stopPolling()},{immediate:!0}),We(()=>t.commits.length,Ae=>{Ae>0&&e.isActive&&!t.error&&s.startPolling(e.workingDirectory)}),We(()=>Yn.value,Ae=>{Ae&&s.setScrollCallbacks({getScrollPosition:()=>Ae.getScrollPosition(),setScrollPosition:U=>Ae.setScrollPosition(U)})}),Qt(()=>{s.cleanup(),t.reset()});const Cn=ee(()=>t.error?.includes("Not a Git repository")),un=M(Date.now());let Ir=null;const vs=()=>{Ir||(Ir=Tu(()=>{un.value=Date.now()},gS))},bs=()=>{Ir&&(clearInterval(Ir),Ir=null)};Ot(()=>{We(()=>e.isActive,Ae=>{Ae?(un.value=Date.now(),vs()):bs()},{immediate:!0})}),Qt(()=>{bs()});const xs=ee(()=>{const Ae=t.lastRefreshTime;if(!Ae)return null;const U=Math.floor((un.value-Ae)/1e3);return t.isRefreshing?"Syncing...":U<5?"Just now":U<60?`${U}s ago`:`${Math.floor(U/60)}m ago`}),Vr=M(!1),ir=M(!1),St=M(null);function ys(){Vr.value=!0,nr(()=>St.value?.focus())}function Fn(){Vr.value=!1,t.setSearchQuery("")}function xi(Ae){t.setSearchQuery(Ae)}const Un=Ry({onScrollToHead:()=>{const Ae=t.commits.find(U=>U.isHead);Ae&&t.selectCommit(Ae)},onEscape:()=>{zr.value?zr.value=!1:ir.value?ir.value=!1:Tr.value?Tr.value=!1:Vr.value?Fn():t.isComparing?t.clearComparison():(t.selectedCommit||t.isUncommittedChangesSelected)&&t.clearSelection()}});Ot(()=>{Un.start()}),Qt(()=>{Un.stop()});const zr=M(!1),Tr=M(!1);async function ks(){await t.fetchAll(!0)}async function Gn(Ae){await t.addRemote(Ae.name,Ae.url)}async function yi(Ae){await t.editRemote(Ae.name,Ae.newUrl)}async function ki(Ae){await t.deleteRemote(Ae)}const Hn=ee(()=>{const Ae=[],U={};for(const yt of t.branches)if(t.localBranchNames.has(yt.name))Ae.push(yt);else{const C=yt.name.indexOf("/");if(C>0){const B=yt.name.substring(0,C);U[B]||(U[B]=[]),U[B].push(yt)}else Ae.push(yt)}return{local:Ae,remotes:U}});We(R,Ae=>{Ae?t.setActiveDialog({type:"generic",props:{}}):t.clearActiveDialog()});function wi(Ae){t.selectedCommit?t.selectComparisonCommit(Ae):t.selectCommit(Ae)}function hn(Ae){t.navigateToCommit(Ae)}return(Ae,U)=>{const yt=mv,C=Mv,B=rb,T=kb,D=Xx,ie=ly,me=Oy,ue=vy,ke=by,Ke=xy,it=yy,Bt=Ut;return v(),y("div",Cw,[m(t).loading&&m(t).commits.length===0?(v(),y("div",Qw,[...U[43]||(U[43]=[d("div",{class:"w-6 h-6 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"},null,-1),d("div",{class:"text-retro-muted text-sm"},"Loading git history...",-1)])])):m(Cn)?(v(),y("div",Pw,[te(m(Zn),{class:"w-12 h-12 text-retro-yellow mb-4"}),U[44]||(U[44]=d("h3",{class:"text-retro-text font-semibold mb-2"},"Not a Git Repository",-1)),U[45]||(U[45]=d("p",{class:"text-retro-muted text-sm max-w-xs"},[Ie(" This directory is not initialized as a Git repository. Run "),d("code",{class:"text-retro-cyan"},"git init"),Ie(" to get started. ")],-1))])):m(t).error?(v(),y("div",Tw,[te(m(Zn),{class:"w-10 h-10 text-retro-red mb-3"}),d("p",Mw,_(m(t).error),1),d("button",{class:"flex items-center gap-2 px-3 py-1.5 text-sm text-retro-text border border-retro-border rounded hover:border-retro-cyan hover:text-retro-cyan transition-colors",onClick:U[0]||(U[0]=Ee=>m(t).loadGitGraph(e.workingDirectory))},[te(m(ds),{class:"w-4 h-4"}),U[46]||(U[46]=Ie(" Retry ",-1))])])):m(t).commits.length===0?(v(),y("div",Aw,[...U[47]||(U[47]=[d("div",{class:"text-retro-muted text-center"},[d("p",null,"No commits found in this repository.")],-1)])])):(v(),y($e,{key:4},[m(Vr)?(v(),be(yt,{key:0,ref_key:"findWidgetRef",ref:St,resultCount:m(t).searchResultHashes.length,currentIndex:m(t).searchResultIndex,onSearch:xi,onNext:m(t).nextSearchResult,onPrev:m(t).prevSearchResult,onClose:Fn},null,8,["resultCount","currentIndex","onNext","onPrev"])):K("",!0),d("div",_w,[d("button",{class:Ze(["flex items-center gap-1 px-2 py-1.5 text-sm border rounded transition-colors",m(Vr)?"border-retro-cyan text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text"]),"aria-label":"Find",title:"Find",onClick:U[1]||(U[1]=Ee=>m(Vr)?Fn():ys())},[te(m(us),{class:"w-4 h-4"})],2),d("div",Rw,[d("button",{class:Ze(["flex items-center gap-1 px-2 py-1.5 text-sm border rounded transition-colors",m(zr)?"border-retro-cyan text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text"]),"aria-label":"Graph settings",title:"Settings",onClick:U[2]||(U[2]=Ee=>zr.value=!m(zr))},[te(m(E1),{class:"w-4 h-4"})],2),m(zr)?(v(),y("div",Bw,[U[54]||(U[54]=d("div",{class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border mb-1"}," Graph Style ",-1)),d("label",Zw,[d("input",{type:"radio",name:"graphStyle",value:"rounded",checked:m(t).graphStyle==="rounded",class:"accent-retro-cyan",onChange:U[3]||(U[3]=Ee=>m(t).setGraphStyle("rounded"))},null,40,Ew),U[48]||(U[48]=d("span",{class:"text-sm text-retro-text"},"Rounded",-1))]),d("label",Dw,[d("input",{type:"radio",name:"graphStyle",value:"angular",checked:m(t).graphStyle==="angular",class:"accent-retro-cyan",onChange:U[4]||(U[4]=Ee=>m(t).setGraphStyle("angular"))},null,40,Lw),U[49]||(U[49]=d("span",{class:"text-sm text-retro-text"},"Angular",-1))]),U[55]||(U[55]=d("div",{class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border mt-2 mb-1"}," Display ",-1)),d("label",Xw,[d("input",{type:"checkbox",checked:m(t).muteNonAncestral,class:"accent-retro-cyan",onChange:U[5]||(U[5]=Ee=>m(t).toggleMuteNonAncestral())},null,40,Iw),U[50]||(U[50]=d("span",{class:"text-sm text-retro-text"},"Mute non-ancestral",-1))]),U[56]||(U[56]=d("div",{class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border mt-2 mb-1"}," Columns ",-1)),d("label",Vw,[d("input",{type:"checkbox",checked:m(t).columnVisibility.commit!==!1,class:"accent-retro-cyan",onChange:U[6]||(U[6]=Ee=>m(t).toggleColumnVisibility("commit"))},null,40,zw),U[51]||(U[51]=d("span",{class:"text-sm text-retro-text"},"Hash",-1))]),d("label",Nw,[d("input",{type:"checkbox",checked:m(t).columnVisibility.author!==!1,class:"accent-retro-cyan",onChange:U[7]||(U[7]=Ee=>m(t).toggleColumnVisibility("author"))},null,40,Ww),U[52]||(U[52]=d("span",{class:"text-sm text-retro-text"},"Author",-1))]),d("label",jw,[d("input",{type:"checkbox",checked:m(t).columnVisibility.date!==!1,class:"accent-retro-cyan",onChange:U[8]||(U[8]=Ee=>m(t).toggleColumnVisibility("date"))},null,40,qw),U[53]||(U[53]=d("span",{class:"text-sm text-retro-text"},"Date",-1))])])):K("",!0)]),U[59]||(U[59]=d("span",{class:"flex-1"},null,-1)),d("div",Yw,[d("button",{class:Ze(["flex items-center gap-1 px-2 py-1.5 text-sm border rounded transition-colors",m(ir)||m(t).filteredBranches.length>0?"border-retro-cyan text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text"]),"aria-label":"Filter by branch","aria-expanded":m(ir),onClick:U[9]||(U[9]=Ee=>ir.value=!m(ir))},[te(m(tv),{class:"w-4 h-4"}),m(t).filteredBranches.length>0?(v(),y("span",Uw," ("+_(m(t).filteredBranches.length)+") ",1)):K("",!0)],10,Fw),m(ir)?(v(),y("div",Gw,[U[58]||(U[58]=d("div",{class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border"}," Filter by Branch ",-1)),m(t).filteredBranches.length>0?(v(),y("button",{key:0,class:"w-full text-left px-3 py-1.5 text-sm text-retro-cyan hover:bg-retro-cyan/10",onClick:U[10]||(U[10]=Ee=>m(t).clearFilters())}," Clear All Filters ")):K("",!0),m(Hn).local.length>0?(v(),y($e,{key:1},[U[57]||(U[57]=d("div",{class:"px-3 py-1 text-[10px] text-retro-green font-semibold uppercase tracking-wider mt-1"}," Local ",-1)),(v(!0),y($e,null,Fe(m(Hn).local,Ee=>(v(),y("label",{key:Ee.name,class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},[d("input",{type:"checkbox",checked:m(t).filteredBranches.includes(Ee.name),class:"accent-retro-cyan",onChange:or=>m(t).toggleBranchFilter(Ee.name)},null,40,Hw),d("span",Kw,_(Ee.name),1),Ee.isHead?(v(),y("span",Jw,"(HEAD)")):K("",!0)]))),128))],64)):K("",!0),(v(!0),y($e,null,Fe(m(Hn).remotes,(Ee,or)=>(v(),y($e,{key:or},[d("div",eS,_(or),1),(v(!0),y($e,null,Fe(Ee,ws=>(v(),y("label",{key:ws.name,class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},[d("input",{type:"checkbox",checked:m(t).filteredBranches.includes(ws.name),class:"accent-retro-cyan",onChange:Mh=>m(t).toggleBranchFilter(ws.name)},null,40,tS),d("span",rS,_(ws.name),1)]))),128))],64))),128))])):K("",!0)]),d("button",{class:Ze(["flex items-center gap-1 px-2 py-1.5 text-sm border border-retro-border text-retro-muted rounded hover:text-retro-text hover:border-retro-text transition-colors",{"animate-spin":m(t).isRefreshing}]),"aria-label":"Refresh",title:"Refresh",onClick:U[11]||(U[11]=Ee=>m(t).loadGitGraph(e.workingDirectory))},[te(m(ds),{class:"w-4 h-4"})],2),d("button",{class:"flex items-center gap-1 px-2 py-1.5 text-sm border border-retro-border text-retro-muted rounded hover:text-retro-text hover:border-retro-text transition-colors","aria-label":"Fetch all remotes",title:"Fetch All",onClick:ks},[te(m(jp),{class:"w-4 h-4"})]),d("div",nS,[d("button",{class:Ze(["flex items-center gap-1 px-2 py-1.5 text-sm border rounded transition-colors",m(Tr)?"border-retro-cyan text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text"]),"aria-label":"Manage remotes",title:"Remotes",onClick:U[12]||(U[12]=Ee=>Tr.value=!m(Tr))},[te(m(qp),{class:"w-4 h-4"})],2),m(Tr)?(v(),y("div",sS,[te(C,{remotes:m(t).remotes,onAdd:Gn,onEdit:yi,onDelete:ki,onClose:U[13]||(U[13]=Ee=>Tr.value=!1)},null,8,["remotes"])])):K("",!0)]),m(xs)&&e.isActive?(v(),y("div",{key:0,class:Ze(["flex items-center text-[10px] text-retro-muted",{"text-retro-cyan":m(t).isRefreshing}]),title:m(t).lastRefreshTime?`Last checked: ${new Date(m(t).lastRefreshTime).toLocaleTimeString()}`:"","aria-live":"polite","aria-atomic":"true"},[d("span",{class:Ze(["inline-block w-1.5 h-1.5 rounded-full mr-1",m(t).isRefreshing?"bg-retro-cyan animate-pulse":"bg-retro-muted/50"]),"aria-hidden":"true"},null,2),Ie(" "+_(m(xs)),1)],10,iS)):K("",!0)]),d("div",{class:Ze(["flex-1 min-h-0 overflow-hidden",{"max-h-[50%]":m(t).selectedCommit||m(t).isUncommittedChangesSelected}])},[te(B,{ref_key:"commitListRef",ref:Yn,commits:m(t).filteredCommits,stashes:m(t).stashes,selectedCommit:m(t).selectedCommit,hasMore:m(t).hasMore,loading:m(t).loading,loadingMore:m(t).loadingMore,searchQuery:m(t).searchQuery,uncommittedChangesCount:m(t).uncommittedChangesCount,isUncommittedChangesSelected:m(t).isUncommittedChangesSelected,highlightBranches:m(gi),featureHighlightBranches:m(Oi),featureMergeBases:m(It),previewHighlightBranches:m(vi),previewMergeBases:m(bi),currentBranchName:m(t).currentBranch?.name,localBranchNames:m(t).localBranchNames,graphStyle:m(t).graphStyle,muteNonAncestral:m(t).muteNonAncestral,columnVisibility:m(t).columnVisibility,onSelect:m(t).selectCommit,onLoadMore:m(t).loadMoreCommits,onBranchContextMenu:m(ye),onCommitContextMenu:m(Rt),onTagContextMenu:m(Lr),onStashContextMenu:m(li),onCompareSelect:wi,onSelectUncommittedChanges:m(t).selectUncommittedChanges,onScrollStart:m(s).startInteraction,onScrollEnd:m(s).endInteraction},null,8,["commits","stashes","selectedCommit","hasMore","loading","loadingMore","searchQuery","uncommittedChangesCount","isUncommittedChangesSelected","highlightBranches","featureHighlightBranches","featureMergeBases","previewHighlightBranches","previewMergeBases","currentBranchName","localBranchNames","graphStyle","muteNonAncestral","columnVisibility","onSelect","onLoadMore","onBranchContextMenu","onCommitContextMenu","onTagContextMenu","onStashContextMenu","onSelectUncommittedChanges","onScrollStart","onScrollEnd"])],2),m(t).isComparing&&m(t).selectedCommit&&m(t).comparisonCommit?(v(),be(T,{key:1,fromCommit:m(t).comparisonCommit,toCommit:m(t).selectedCommit,files:m(t).comparisonFiles,stats:m(t).comparisonStats,loading:m(t).comparisonLoading,onClose:m(t).clearComparison},null,8,["fromCommit","toCommit","files","stats","loading","onClose"])):m(t).selectedCommit?(v(),be(D,{key:2,commit:m(t).selectedCommit,files:m(t).selectedCommitFiles,stats:m(t).selectedCommitStats,loading:m(t).isLoadingDetails,detailPosition:m(t).detailViewPosition,onClose:m(t).clearSelection,onNavigateToCommit:hn,onTogglePosition:m(t).toggleDetailViewPosition,onOpenFileDiff:U[14]||(U[14]=Ee=>m(t).selectedCommit&&m(t).openFileDiff(m(t).selectedCommit.hash,Ee))},null,8,["commit","files","stats","loading","detailPosition","onClose","onTogglePosition"])):K("",!0),m(t).isUncommittedChangesSelected?(v(),be(ie,{key:3,stagedFiles:m(t).stagedFiles,unstagedFiles:m(t).unstagedFiles,isStaging:m(t).isStaging,isCommitting:m(t).isCommitting,onClose:m(t).clearSelection,onStageFiles:U[15]||(U[15]=Ee=>m(t).stageFiles(Ee)),onUnstageFiles:U[16]||(U[16]=Ee=>m(t).unstageFiles(Ee)),onStageAll:U[17]||(U[17]=()=>m(t).stageFiles([])),onUnstageAll:U[18]||(U[18]=()=>m(t).unstageFiles([])),onCommit:U[19]||(U[19]=Ee=>m(t).commitChanges(Ee))},null,8,["stagedFiles","unstagedFiles","isStaging","isCommitting","onClose"])):K("",!0)],64)),m(oe).visible?(v(),be(me,{key:5,branchName:m(oe).branch,isCurrentBranch:m(oe).isCurrentBranch,isLocal:m(oe).isLocal,x:m(oe).x,y:m(oe).y,onClose:m(Xe),onCheckout:m(Re),onCreateBranch:m(Ve),onDeleteBranch:m(Ue),onRename:m(Ge),onMerge:m(pe),onRebase:m(Qe),onPush:m(le),onPull:m(he),onFetch:m(Y),onCopyName:m(Me)},null,8,["branchName","isCurrentBranch","isLocal","x","y","onClose","onCheckout","onCreateBranch","onDeleteBranch","onRename","onMerge","onRebase","onPush","onPull","onFetch","onCopyName"])):K("",!0),m(Ne).visible&&m(Ne).commit?(v(),be(ue,{key:6,commit:m(Ne).commit,x:m(Ne).x,y:m(Ne).y,onClose:m(qt),onAddTag:m(an),onCreateBranch:m(sr),onCheckout:m(Dr),onCherryPick:m(Pr),onRevert:m(jn),onMergeInto:m(ln),onReset:m(cn),onCopyHash:m($n),onCopySubject:m(qn)},null,8,["commit","x","y","onClose","onAddTag","onCreateBranch","onCheckout","onCherryPick","onRevert","onMergeInto","onReset","onCopyHash","onCopySubject"])):K("",!0),m(xt).visible?(v(),be(ke,{key:7,tagName:m(xt).tag,x:m(xt).x,y:m(xt).y,onClose:m(G),onViewDetails:m(de),onDeleteTag:m(se),onPushTag:m(ve),onCopyName:m(Be)},null,8,["tagName","x","y","onClose","onViewDetails","onDeleteTag","onPushTag","onCopyName"])):K("",!0),m(Xr).visible&&m(Xr).stash?(v(),be(Ke,{key:8,stashIndex:m(Xr).stash.index,stashMessage:m(Xr).stash.message,x:m(Xr).x,y:m(Xr).y,onClose:m(ci),onApply:m(ui),onPop:m(hi),onDrop:m(di),onCreateBranch:m(fi),onCopyName:m(pi),onCopyHash:m(mi)},null,8,["stashIndex","stashMessage","x","y","onClose","onApply","onPop","onDrop","onCreateBranch","onCopyName","onCopyHash"])):K("",!0),m(qe).visible?(v(),be(it,{key:9,x:m(qe).x,y:m(qe).y,onClose:m(He),onStash:m(lt),onReset:m(oi),onClean:m(ai)},null,8,["x","y","onClose","onStash","onReset","onClean"])):K("",!0),m(a).visible?(v(),be(Bt,{key:10,title:"Checkout",visible:m(a).visible,loading:m(a).loading,error:m(a).error,confirmLabel:"Checkout",onClose:U[20]||(U[20]=Ee=>m(a).visible=!1),onConfirm:m(l)},{default:ht(()=>[d("p",oS,[U[60]||(U[60]=Ie(" Are you sure you want to checkout ",-1)),d("span",aS,_(m(a).branchName),1),U[61]||(U[61]=Ie("? ",-1))])]),_:1},8,["visible","loading","error","onConfirm"])):K("",!0),m(f).visible?(v(),be(Bt,{key:11,title:"Rename Branch",visible:m(f).visible,loading:m(f).loading,error:m(f).error,confirmLabel:"Rename",onClose:U[23]||(U[23]=Ee=>m(f).visible=!1),onConfirm:m(g)},{default:ht(()=>[d("div",lS,[d("p",cS,[U[62]||(U[62]=Ie(" Rename ",-1)),d("span",uS,_(m(f).branchName),1)]),Je(d("input",{"onUpdate:modelValue":U[21]||(U[21]=Ee=>m(f).newName=Ee),type:"text",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan",placeholder:"New branch name",onKeyup:U[22]||(U[22]=ls((...Ee)=>m(g)&&m(g)(...Ee),["enter"]))},null,544),[[Lt,m(f).newName]])])]),_:1},8,["visible","loading","error","onConfirm"])):K("",!0),m(O).visible?(v(),be(ok,{key:12,visible:m(O).visible,branchName:m(O).branchName,loading:m(O).loading,error:m(O).error,onClose:U[24]||(U[24]=Ee=>m(O).visible=!1),onConfirm:m(x)},null,8,["visible","branchName","loading","error","onConfirm"])):K("",!0),m(h).visible?(v(),be(Jy,{key:13,visible:m(h).visible,branchName:m(h).branchName,isLocal:m(h).isLocal,loading:m(h).loading,error:m(h).error,onClose:U[25]||(U[25]=Ee=>m(h).visible=!1),onConfirm:m(p)},null,8,["visible","branchName","isLocal","loading","error","onConfirm"])):K("",!0),m(Q).visible?(v(),be(wk,{key:14,visible:m(Q).visible,branchName:m(Q).branchName,remotes:m(Vt),loading:m(Q).loading,error:m(Q).error,onClose:U[26]||(U[26]=Ee=>m(Q).visible=!1),onConfirm:m(P)},null,8,["visible","branchName","remotes","loading","error","onConfirm"])):K("",!0),m(E).visible?(v(),be(fk,{key:15,visible:m(E).visible,branchName:m(E).branchName,remotes:m(Vt),loading:m(E).loading,error:m(E).error,onClose:U[27]||(U[27]=Ee=>m(E).visible=!1),onConfirm:m(j)},null,8,["visible","branchName","remotes","loading","error","onConfirm"])):K("",!0),m(b).visible?(v(),be(Mk,{key:16,visible:m(b).visible,branchName:m(t).currentBranch?.name||"HEAD",ontoBranch:m(b).branchName,loading:m(b).loading,error:m(b).error,onClose:U[28]||(U[28]=Ee=>m(b).visible=!1),onConfirm:m(w)},null,8,["visible","branchName","ontoBranch","loading","error","onConfirm"])):K("",!0),m(z).visible?(v(),be(zy,{key:17,visible:m(z).visible,commitHash:m(z).commitHash,commitMessage:m(z).commitMessage,loading:m(z).loading,error:m(z).error,onClose:U[29]||(U[29]=Ee=>m(z).visible=!1),onConfirm:m(ae)},null,8,["visible","commitHash","commitMessage","loading","error","onConfirm"])):K("",!0),m(ce).visible?(v(),be(Dk,{key:18,visible:m(ce).visible,commitHash:m(ce).commitHash,commitMessage:m(ce).commitMessage,loading:m(ce).loading,error:m(ce).error,onClose:U[30]||(U[30]=Ee=>m(ce).visible=!1),onConfirm:m(Oe)},null,8,["visible","commitHash","commitMessage","loading","error","onConfirm"])):K("",!0),m(W).visible?(v(),be(nw,{key:19,visible:m(W).visible,commitHash:m(W).commitHash,remotes:m(Vt),loading:m(W).loading,error:m(W).error,onClose:U[31]||(U[31]=Ee=>m(W).visible=!1),onConfirm:m(L)},null,8,["visible","commitHash","remotes","loading","error","onConfirm"])):K("",!0),m(Z).visible?(v(),be(uw,{key:20,visible:m(Z).visible,tagName:m(Z).tagName,remotes:m(Vt),loading:m(Z).loading,error:m(Z).error,onClose:U[32]||(U[32]=Ee=>m(Z).visible=!1),onConfirm:m(F)},null,8,["visible","tagName","remotes","loading","error","onConfirm"])):K("",!0),m(q).visible?(v(),be($w,{key:21,visible:m(q).visible,tagName:m(q).tagName,tagDetail:m(q).tagDetail,loading:m(q).loading,onClose:U[33]||(U[33]=Ee=>m(q).visible=!1)},null,8,["visible","tagName","tagDetail","loading"])):K("",!0),m(c).visible?(v(),be(Yy,{key:22,visible:m(c).visible,fromCommit:m(c).fromCommit,loading:m(c).loading,error:m(c).error,onClose:U[34]||(U[34]=Ee=>m(c).visible=!1),onConfirm:m(u)},null,8,["visible","fromCommit","loading","error","onConfirm"])):K("",!0),m(I).visible?(v(),be(Bt,{key:23,title:"Create Branch from Stash",visible:m(I).visible,loading:m(I).loading,error:m(I).error,confirmLabel:"Create Branch",onClose:U[37]||(U[37]=Ee=>m(I).visible=!1),onConfirm:U[38]||(U[38]=Ee=>m(J)(m(xe)))},{default:ht(()=>[d("div",hS,[d("p",dS,[U[63]||(U[63]=Ie(" Create a new branch from ",-1)),d("span",fS,"stash@"+_("{")+_(m(I).stashIndex)+_("}"),1)]),Je(d("input",{"onUpdate:modelValue":U[35]||(U[35]=Ee=>nt(xe)?xe.value=Ee:null),type:"text",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan",placeholder:"Branch name",onKeyup:U[36]||(U[36]=ls(Ee=>m(J)(m(xe)),["enter"]))},null,544),[[Lt,m(xe)]])])]),_:1},8,["visible","loading","error"])):K("",!0),m(N).visible?(v(),be(jk,{key:24,visible:m(N).visible,loading:m(N).loading,error:m(N).error,onClose:U[39]||(U[39]=Ee=>m(N).visible=!1),onConfirm:m(X)},null,8,["visible","loading","error","onConfirm"])):K("",!0),m(fe).visible?(v(),be(zk,{key:25,visible:m(fe).visible,loading:m(fe).loading,error:m(fe).error,onClose:U[40]||(U[40]=Ee=>m(fe).visible=!1),onConfirm:m(S)},null,8,["visible","loading","error","onConfirm"])):K("",!0),m(k).visible?(v(),be(Fy,{key:26,visible:m(k).visible,loading:m(k).loading,error:m(k).error,onClose:U[41]||(U[41]=Ee=>m(k).visible=!1),onConfirm:m(A)},null,8,["visible","loading","error","onConfirm"])):K("",!0),(v(),be(Sr,{to:"body"},[te(vn,{name:"fade"},{default:ht(()=>[m(H).visible?(v(),y("div",{key:0,class:"fixed z-50 px-3 py-1.5 text-sm bg-retro-green text-retro-dark rounded shadow-lg",style:er({left:`${m(H).x}px`,top:`${m(H).y-40}px`})}," Copied! ",4)):K("",!0)]),_:1})])),(v(),be(Sr,{to:"body"},[te(vn,{name:"fade"},{default:ht(()=>[m(t).operationError?(v(),y("div",pS,[te(m(Zn),{class:"w-4 h-4 flex-shrink-0"}),d("span",mS,_(m(t).operationError),1),d("button",{class:"flex-shrink-0 p-0.5 hover:bg-white/20 rounded transition-colors",onClick:U[42]||(U[42]=Ee=>m(t).clearOperationError()),"aria-label":"Dismiss error"},[te(m(At),{class:"w-3.5 h-3.5"})])])):K("",!0)]),_:1})]))])}}}),vS=ei(OS,[["__scopeId","data-v-52ace892"]]),bS=d1("/app-logo.svg"),xS={class:"flex items-start justify-between gap-2"},yS={class:"flex-1 min-w-0"},kS={class:"flex items-center gap-2"},wS={class:"font-mono text-sm text-retro-text truncate"},SS={class:"text-xs font-mono text-retro-muted mt-1 truncate"},$S={class:"flex items-center gap-1 flex-shrink-0"},CS={key:0,class:"inline-flex items-center gap-1 text-[10px] font-mono text-retro-red",title:"Critical traceability gaps"},QS={key:1,class:"inline-flex items-center gap-1 text-[10px] font-mono text-retro-yellow",title:"Major traceability gaps"},PS={key:2,class:"text-[10px] font-mono text-retro-muted mr-1",title:"Completed tasks / total tasks"},TS={key:3,class:"w-2 h-2 rounded-full bg-retro-green",title:"spec"},MS={key:4,class:"w-2 h-2 rounded-full bg-retro-cyan",title:"plan"},AS={key:5,class:"w-2 h-2 rounded-full bg-retro-yellow",title:"tasks"},_S={class:"flex flex-wrap items-center justify-between gap-1 mt-2"},RS={key:0,class:"flex items-center gap-1"},BS=["title","disabled","onClick"],ZS=ze({__name:"FeatureCard",props:{feature:{},skills:{},isActive:{type:Boolean},criticalAlerts:{},majorAlerts:{}},emits:["select","cascade","openChat","skill"],setup(r,{emit:e}){const t={DocumentCheckIcon:U1,PuzzlePieceIcon:Ih,DocumentMagnifyingGlassIcon:H1,WrenchScrewdriverIcon:cv,SparklesIcon:$a,BeakerIcon:V1,ShieldCheckIcon:Up,CommandLineIcon:F1,CpuChipIcon:S1,LightBulbIcon:sv},n=r,s=e,i=gr();function o(p){return t[p]||Ih}function a(p){return p.prerequisites.every(f=>n.feature.files.some(g=>g.filename===f))}function l(p){return p.prerequisites.filter(f=>!n.feature.files.some(g=>g.filename===f))}function c(p){return a(p)?`${p.name} (Shift+click: new conversation)`:`Requires: ${l(p).join(", ")}`}const u=ee(()=>{const p=i.findConversationByFeature(n.feature.id);return p?i.isConversationStreaming(p.id):!1}),h=ee(()=>n.isActive?["border-retro-cyan shadow-retro","feature-card-active","dark:bg-gradient-to-br dark:from-retro-cyan/10 dark:via-retro-panel dark:to-retro-magenta/5"]:["border-retro-border","feature-card-light","hover:border-retro-muted","dark:bg-gradient-to-br","dark:from-retro-panel dark:via-retro-panel dark:to-retro-cyan/5","dark:hover:from-retro-cyan/5 dark:hover:via-retro-panel dark:hover:to-retro-magenta/5"]);return(p,f)=>(v(),y("button",{type:"button",class:Ze(["w-full p-3 text-left rounded-lg border transition-all duration-200 group",m(h)]),onClick:f[5]||(f[5]=g=>s("select",r.feature.id))},[d("div",xS,[d("div",yS,[d("div",kS,[te(m(Vs),{class:Ze(["h-4 w-4 flex-shrink-0 transition-colors duration-200",r.isActive?"text-retro-cyan":"text-retro-muted group-hover:text-retro-cyan"])},null,8,["class"]),d("span",wS,_(r.feature.id),1)]),d("p",SS,_(r.feature.name),1)]),d("div",$S,[r.criticalAlerts>0?(v(),y("span",CS,[f[6]||(f[6]=d("span",{class:"w-1.5 h-1.5 rounded-full bg-retro-red"},null,-1)),Ie(" "+_(r.criticalAlerts),1)])):K("",!0),r.majorAlerts>0?(v(),y("span",QS,[f[7]||(f[7]=d("span",{class:"w-1.5 h-1.5 rounded-full bg-retro-yellow"},null,-1)),Ie(" "+_(r.majorAlerts),1)])):K("",!0),r.feature.hasTasks?(v(),y("span",PS,_(r.feature.completedTasks)+"/"+_(r.feature.totalTasks),1)):K("",!0),r.feature.hasSpec?(v(),y("span",TS)):K("",!0),r.feature.hasPlan?(v(),y("span",MS)):K("",!0),r.feature.hasTasks?(v(),y("span",AS)):K("",!0)])]),d("div",_S,[r.feature.hasSpec?(v(),y("div",RS,[d("button",{type:"button",class:"flex items-center justify-center p-1 bg-retro-cyan/20 text-retro-cyan rounded hover:bg-retro-cyan/30 transition-colors",title:"Clarify spec (Shift+click: new conversation)",onClick:f[0]||(f[0]=vr(g=>s("cascade",g,r.feature.id,"clarify"),["stop"]))},[te(m(Cu),{class:"h-3.5 w-3.5"})]),d("button",{type:"button",class:"flex items-center justify-center p-1 bg-retro-cyan/20 text-retro-cyan rounded hover:bg-retro-cyan/30 transition-colors",title:"Plan → Tasks → Implement (Shift+click: new conversation)",onClick:f[1]||(f[1]=vr(g=>s("cascade",g,r.feature.id,"plan"),["stop"]))},[te(m($u),{class:"h-3.5 w-3.5"})]),r.feature.hasPlan?(v(),y("button",{key:0,type:"button",class:"flex items-center justify-center p-1 bg-retro-yellow/20 text-retro-yellow rounded hover:bg-retro-yellow/30 transition-colors",title:"Tasks → Implement (Shift+click: new conversation)",onClick:f[2]||(f[2]=vr(g=>s("cascade",g,r.feature.id,"tasks"),["stop"]))},[te(m(Yp),{class:"h-3.5 w-3.5"})])):K("",!0),r.feature.hasTasks?(v(),y("button",{key:1,type:"button",class:"flex items-center justify-center p-1 bg-retro-magenta/20 text-retro-magenta rounded hover:bg-retro-magenta/30 transition-colors",title:"Implement (Shift+click: new conversation)",onClick:f[3]||(f[3]=vr(g=>s("cascade",g,r.feature.id,"implement"),["stop"]))},[te(m(av),{class:"h-3.5 w-3.5"})])):K("",!0),r.skills.length>0?(v(),y($e,{key:2},[f[8]||(f[8]=d("div",{class:"w-px h-4 bg-retro-border mx-0.5"},null,-1)),(v(!0),y($e,null,Fe(r.skills,g=>(v(),y("button",{key:g.id,type:"button",class:Ze(["flex items-center justify-center p-1 rounded transition-colors",[a(g)&&!m(u)?"bg-retro-pink/20 text-retro-pink hover:bg-retro-pink/30":"bg-retro-subtle/10 text-retro-subtle cursor-not-allowed",m(u)?"animate-pulse":""]]),title:c(g),disabled:!a(g)||m(u),onClick:vr(O=>s("skill",O,r.feature.id,g.id),["stop"])},[(v(),be(Xs(o(g.icon)),{class:"h-3.5 w-3.5"}))],10,BS))),128))],64)):K("",!0)])):K("",!0),r.feature.hasSpec?(v(),y("button",{key:1,type:"button",class:"flex items-center justify-center p-1 bg-retro-green/20 text-retro-green rounded hover:bg-retro-green/30 transition-colors",title:"Open new chat linked to this spec",onClick:f[4]||(f[4]=vr(g=>s("openChat",g,r.feature.id),["stop"]))},[te(m(j1),{class:"h-3.5 w-3.5"})])):K("",!0)])],2))}});let Oc=[],Hp=[];(()=>{let r="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e<r.length;e++)(e%2?Hp:Oc).push(t=t+r[e])})();function ES(r){if(r<768)return!1;for(let e=0,t=Oc.length;;){let n=e+t>>1;if(r<Oc[n])t=n;else if(r>=Hp[n])e=n+1;else return!0;if(e==t)return!1}}function qh(r){return r>=127462&&r<=127487}const Yh=8205;function DS(r,e,t=!0,n=!0){return(t?Kp:LS)(r,e,n)}function Kp(r,e,t){if(e==r.length)return e;e&&Jp(r.charCodeAt(e))&&em(r.charCodeAt(e-1))&&e--;let n=$l(r,e);for(e+=Fh(n);e<r.length;){let s=$l(r,e);if(n==Yh||s==Yh||t&&ES(s))e+=Fh(s),n=s;else if(qh(s)){let i=0,o=e-2;for(;o>=0&&qh($l(r,o));)i++,o-=2;if(i%2==0)break;e+=2}else break}return e}function LS(r,e,t){for(;e>0;){let n=Kp(r,e-2,t);if(n<e)return n;e--}return 0}function $l(r,e){let t=r.charCodeAt(e);if(!em(t)||e+1==r.length)return t;let n=r.charCodeAt(e+1);return Jp(n)?(t-55296<<10)+(n-56320)+65536:t}function Jp(r){return r>=56320&&r<57344}function em(r){return r>=55296&&r<56320}function Fh(r){return r<65536?1:2}class st{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=Ns(this,e,t);let s=[];return this.decompose(0,e,s,2),n.length&&n.decompose(0,n.length,s,3),this.decompose(t,this.length,s,1),Ur.from(s,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Ns(this,e,t);let n=[];return this.decompose(e,t,n,0),Ur.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),s=new Di(this),i=new Di(e);for(let o=t,a=t;;){if(s.next(o),i.next(o),o=0,s.lineBreak!=i.lineBreak||s.done!=i.done||s.value!=i.value)return!1;if(a+=s.value.length,s.done||a>=n)return!0}}iter(e=1){return new Di(this,e)}iterRange(e,t=this.length){return new tm(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;n=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new rm(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?st.empty:e.length<=32?new vt(e):Ur.from(vt.split(e,[]))}}class vt extends st{constructor(e,t=XS(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,s){for(let i=0;;i++){let o=this.text[i],a=s+o.length;if((t?n:a)>=e)return new IS(s,a,n,o);s=a+1,n++}}decompose(e,t,n,s){let i=e<=0&&t>=this.length?this:new vt(Uh(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=n.pop(),a=ua(i.text,o.text.slice(),0,i.length);if(a.length<=32)n.push(new vt(a,o.length+i.length));else{let l=a.length>>1;n.push(new vt(a.slice(0,l)),new vt(a.slice(l)))}}else n.push(i)}replace(e,t,n){if(!(n instanceof vt))return super.replace(e,t,n);[e,t]=Ns(this,e,t);let s=ua(this.text,ua(n.text,Uh(this.text,0,e)),t),i=this.length+n.length-(t-e);return s.length<=32?new vt(s,i):Ur.from(vt.split(s,[]),i)}sliceString(e,t=this.length,n=`
|
|
12
|
+
`){[e,t]=Ns(this,e,t);let s="";for(let i=0,o=0;i<=t&&o<this.text.length;o++){let a=this.text[o],l=i+a.length;i>e&&o&&(s+=n),e<l&&t>i&&(s+=a.slice(Math.max(0,e-i),t-i)),i=l+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let n=[],s=-1;for(let i of e)n.push(i),s+=i.length+1,n.length==32&&(t.push(new vt(n,s)),n=[],s=-1);return s>-1&&t.push(new vt(n,s)),t}}class Ur extends st{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let n of e)this.lines+=n.lines}lineInner(e,t,n,s){for(let i=0;;i++){let o=this.children[i],a=s+o.length,l=n+o.lines-1;if((t?l:a)>=e)return o.lineInner(e,t,n,s);s=a+1,n=l+1}}decompose(e,t,n,s){for(let i=0,o=0;o<=t&&i<this.children.length;i++){let a=this.children[i],l=o+a.length;if(e<=l&&t>=o){let c=s&((o<=e?1:0)|(l>=t?2:0));o>=e&&l<=t&&!c?n.push(a):a.decompose(e-o,t-o,n,c)}o=l+1}}replace(e,t,n){if([e,t]=Ns(this,e,t),n.lines<this.lines)for(let s=0,i=0;s<this.children.length;s++){let o=this.children[s],a=i+o.length;if(e>=i&&t<=a){let l=o.replace(e-i,t-i,n),c=this.lines-o.lines+l.lines;if(l.lines<c>>4&&l.lines>c>>6){let u=this.children.slice();return u[s]=l,new Ur(u,this.length-(t-e)+n.length)}return super.replace(i,a,l)}i=a+1}return super.replace(e,t,n)}sliceString(e,t=this.length,n=`
|
|
13
|
+
`){[e,t]=Ns(this,e,t);let s="";for(let i=0,o=0;i<this.children.length&&o<=t;i++){let a=this.children[i],l=o+a.length;o>e&&i&&(s+=n),e<l&&t>o&&(s+=a.sliceString(e-o,t-o,n)),o=l+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof Ur))return 0;let n=0,[s,i,o,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,i+=t){if(s==o||i==a)return n;let l=this.children[s],c=e.children[i];if(l!=c)return n+l.scanIdentical(c,t);n+=l.length+1}}static from(e,t=e.reduce((n,s)=>n+s.length+1,-1)){let n=0;for(let f of e)n+=f.lines;if(n<32){let f=[];for(let g of e)g.flatten(f);return new vt(f,t)}let s=Math.max(32,n>>5),i=s<<1,o=s>>1,a=[],l=0,c=-1,u=[];function h(f){let g;if(f.lines>i&&f instanceof Ur)for(let O of f.children)h(O);else f.lines>o&&(l>o||!l)?(p(),a.push(f)):f instanceof vt&&l&&(g=u[u.length-1])instanceof vt&&f.lines+g.lines<=32?(l+=f.lines,c+=f.length+1,u[u.length-1]=new vt(g.text.concat(f.text),g.length+1+f.length)):(l+f.lines>s&&p(),l+=f.lines,c+=f.length+1,u.push(f))}function p(){l!=0&&(a.push(u.length==1?u[0]:Ur.from(u,c)),c=-1,l=u.length=0)}for(let f of e)h(f);return p(),a.length==1?a[0]:new Ur(a,t)}}st.empty=new vt([""],0);function XS(r){let e=-1;for(let t of r)e+=t.length+1;return e}function ua(r,e,t=0,n=1e9){for(let s=0,i=0,o=!0;i<r.length&&s<=n;i++){let a=r[i],l=s+a.length;l>=t&&(l>n&&(a=a.slice(0,n-s)),s<t&&(a=a.slice(t-s)),o?(e[e.length-1]+=a,o=!1):e.push(a)),s=l+1}return e}function Uh(r,e,t){return ua(r,[""],e,t)}class Di{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof vt?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,s=this.nodes[n],i=this.offsets[n],o=i>>1,a=s instanceof vt?s.text.length:s.children.length;if(o==(t>0?a:0)){if(n==0)return this.done=!0,this.value="",this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=`
|
|
14
|
+
`,this;e--}else if(s instanceof vt){let l=s.text[o+(t<0?-1:0)];if(this.offsets[n]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=s.children[o+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof vt?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class tm{constructor(e,t,n){this.value="",this.done=!1,this.cursor=new Di(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=n?s:t<0?s.slice(s.length-n):s.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class rm{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:n,value:s}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):n?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(st.prototype[Symbol.iterator]=function(){return this.iter()},Di.prototype[Symbol.iterator]=tm.prototype[Symbol.iterator]=rm.prototype[Symbol.iterator]=function(){return this});let IS=class{constructor(e,t,n,s){this.from=e,this.to=t,this.number=n,this.text=s}get length(){return this.to-this.from}};function Ns(r,e,t){return e=Math.max(0,Math.min(r.length,e)),[e,Math.max(e,Math.min(r.length,t))]}function Mt(r,e,t=!0,n=!0){return DS(r,e,t,n)}function VS(r){return r>=56320&&r<57344}function zS(r){return r>=55296&&r<56320}function Ht(r,e){let t=r.charCodeAt(e);if(!zS(t)||e+1==r.length)return t;let n=r.charCodeAt(e+1);return VS(n)?(t-55296<<10)+(n-56320)+65536:t}function Mu(r){return r<=65535?String.fromCharCode(r):(r-=65536,String.fromCharCode((r>>10)+55296,(r&1023)+56320))}function Gr(r){return r<65536?1:2}const vc=/\r\n?|\n/;var Dt=(function(r){return r[r.Simple=0]="Simple",r[r.TrackDel=1]="TrackDel",r[r.TrackBefore=2]="TrackBefore",r[r.TrackAfter=3]="TrackAfter",r})(Dt||(Dt={}));class rn{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t+1];e+=n<0?this.sections[t]:n}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,n=0,s=0;t<this.sections.length;){let i=this.sections[t++],o=this.sections[t++];o<0?(e(n,s,i),s+=i):s+=o,n+=i}}iterChangedRanges(e,t=!1){bc(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let n=this.sections[t++],s=this.sections[t++];s<0?e.push(n,s):e.push(s,n)}return new rn(e)}composeDesc(e){return this.empty?e:e.empty?this:nm(this,e)}mapDesc(e,t=!1){return e.empty?this:xc(this,e,t)}mapPos(e,t=-1,n=Dt.Simple){let s=0,i=0;for(let o=0;o<this.sections.length;){let a=this.sections[o++],l=this.sections[o++],c=s+a;if(l<0){if(c>e)return i+(e-s);i+=a}else{if(n!=Dt.Simple&&c>=e&&(n==Dt.TrackDel&&s<e&&c>e||n==Dt.TrackBefore&&s<e||n==Dt.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!a)return e==s||t<0?i:i+l;i+=l}s=c}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return i}touchesRange(e,t=e){for(let n=0,s=0;n<this.sections.length&&s<=t;){let i=this.sections[n++],o=this.sections[n++],a=s+i;if(o>=0&&s<=t&&a>=e)return s<e&&a>t?"cover":!0;s=a}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let n=this.sections[t++],s=this.sections[t++];e+=(e?" ":"")+n+(s>=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new rn(e)}static create(e){return new rn(e)}}class Ct extends rn{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return bc(this,(t,n,s,i,o)=>e=e.replace(s,s+(n-t),o),!1),e}mapDesc(e,t=!1){return xc(this,e,t,!0)}invert(e){let t=this.sections.slice(),n=[];for(let s=0,i=0;s<t.length;s+=2){let o=t[s],a=t[s+1];if(a>=0){t[s]=a,t[s+1]=o;let l=s>>1;for(;n.length<l;)n.push(st.empty);n.push(o?e.slice(i,i+o):st.empty)}i+=o}return new Ct(t,n)}compose(e){return this.empty?e:e.empty?this:nm(this,e,!0)}map(e,t=!1){return e.empty?this:xc(this,e,t,!0)}iterChanges(e,t=!1){bc(this,e,t)}get desc(){return rn.create(this.sections)}filter(e){let t=[],n=[],s=[],i=new ji(this);e:for(let o=0,a=0;;){let l=o==e.length?1e9:e[o++];for(;a<l||a==l&&i.len==0;){if(i.done)break e;let u=Math.min(i.len,l-a);Nt(s,u,-1);let h=i.ins==-1?-1:i.off==0?i.ins:0;Nt(t,u,h),h>0&&Bn(n,t,i.text),i.forward(u),a+=u}let c=e[o++];for(;a<c;){if(i.done)break e;let u=Math.min(i.len,c-a);Nt(t,u,-1),Nt(s,u,i.ins==-1?-1:i.off==0?i.ins:0),i.forward(u),a+=u}}return{changes:new Ct(t,n),filtered:rn.create(s)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t],s=this.sections[t+1];s<0?e.push(n):s==0?e.push([n]):e.push([n].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,n){let s=[],i=[],o=0,a=null;function l(u=!1){if(!u&&!s.length)return;o<t&&Nt(s,t-o,-1);let h=new Ct(s,i);a=a?a.compose(h.map(a)):h,s=[],i=[],o=0}function c(u){if(Array.isArray(u))for(let h of u)c(h);else if(u instanceof Ct){if(u.length!=t)throw new RangeError(`Mismatched change set length (got ${u.length}, expected ${t})`);l(),a=a?a.compose(u.map(a)):u}else{let{from:h,to:p=h,insert:f}=u;if(h>p||h<0||p>t)throw new RangeError(`Invalid change range ${h} to ${p} (in doc of length ${t})`);let g=f?typeof f=="string"?st.of(f.split(n||vc)):f:st.empty,O=g.length;if(h==p&&O==0)return;h<o&&l(),h>o&&Nt(s,h-o,-1),Nt(s,p-h,O),Bn(i,s,g),o=p}}return c(e),l(!a),a}static empty(e){return new Ct(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],n=[];for(let s=0;s<e.length;s++){let i=e[s];if(typeof i=="number")t.push(i,-1);else{if(!Array.isArray(i)||typeof i[0]!="number"||i.some((o,a)=>a&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(i.length==1)t.push(i[0],0);else{for(;n.length<s;)n.push(st.empty);n[s]=st.of(i.slice(1)),t.push(i[0],n[s].length)}}}return new Ct(t,n)}static createSet(e,t){return new Ct(e,t)}}function Nt(r,e,t,n=!1){if(e==0&&t<=0)return;let s=r.length-2;s>=0&&t<=0&&t==r[s+1]?r[s]+=e:s>=0&&e==0&&r[s]==0?r[s+1]+=t:n?(r[s]+=e,r[s+1]+=t):r.push(e,t)}function Bn(r,e,t){if(t.length==0)return;let n=e.length-2>>1;if(n<r.length)r[r.length-1]=r[r.length-1].append(t);else{for(;r.length<n;)r.push(st.empty);r.push(t)}}function bc(r,e,t){let n=r.inserted;for(let s=0,i=0,o=0;o<r.sections.length;){let a=r.sections[o++],l=r.sections[o++];if(l<0)s+=a,i+=a;else{let c=s,u=i,h=st.empty;for(;c+=a,u+=l,l&&n&&(h=h.append(n[o-2>>1])),!(t||o==r.sections.length||r.sections[o+1]<0);)a=r.sections[o++],l=r.sections[o++];e(s,c,i,u,h),s=c,i=u}}}function xc(r,e,t,n=!1){let s=[],i=n?[]:null,o=new ji(r),a=new ji(e);for(let l=-1;;){if(o.done&&a.len||a.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&a.ins==-1){let c=Math.min(o.len,a.len);Nt(s,c,-1),o.forward(c),a.forward(c)}else if(a.ins>=0&&(o.ins<0||l==o.i||o.off==0&&(a.len<o.len||a.len==o.len&&!t))){let c=a.len;for(Nt(s,a.ins,-1);c;){let u=Math.min(o.len,c);o.ins>=0&&l<o.i&&o.len<=u&&(Nt(s,0,o.ins),i&&Bn(i,s,o.text),l=o.i),o.forward(u),c-=u}a.next()}else if(o.ins>=0){let c=0,u=o.len;for(;u;)if(a.ins==-1){let h=Math.min(u,a.len);c+=h,u-=h,a.forward(h)}else if(a.ins==0&&a.len<u)u-=a.len,a.next();else break;Nt(s,c,l<o.i?o.ins:0),i&&l<o.i&&Bn(i,s,o.text),l=o.i,o.forward(o.len-u)}else{if(o.done&&a.done)return i?Ct.createSet(s,i):rn.create(s);throw new Error("Mismatched change set lengths")}}}function nm(r,e,t=!1){let n=[],s=t?[]:null,i=new ji(r),o=new ji(e);for(let a=!1;;){if(i.done&&o.done)return s?Ct.createSet(n,s):rn.create(n);if(i.ins==0)Nt(n,i.len,0,a),i.next();else if(o.len==0&&!o.done)Nt(n,0,o.ins,a),s&&Bn(s,n,o.text),o.next();else{if(i.done||o.done)throw new Error("Mismatched change set lengths");{let l=Math.min(i.len2,o.len),c=n.length;if(i.ins==-1){let u=o.ins==-1?-1:o.off?0:o.ins;Nt(n,l,u,a),s&&u&&Bn(s,n,o.text)}else o.ins==-1?(Nt(n,i.off?0:i.len,l,a),s&&Bn(s,n,i.textBit(l))):(Nt(n,i.off?0:i.len,o.off?0:o.ins,a),s&&!o.off&&Bn(s,n,o.text));a=(i.ins>l||o.ins>=0&&o.len>l)&&(a||n.length>c),i.forward2(l),o.forward(l)}}}}class ji{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?st.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?st.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class ss{constructor(e,t,n){this.from=e,this.to=t,this.flags=n}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let n,s;return this.empty?n=s=e.mapPos(this.from,t):(n=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),n==this.from&&s==this.to?this:new ss(n,s,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return re.range(e,t);let n=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return re.range(this.anchor,n)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return re.range(e.anchor,e.head)}static create(e,t,n){return new ss(e,t,n)}}class re{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:re.create(this.ranges.map(n=>n.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;n<this.ranges.length;n++)if(!this.ranges[n].eq(e.ranges[n],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new re([this.main],0)}addRange(e,t=!0){return re.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let n=this.ranges.slice();return n[t]=e,re.create(n,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new re(e.ranges.map(t=>ss.fromJSON(t)),e.main)}static single(e,t=e){return new re([re.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let n=0,s=0;s<e.length;s++){let i=e[s];if(i.empty?i.from<=n:i.from<n)return re.normalized(e.slice(),t);n=i.to}return new re(e,t)}static cursor(e,t=0,n,s){return ss.create(e,e,(t==0?0:t<0?8:16)|(n==null?7:Math.min(6,n))|(s??16777215)<<6)}static range(e,t,n,s){let i=(n??16777215)<<6|(s==null?7:Math.min(6,s));return t<e?ss.create(t,e,48|i):ss.create(e,t,(t>e?8:0)|i)}static normalized(e,t=0){let n=e[t];e.sort((s,i)=>s.from-i.from),t=e.indexOf(n);for(let s=1;s<e.length;s++){let i=e[s],o=e[s-1];if(i.empty?i.from<=o.to:i.from<o.to){let a=o.from,l=Math.max(i.to,o.to);s<=t&&t--,e.splice(--s,2,i.anchor>i.head?re.range(l,a):re.range(a,l))}}return new re(e,t)}}function sm(r,e){for(let t of r.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}let Au=0;class Ce{constructor(e,t,n,s,i){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=s,this.id=Au++,this.default=e([]),this.extensions=typeof i=="function"?i(this):i}get reader(){return this}static define(e={}){return new Ce(e.combine||(t=>t),e.compareInput||((t,n)=>t===n),e.compare||(e.combine?(t,n)=>t===n:_u),!!e.static,e.enables)}of(e){return new ha([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new ha(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new ha(e,this,2,t)}from(e,t){return t||(t=n=>n),this.compute([e],n=>t(n.field(e)))}}function _u(r,e){return r==e||r.length==e.length&&r.every((t,n)=>t===e[n])}class ha{constructor(e,t,n,s){this.dependencies=e,this.facet=t,this.type=n,this.value=s,this.id=Au++}dynamicSlot(e){var t;let n=this.value,s=this.facet.compareInput,i=this.id,o=e[i]>>1,a=this.type==2,l=!1,c=!1,u=[];for(let h of this.dependencies)h=="doc"?l=!0:h=="selection"?c=!0:(((t=e[h.id])!==null&&t!==void 0?t:1)&1)==0&&u.push(e[h.id]);return{create(h){return h.values[o]=n(h),1},update(h,p){if(l&&p.docChanged||c&&(p.docChanged||p.selection)||yc(h,u)){let f=n(h);if(a?!Gh(f,h.values[o],s):!s(f,h.values[o]))return h.values[o]=f,1}return 0},reconfigure:(h,p)=>{let f,g=p.config.address[i];if(g!=null){let O=Qa(p,g);if(this.dependencies.every(x=>x instanceof Ce?p.facet(x)===h.facet(x):x instanceof _t?p.field(x,!1)==h.field(x,!1):!0)||(a?Gh(f=n(h),O,s):s(f=n(h),O)))return h.values[o]=O,0}else f=n(h);return h.values[o]=f,1}}}}function Gh(r,e,t){if(r.length!=e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function yc(r,e){let t=!1;for(let n of e)Li(r,n)&1&&(t=!0);return t}function NS(r,e,t){let n=t.map(l=>r[l.id]),s=t.map(l=>l.type),i=n.filter(l=>!(l&1)),o=r[e.id]>>1;function a(l){let c=[];for(let u=0;u<n.length;u++){let h=Qa(l,n[u]);if(s[u]==2)for(let p of h)c.push(p);else c.push(h)}return e.combine(c)}return{create(l){for(let c of n)Li(l,c);return l.values[o]=a(l),1},update(l,c){if(!yc(l,i))return 0;let u=a(l);return e.compare(u,l.values[o])?0:(l.values[o]=u,1)},reconfigure(l,c){let u=yc(l,n),h=c.config.facets[e.id],p=c.facet(e);if(h&&!u&&_u(t,h))return l.values[o]=p,0;let f=a(l);return e.compare(f,p)?(l.values[o]=p,0):(l.values[o]=f,1)}}}const Eo=Ce.define({static:!0});class _t{constructor(e,t,n,s,i){this.id=e,this.createF=t,this.updateF=n,this.compareF=s,this.spec=i,this.provides=void 0}static define(e){let t=new _t(Au++,e.create,e.update,e.compare||((n,s)=>n===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Eo).find(n=>n.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:n=>(n.values[t]=this.create(n),1),update:(n,s)=>{let i=n.values[t],o=this.updateF(i,s);return this.compareF(i,o)?0:(n.values[t]=o,1)},reconfigure:(n,s)=>{let i=n.facet(Eo),o=s.facet(Eo),a;return(a=i.find(l=>l.field==this))&&a!=o.find(l=>l.field==this)?(n.values[t]=a.create(n),1):s.config.address[this.id]!=null?(n.values[t]=s.field(this),0):(n.values[t]=this.create(n),1)}}}init(e){return[this,Eo.of({field:this,create:e})]}get extension(){return this}}const ts={lowest:4,low:3,default:2,high:1,highest:0};function Si(r){return e=>new im(e,r)}const wn={highest:Si(ts.highest),high:Si(ts.high),default:Si(ts.default),low:Si(ts.low),lowest:Si(ts.lowest)};class im{constructor(e,t){this.inner=e,this.prec=t}}class cl{of(e){return new kc(this,e)}reconfigure(e){return cl.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class kc{constructor(e,t){this.compartment=e,this.inner=t}}class Ca{constructor(e,t,n,s,i,o){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=s,this.staticValues=i,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<n.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(e,t,n){let s=[],i=Object.create(null),o=new Map;for(let p of WS(e,t,o))p instanceof _t?s.push(p):(i[p.facet.id]||(i[p.facet.id]=[])).push(p);let a=Object.create(null),l=[],c=[];for(let p of s)a[p.id]=c.length<<1,c.push(f=>p.slot(f));let u=n?.config.facets;for(let p in i){let f=i[p],g=f[0].facet,O=u&&u[p]||[];if(f.every(x=>x.type==0))if(a[g.id]=l.length<<1|1,_u(O,f))l.push(n.facet(g));else{let x=g.combine(f.map(b=>b.value));l.push(n&&g.compare(x,n.facet(g))?n.facet(g):x)}else{for(let x of f)x.type==0?(a[x.id]=l.length<<1|1,l.push(x.value)):(a[x.id]=c.length<<1,c.push(b=>x.dynamicSlot(b)));a[g.id]=c.length<<1,c.push(x=>NS(x,g,f))}}let h=c.map(p=>p(a));return new Ca(e,o,h,a,l,i)}}function WS(r,e,t){let n=[[],[],[],[],[]],s=new Map;function i(o,a){let l=s.get(o);if(l!=null){if(l<=a)return;let c=n[l].indexOf(o);c>-1&&n[l].splice(c,1),o instanceof kc&&t.delete(o.compartment)}if(s.set(o,a),Array.isArray(o))for(let c of o)i(c,a);else if(o instanceof kc){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let c=e.get(o.compartment)||o.inner;t.set(o.compartment,c),i(c,a)}else if(o instanceof im)i(o.inner,o.prec);else if(o instanceof _t)n[a].push(o),o.provides&&i(o.provides,a);else if(o instanceof ha)n[a].push(o),o.facet.extensions&&i(o.facet.extensions,ts.default);else{let c=o.extension;if(!c)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);i(c,a)}}return i(r,ts.default),n.reduce((o,a)=>o.concat(a))}function Li(r,e){if(e&1)return 2;let t=e>>1,n=r.status[t];if(n==4)throw new Error("Cyclic dependency between fields and/or facets");if(n&2)return n;r.status[t]=4;let s=r.computeSlot(r,r.config.dynamicSlots[t]);return r.status[t]=2|s}function Qa(r,e){return e&1?r.config.staticValues[e>>1]:r.values[e>>1]}const om=Ce.define(),wc=Ce.define({combine:r=>r.some(e=>e),static:!0}),am=Ce.define({combine:r=>r.length?r[0]:void 0,static:!0}),lm=Ce.define(),cm=Ce.define(),um=Ce.define(),hm=Ce.define({combine:r=>r.length?r[0]:!1});class Sn{constructor(e,t){this.type=e,this.value=t}static define(){return new jS}}class jS{of(e){return new Sn(this,e)}}class qS{constructor(e){this.map=e}of(e){return new je(this,e)}}class je{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new je(this.type,t)}is(e){return this.type==e}static define(e={}){return new qS(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let s of e){let i=s.map(t);i&&n.push(i)}return n}}je.reconfigure=je.define();je.appendConfig=je.define();class kt{constructor(e,t,n,s,i,o){this.startState=e,this.changes=t,this.selection=n,this.effects=s,this.annotations=i,this.scrollIntoView=o,this._doc=null,this._state=null,n&&sm(n,t.newLength),i.some(a=>a.type==kt.time)||(this.annotations=i.concat(kt.time.of(Date.now())))}static create(e,t,n,s,i,o){return new kt(e,t,n,s,i,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(kt.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}}kt.time=Sn.define();kt.userEvent=Sn.define();kt.addToHistory=Sn.define();kt.remote=Sn.define();function YS(r,e){let t=[];for(let n=0,s=0;;){let i,o;if(n<r.length&&(s==e.length||e[s]>=r[n]))i=r[n++],o=r[n++];else if(s<e.length)i=e[s++],o=e[s++];else return t;!t.length||t[t.length-1]<i?t.push(i,o):t[t.length-1]<o&&(t[t.length-1]=o)}}function dm(r,e,t){var n;let s,i,o;return t?(s=e.changes,i=Ct.empty(e.changes.length),o=r.changes.compose(e.changes)):(s=e.changes.map(r.changes),i=r.changes.mapDesc(e.changes,!0),o=r.changes.compose(s)),{changes:o,selection:e.selection?e.selection.map(i):(n=r.selection)===null||n===void 0?void 0:n.map(s),effects:je.mapEffects(r.effects,s).concat(je.mapEffects(e.effects,i)),annotations:r.annotations.length?r.annotations.concat(e.annotations):e.annotations,scrollIntoView:r.scrollIntoView||e.scrollIntoView}}function Sc(r,e,t){let n=e.selection,s=As(e.annotations);return e.userEvent&&(s=s.concat(kt.userEvent.of(e.userEvent))),{changes:e.changes instanceof Ct?e.changes:Ct.of(e.changes||[],t,r.facet(am)),selection:n&&(n instanceof re?n:re.single(n.anchor,n.head)),effects:As(e.effects),annotations:s,scrollIntoView:!!e.scrollIntoView}}function fm(r,e,t){let n=Sc(r,e.length?e[0]:{},r.doc.length);e.length&&e[0].filter===!1&&(t=!1);for(let i=1;i<e.length;i++){e[i].filter===!1&&(t=!1);let o=!!e[i].sequential;n=dm(n,Sc(r,e[i],o?n.changes.newLength:r.doc.length),o)}let s=kt.create(r,n.changes,n.selection,n.effects,n.annotations,n.scrollIntoView);return US(t?FS(s):s)}function FS(r){let e=r.startState,t=!0;for(let s of e.facet(lm)){let i=s(r);if(i===!1){t=!1;break}Array.isArray(i)&&(t=t===!0?i:YS(t,i))}if(t!==!0){let s,i;if(t===!1)i=r.changes.invertedDesc,s=Ct.empty(e.doc.length);else{let o=r.changes.filter(t);s=o.changes,i=o.filtered.mapDesc(o.changes).invertedDesc}r=kt.create(e,s,r.selection&&r.selection.map(i),je.mapEffects(r.effects,i),r.annotations,r.scrollIntoView)}let n=e.facet(cm);for(let s=n.length-1;s>=0;s--){let i=n[s](r);i instanceof kt?r=i:Array.isArray(i)&&i.length==1&&i[0]instanceof kt?r=i[0]:r=fm(e,As(i),!1)}return r}function US(r){let e=r.startState,t=e.facet(um),n=r;for(let s=t.length-1;s>=0;s--){let i=t[s](r);i&&Object.keys(i).length&&(n=dm(n,Sc(e,i,r.changes.newLength),!0))}return n==r?r:kt.create(e,r.changes,r.selection,n.effects,n.annotations,n.scrollIntoView)}const GS=[];function As(r){return r==null?GS:Array.isArray(r)?r:[r]}var mt=(function(r){return r[r.Word=0]="Word",r[r.Space=1]="Space",r[r.Other=2]="Other",r})(mt||(mt={}));const HS=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let $c;try{$c=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function KS(r){if($c)return $c.test(r);for(let e=0;e<r.length;e++){let t=r[e];if(/\w/.test(t)||t>""&&(t.toUpperCase()!=t.toLowerCase()||HS.test(t)))return!0}return!1}function JS(r){return e=>{if(!/\S/.test(e))return mt.Space;if(KS(e))return mt.Word;for(let t=0;t<r.length;t++)if(e.indexOf(r[t])>-1)return mt.Word;return mt.Other}}class tt{constructor(e,t,n,s,i,o){this.config=e,this.doc=t,this.selection=n,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=i,o&&(o._state=this);for(let a=0;a<this.config.dynamicSlots.length;a++)Li(this,a<<1);this.computeSlot=null}field(e,t=!0){let n=this.config.address[e.id];if(n==null){if(t)throw new RangeError("Field is not present in this state");return}return Li(this,n),Qa(this,n)}update(...e){return fm(this,e,!0)}applyTransaction(e){let t=this.config,{base:n,compartments:s}=t;for(let a of e.effects)a.is(cl.reconfigure)?(t&&(s=new Map,t.compartments.forEach((l,c)=>s.set(c,l)),t=null),s.set(a.value.compartment,a.value.extension)):a.is(je.reconfigure)?(t=null,n=a.value):a.is(je.appendConfig)&&(t=null,n=As(n).concat(a.value));let i;t?i=e.startState.values.slice():(t=Ca.resolve(n,s,this),i=new tt(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,c)=>c.reconfigure(l,this),null).values);let o=e.startState.facet(wc)?e.newSelection:e.newSelection.asSingle();new tt(t,e.newDoc,o,i,(a,l)=>l.update(a,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:re.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),s=this.changes(n.changes),i=[n.range],o=As(n.effects);for(let a=1;a<t.ranges.length;a++){let l=e(t.ranges[a]),c=this.changes(l.changes),u=c.map(s);for(let p=0;p<a;p++)i[p]=i[p].map(u);let h=s.mapDesc(c,!0);i.push(l.range.map(h)),s=s.compose(u),o=je.mapEffects(o,u).concat(je.mapEffects(As(l.effects),h))}return{changes:s,selection:re.create(i,t.mainIndex),effects:o}}changes(e=[]){return e instanceof Ct?e:Ct.of(e,this.doc.length,this.facet(tt.lineSeparator))}toText(e){return st.of(e.split(this.facet(tt.lineSeparator)||vc))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(Li(this,t),Qa(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let n in e){let s=e[n];s instanceof _t&&this.config.address[s.id]!=null&&(t[n]=s.spec.toJSON(this.field(e[n]),this))}return t}static fromJSON(e,t={},n){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let s=[];if(n){for(let i in n)if(Object.prototype.hasOwnProperty.call(e,i)){let o=n[i],a=e[i];s.push(o.init(l=>o.spec.fromJSON(a,l)))}}return tt.create({doc:e.doc,selection:re.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=Ca.resolve(e.extensions||[],new Map),n=e.doc instanceof st?e.doc:st.of((e.doc||"").split(t.staticFacet(tt.lineSeparator)||vc)),s=e.selection?e.selection instanceof re?e.selection:re.single(e.selection.anchor,e.selection.head):re.single(0);return sm(s,n.length),t.staticFacet(wc)||(s=s.asSingle()),new tt(t,n,s,t.dynamicSlots.map(()=>null),(i,o)=>o.create(i),null)}get tabSize(){return this.facet(tt.tabSize)}get lineBreak(){return this.facet(tt.lineSeparator)||`
|
|
15
|
+
`}get readOnly(){return this.facet(hm)}phrase(e,...t){for(let n of this.facet(tt.phrases))if(Object.prototype.hasOwnProperty.call(n,e)){e=n[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(n,s)=>{if(s=="$")return"$";let i=+(s||1);return!i||i>t.length?n:t[i-1]})),e}languageDataAt(e,t,n=-1){let s=[];for(let i of this.facet(om))for(let o of i(this,t,n))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return JS(t.length?t[0]:"")}wordAt(e){let{text:t,from:n,length:s}=this.doc.lineAt(e),i=this.charCategorizer(e),o=e-n,a=e-n;for(;o>0;){let l=Mt(t,o,!1);if(i(t.slice(l,o))!=mt.Word)break;o=l}for(;a<s;){let l=Mt(t,a);if(i(t.slice(a,l))!=mt.Word)break;a=l}return o==a?null:re.range(o+n,a+n)}}tt.allowMultipleSelections=wc;tt.tabSize=Ce.define({combine:r=>r.length?r[0]:4});tt.lineSeparator=am;tt.readOnly=hm;tt.phrases=Ce.define({compare(r,e){let t=Object.keys(r),n=Object.keys(e);return t.length==n.length&&t.every(s=>r[s]==e[s])}});tt.languageData=om;tt.changeFilter=lm;tt.transactionFilter=cm;tt.transactionExtender=um;cl.reconfigure=je.define();function sn(r,e,t={}){let n={};for(let s of r)for(let i of Object.keys(s)){let o=s[i],a=n[i];if(a===void 0)n[i]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,i))n[i]=t[i](a,o);else throw new Error("Config merge conflict for field "+i)}for(let s in e)n[s]===void 0&&(n[s]=e[s]);return n}class Dn{eq(e){return this==e}range(e,t=e){return Cc.create(e,t,this)}}Dn.prototype.startSide=Dn.prototype.endSide=0;Dn.prototype.point=!1;Dn.prototype.mapMode=Dt.TrackDel;function Ru(r,e){return r==e||r.constructor==e.constructor&&r.eq(e)}let Cc=class pm{constructor(e,t,n){this.from=e,this.to=t,this.value=n}static create(e,t,n){return new pm(e,t,n)}};function Qc(r,e){return r.from-e.from||r.value.startSide-e.value.startSide}class Bu{constructor(e,t,n,s){this.from=e,this.to=t,this.value=n,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,t,n,s=0){let i=n?this.to:this.from;for(let o=s,a=i.length;;){if(o==a)return o;let l=o+a>>1,c=i[l]-e||(n?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,n,s){for(let i=this.findIndex(t,-1e9,!0),o=this.findIndex(n,1e9,!1,i);i<o;i++)if(s(this.from[i]+e,this.to[i]+e,this.value[i])===!1)return!1}map(e,t){let n=[],s=[],i=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let c=this.value[l],u=this.from[l]+e,h=this.to[l]+e,p,f;if(u==h){let g=t.mapPos(u,c.startSide,c.mapMode);if(g==null||(p=f=g,c.startSide!=c.endSide&&(f=t.mapPos(u,c.endSide),f<p)))continue}else if(p=t.mapPos(u,c.startSide),f=t.mapPos(h,c.endSide),p>f||p==f&&c.startSide>0&&c.endSide<=0)continue;(f-p||c.endSide-c.startSide)<0||(o<0&&(o=p),c.point&&(a=Math.max(a,f-p)),n.push(c),s.push(p-o),i.push(f-o))}return{mapped:n.length?new Bu(s,i,n,a):null,pos:o}}}class et{constructor(e,t,n,s){this.chunkPos=e,this.chunk=t,this.nextLayer=n,this.maxPoint=s}static create(e,t,n,s){return new et(e,t,n,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:n=!1,filterFrom:s=0,filterTo:i=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(n&&(t=t.slice().sort(Qc)),this.isEmpty)return t.length?et.of(t):this;let a=new mm(this,null,-1).goto(0),l=0,c=[],u=new xn;for(;a.value||l<t.length;)if(l<t.length&&(a.from-t[l].from||a.startSide-t[l].value.startSide)>=0){let h=t[l++];u.addInner(h.from,h.to,h.value)||c.push(h)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==t.length||this.chunkEnd(a.chunkIndex)<t[l].from)&&(!o||s>this.chunkEnd(a.chunkIndex)||i<this.chunkPos[a.chunkIndex])&&u.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||s>a.to||i<a.from||o(a.from,a.to,a.value))&&(u.addInner(a.from,a.to,a.value)||c.push(Cc.create(a.from,a.to,a.value))),a.next());return u.finishInner(this.nextLayer.isEmpty&&!c.length?et.empty:this.nextLayer.update({add:c,filter:o,filterFrom:s,filterTo:i}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],n=[],s=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],c=e.touchesRange(a,a+l.length);if(c===!1)s=Math.max(s,l.maxPoint),t.push(l),n.push(e.mapPos(a));else if(c===!0){let{mapped:u,pos:h}=l.map(a,e);u&&(s=Math.max(s,u.maxPoint),t.push(u),n.push(h))}}let i=this.nextLayer.map(e);return t.length==0?i:new et(n,t,i||et.empty,s)}between(e,t,n){if(!this.isEmpty){for(let s=0;s<this.chunk.length;s++){let i=this.chunkPos[s],o=this.chunk[s];if(t>=i&&e<=i+o.length&&o.between(i,e-i,t-i,n)===!1)return}this.nextLayer.between(e,t,n)}}iter(e=0){return qi.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return qi.from(e).goto(t)}static compare(e,t,n,s,i=-1){let o=e.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=i),a=t.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=i),l=Hh(o,a,n),c=new $i(o,l,i),u=new $i(a,l,i);n.iterGaps((h,p,f)=>Kh(c,h,u,p,f,s)),n.empty&&n.length==0&&Kh(c,0,u,0,0,s)}static eq(e,t,n=0,s){s==null&&(s=999999999);let i=e.filter(u=>!u.isEmpty&&t.indexOf(u)<0),o=t.filter(u=>!u.isEmpty&&e.indexOf(u)<0);if(i.length!=o.length)return!1;if(!i.length)return!0;let a=Hh(i,o),l=new $i(i,a,0).goto(n),c=new $i(o,a,0).goto(n);for(;;){if(l.to!=c.to||!Pc(l.active,c.active)||l.point&&(!c.point||!Ru(l.point,c.point)))return!1;if(l.to>s)return!0;l.next(),c.next()}}static spans(e,t,n,s,i=-1){let o=new $i(e,null,i).goto(t),a=t,l=o.openStart;for(;;){let c=Math.min(o.to,n);if(o.point){let u=o.activeForPoint(o.to),h=o.pointFrom<t?u.length+1:o.point.startSide<0?u.length:Math.min(u.length,l);s.point(a,c,o.point,u,h,o.pointRank),l=Math.min(o.openEnd(c),u.length)}else c>a&&(s.span(a,c,o.active,l),l=o.openEnd(c));if(o.to>n)return l+(o.point&&o.to>n?1:0);a=o.to,o.next()}}static of(e,t=!1){let n=new xn;for(let s of e instanceof Cc?[e]:t?e2(e):e)n.add(s.from,s.to,s.value);return n.finish()}static join(e){if(!e.length)return et.empty;let t=e[e.length-1];for(let n=e.length-2;n>=0;n--)for(let s=e[n];s!=et.empty;s=s.nextLayer)t=new et(s.chunkPos,s.chunk,t,Math.max(s.maxPoint,t.maxPoint));return t}}et.empty=new et([],[],null,-1);function e2(r){if(r.length>1)for(let e=r[0],t=1;t<r.length;t++){let n=r[t];if(Qc(e,n)>0)return r.slice().sort(Qc);e=n}return r}et.empty.nextLayer=et.empty;class xn{finishChunk(e){this.chunks.push(new Bu(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,n){this.addInner(e,t,n)||(this.nextLayer||(this.nextLayer=new xn)).add(e,t,n)}addInner(e,t,n){let s=e-this.lastTo||n.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=t,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let n=t.value.length-1;return this.last=t.value[n],this.lastFrom=t.from[n]+e,this.lastTo=t.to[n]+e,!0}finish(){return this.finishInner(et.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=et.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}}function Hh(r,e,t){let n=new Map;for(let i of r)for(let o=0;o<i.chunk.length;o++)i.chunk[o].maxPoint<=0&&n.set(i.chunk[o],i.chunkPos[o]);let s=new Set;for(let i of e)for(let o=0;o<i.chunk.length;o++){let a=n.get(i.chunk[o]);a!=null&&(t?t.mapPos(a):a)==i.chunkPos[o]&&!t?.touchesRange(a,a+i.chunk[o].length)&&s.add(i.chunk[o])}return s}class mm{constructor(e,t,n,s=0){this.layer=e,this.skip=t,this.minPoint=n,this.rank=s}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,t=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,t,!1),this}gotoInner(e,t,n){for(;this.chunkIndex<this.layer.chunk.length;){let s=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(s)||this.layer.chunkEnd(this.chunkIndex)<e||s.maxPoint<this.minPoint))break;this.chunkIndex++,n=!1}if(this.chunkIndex<this.layer.chunk.length){let s=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0);(!n||this.rangeIndex<s)&&this.setRangeIndex(s)}this.next()}forward(e,t){(this.to-e||this.endSide-t)<0&&this.gotoInner(e,t,!0)}next(){for(;;)if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}else{let e=this.layer.chunkPos[this.chunkIndex],t=this.layer.chunk[this.chunkIndex],n=e+t.from[this.rangeIndex];if(this.from=n,this.to=e+t.to[this.rangeIndex],this.value=t.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}}class qi{constructor(e){this.heap=e}static from(e,t=null,n=-1){let s=[];for(let i=0;i<e.length;i++)for(let o=e[i];!o.isEmpty;o=o.nextLayer)o.maxPoint>=n&&s.push(new mm(o,t,n,i));return s.length==1?s[0]:new qi(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let n of this.heap)n.goto(e,t);for(let n=this.heap.length>>1;n>=0;n--)Cl(this.heap,n);return this.next(),this}forward(e,t){for(let n of this.heap)n.forward(e,t);for(let n=this.heap.length>>1;n>=0;n--)Cl(this.heap,n);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),Cl(this.heap,0)}}}function Cl(r,e){for(let t=r[e];;){let n=(e<<1)+1;if(n>=r.length)break;let s=r[n];if(n+1<r.length&&s.compare(r[n+1])>=0&&(s=r[n+1],n++),t.compare(s)<0)break;r[n]=t,r[e]=s,e=n}}class $i{constructor(e,t,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=qi.from(e,t,n)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Do(this.active,e),Do(this.activeTo,e),Do(this.activeRank,e),this.minActive=Jh(this.active,this.activeTo)}addActive(e){let t=0,{value:n,to:s,rank:i}=this.cursor;for(;t<this.activeRank.length&&(i-this.activeRank[t]||s-this.activeTo[t])>0;)t++;Lo(this.active,t,n),Lo(this.activeTo,t,s),Lo(this.activeRank,t,i),e&&Lo(e,t,this.cursor.from),this.minActive=Jh(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),n&&Do(n,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let i=this.cursor.value;if(!i.point)this.addActive(n),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)this.cursor.next();else{this.point=i,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=i.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else{this.to=this.endSide=1e9;break}}if(n){this.openStart=0;for(let s=n.length-1;s>=0&&n[s]<e;s--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let t=[];for(let n=this.active.length-1;n>=0&&!(this.activeRank[n]<this.pointRank);n--)(this.activeTo[n]>e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&t.push(this.active[n]);return t.reverse()}openEnd(e){let t=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)t++;return t}}function Kh(r,e,t,n,s,i){r.goto(e),t.goto(n);let o=n+s,a=n,l=n-e,c=!!i.boundChange;for(let u=!1;;){let h=r.to+l-t.to,p=h||r.endSide-t.endSide,f=p<0?r.to+l:t.to,g=Math.min(f,o);if(r.point||t.point?(r.point&&t.point&&Ru(r.point,t.point)&&Pc(r.activeForPoint(r.to),t.activeForPoint(t.to))||i.comparePoint(a,g,r.point,t.point),u=!1):(u&&i.boundChange(a),g>a&&!Pc(r.active,t.active)&&i.compareRange(a,g,r.active,t.active),c&&g<o&&(h||r.openEnd(f)!=t.openEnd(f))&&(u=!0)),f>o)break;a=f,p<=0&&r.next(),p>=0&&t.next()}}function Pc(r,e){if(r.length!=e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!=e[t]&&!Ru(r[t],e[t]))return!1;return!0}function Do(r,e){for(let t=e,n=r.length-1;t<n;t++)r[t]=r[t+1];r.pop()}function Lo(r,e,t){for(let n=r.length-1;n>=e;n--)r[n+1]=r[n];r[e]=t}function Jh(r,e){let t=-1,n=1e9;for(let s=0;s<e.length;s++)(e[s]-n||r[s].endSide-r[t].endSide)<0&&(t=s,n=e[s]);return t}function Rr(r,e,t=r.length){let n=0;for(let s=0;s<t&&s<r.length;)r.charCodeAt(s)==9?(n+=e-n%e,s++):(n++,s=Mt(r,s));return n}function Tc(r,e,t,n){for(let s=0,i=0;;){if(i>=e)return s;if(s==r.length)break;i+=r.charCodeAt(s)==9?t-i%t:1,s=Mt(r,s)}return n===!0?-1:r.length}const Mc="ͼ",ed=typeof Symbol>"u"?"__"+Mc:Symbol.for(Mc),Ac=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),td=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Ln{constructor(e,t){this.rules=[];let{finish:n}=t||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function i(o,a,l,c){let u=[],h=/^@(\w+)\b/.exec(o[0]),p=h&&h[1]=="keyframes";if(h&&a==null)return l.push(o[0]+";");for(let f in a){let g=a[f];if(/&/.test(f))i(f.split(/,\s*/).map(O=>o.map(x=>O.replace(/&/,x))).reduce((O,x)=>O.concat(x)),g,l);else if(g&&typeof g=="object"){if(!h)throw new RangeError("The value of a property ("+f+") should be a primitive value.");i(s(f),g,u,p)}else g!=null&&u.push(f.replace(/_.*/,"").replace(/[A-Z]/g,O=>"-"+O.toLowerCase())+": "+g+";")}(u.length||p)&&l.push((n&&!h&&!c?o.map(n):o).join(", ")+" {"+u.join(" ")+"}")}for(let o in e)i(s(o),e[o],this.rules)}getRules(){return this.rules.join(`
|
|
16
|
+
`)}static newName(){let e=td[ed]||1;return td[ed]=e+1,Mc+e.toString(36)}static mount(e,t,n){let s=e[Ac],i=n&&n.nonce;s?i&&s.setNonce(i):s=new t2(e,i),s.mount(Array.isArray(t)?t:[t],e)}}let rd=new Map;class t2{constructor(e,t){let n=e.ownerDocument||e,s=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let i=rd.get(n);if(i)return e[Ac]=i;this.sheet=new s.CSSStyleSheet,rd.set(n,this)}else this.styleTag=n.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Ac]=this}mount(e,t){let n=this.sheet,s=0,i=0;for(let o=0;o<e.length;o++){let a=e[o],l=this.modules.indexOf(a);if(l<i&&l>-1&&(this.modules.splice(l,1),i--,l=-1),l==-1){if(this.modules.splice(i++,0,a),n)for(let c=0;c<a.rules.length;c++)n.insertRule(a.rules[c],s++)}else{for(;i<l;)s+=this.modules[i++].rules.length;s+=a.rules.length,i++}}if(n)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets]);else{let o="";for(let l=0;l<this.modules.length;l++)o+=this.modules[l].getRules()+`
|
|
17
|
+
`;this.styleTag.textContent=o;let a=t.head||t;this.styleTag.parentNode!=a&&a.insertBefore(this.styleTag,a.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}}var Xn={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Yi={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},r2=typeof navigator<"u"&&/Mac/.test(navigator.platform),n2=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Et=0;Et<10;Et++)Xn[48+Et]=Xn[96+Et]=String(Et);for(var Et=1;Et<=24;Et++)Xn[Et+111]="F"+Et;for(var Et=65;Et<=90;Et++)Xn[Et]=String.fromCharCode(Et+32),Yi[Et]=String.fromCharCode(Et);for(var Ql in Xn)Yi.hasOwnProperty(Ql)||(Yi[Ql]=Xn[Ql]);function s2(r){var e=r2&&r.metaKey&&r.shiftKey&&!r.ctrlKey&&!r.altKey||n2&&r.shiftKey&&r.key&&r.key.length==1||r.key=="Unidentified",t=!e&&r.key||(r.shiftKey?Yi:Xn)[r.keyCode]||r.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function ct(){var r=arguments[0];typeof r=="string"&&(r=document.createElement(r));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=t[n];typeof s=="string"?r.setAttribute(n,s):s!=null&&(r[n]=s)}e++}for(;e<arguments.length;e++)gm(r,arguments[e]);return r}function gm(r,e){if(typeof e=="string")r.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)r.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)gm(r,e[t]);else throw new RangeError("Unsupported child node: "+e)}let Yt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},_c=typeof document<"u"?document:{documentElement:{style:{}}};const Rc=/Edge\/(\d+)/.exec(Yt.userAgent),Om=/MSIE \d/.test(Yt.userAgent),Bc=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Yt.userAgent),ul=!!(Om||Bc||Rc),nd=!ul&&/gecko\/(\d+)/i.test(Yt.userAgent),Pl=!ul&&/Chrome\/(\d+)/.exec(Yt.userAgent),i2="webkitFontSmoothing"in _c.documentElement.style,Zc=!ul&&/Apple Computer/.test(Yt.vendor),sd=Zc&&(/Mobile\/\w+/.test(Yt.userAgent)||Yt.maxTouchPoints>2);var Te={mac:sd||/Mac/.test(Yt.platform),windows:/Win/.test(Yt.platform),linux:/Linux|X11/.test(Yt.platform),ie:ul,ie_version:Om?_c.documentMode||6:Bc?+Bc[1]:Rc?+Rc[1]:0,gecko:nd,gecko_version:nd?+(/Firefox\/(\d+)/.exec(Yt.userAgent)||[0,0])[1]:0,chrome:!!Pl,chrome_version:Pl?+Pl[1]:0,ios:sd,android:/Android\b/.test(Yt.userAgent),webkit_version:i2?+(/\bAppleWebKit\/(\d+)/.exec(Yt.userAgent)||[0,0])[1]:0,safari:Zc,safari_version:Zc?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Yt.userAgent)||[0,0])[1]:0,tabSize:_c.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Zu(r,e){for(let t in r)t=="class"&&e.class?e.class+=" "+r.class:t=="style"&&e.style?e.style+=";"+r.style:e[t]=r[t];return e}const Pa=Object.create(null);function Eu(r,e,t){if(r==e)return!0;r||(r=Pa),e||(e=Pa);let n=Object.keys(r),s=Object.keys(e);if(n.length-0!=s.length-0)return!1;for(let i of n)if(i!=t&&(s.indexOf(i)==-1||r[i]!==e[i]))return!1;return!0}function o2(r,e){for(let t=r.attributes.length-1;t>=0;t--){let n=r.attributes[t].name;e[n]==null&&r.removeAttribute(n)}for(let t in e){let n=e[t];t=="style"?r.style.cssText=n:r.getAttribute(t)!=n&&r.setAttribute(t,n)}}function id(r,e,t){let n=!1;if(e)for(let s in e)t&&s in t||(n=!0,s=="style"?r.style.cssText="":r.removeAttribute(s));if(t)for(let s in t)e&&e[s]==t[s]||(n=!0,s=="style"?r.style.cssText=t[s]:r.setAttribute(s,t[s]));return n}function a2(r){let e=Object.create(null);for(let t=0;t<r.attributes.length;t++){let n=r.attributes[t];e[n.name]=n.value}return e}class on{eq(e){return!1}updateDOM(e,t){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,n){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}}var Xt=(function(r){return r[r.Text=0]="Text",r[r.WidgetBefore=1]="WidgetBefore",r[r.WidgetAfter=2]="WidgetAfter",r[r.WidgetRange=3]="WidgetRange",r})(Xt||(Xt={}));class Le extends Dn{constructor(e,t,n,s){super(),this.startSide=e,this.endSide=t,this.widget=n,this.spec=s}get heightRelevant(){return!1}static mark(e){return new bo(e)}static widget(e){let t=Math.max(-1e4,Math.min(1e4,e.side||0)),n=!!e.block;return t+=n&&!e.inlineOrder?t>0?3e8:-4e8:t>0?1e8:-1e8,new fs(e,t,t,n,e.widget||null,!1)}static replace(e){let t=!!e.block,n,s;if(e.isBlockGap)n=-5e8,s=4e8;else{let{start:i,end:o}=vm(e,t);n=(i?t?-3e8:-1:5e8)-1,s=(o?t?2e8:1:-6e8)+1}return new fs(e,n,s,t,e.widget||null,!0)}static line(e){return new xo(e)}static set(e,t=!1){return et.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Le.none=et.empty;class bo extends Le{constructor(e){let{start:t,end:n}=vm(e);super(t?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?Zu(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||Pa}eq(e){return this==e||e instanceof bo&&this.tagName==e.tagName&&Eu(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}}bo.prototype.point=!1;class xo extends Le{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof xo&&this.spec.class==e.spec.class&&Eu(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}}xo.prototype.mapMode=Dt.TrackBefore;xo.prototype.point=!0;class fs extends Le{constructor(e,t,n,s,i,o){super(t,n,i,e),this.block=s,this.isReplace=o,this.mapMode=s?t<=0?Dt.TrackBefore:Dt.TrackAfter:Dt.TrackDel}get type(){return this.startSide!=this.endSide?Xt.WidgetRange:this.startSide<=0?Xt.WidgetBefore:Xt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof fs&&l2(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}}fs.prototype.point=!0;function vm(r,e=!1){let{inclusiveStart:t,inclusiveEnd:n}=r;return t==null&&(t=r.inclusive),n==null&&(n=r.inclusive),{start:t??e,end:n??e}}function l2(r,e){return r==e||!!(r&&e&&r.compare(e))}function _s(r,e,t,n=0){let s=t.length-1;s>=0&&t[s]+n>=r?t[s]=Math.max(t[s],e):t.push(r,e)}class Fi extends Dn{constructor(e,t){super(),this.tagName=e,this.attributes=t}eq(e){return e==this||e instanceof Fi&&this.tagName==e.tagName&&Eu(this.attributes,e.attributes)}static create(e){return new Fi(e.tagName,e.attributes||Pa)}static set(e,t=!1){return et.of(e,t)}}Fi.prototype.startSide=Fi.prototype.endSide=-1;function Ui(r){let e;return r.nodeType==11?e=r.getSelection?r:r.ownerDocument:e=r,e.getSelection()}function Ec(r,e){return e?r==e||r.contains(e.nodeType!=1?e.parentNode:e):!1}function Xi(r,e){if(!e.anchorNode)return!1;try{return Ec(r,e.anchorNode)}catch{return!1}}function da(r){return r.nodeType==3?Gi(r,0,r.nodeValue.length).getClientRects():r.nodeType==1?r.getClientRects():[]}function Ii(r,e,t,n){return t?od(r,e,t,n,-1)||od(r,e,t,n,1):!1}function In(r){for(var e=0;;e++)if(r=r.previousSibling,!r)return e}function Ta(r){return r.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(r.nodeName)}function od(r,e,t,n,s){for(;;){if(r==t&&e==n)return!0;if(e==(s<0?0:yn(r))){if(r.nodeName=="DIV")return!1;let i=r.parentNode;if(!i||i.nodeType!=1)return!1;e=In(r)+(s<0?0:1),r=i}else if(r.nodeType==1){if(r=r.childNodes[e+(s<0?-1:0)],r.nodeType==1&&r.contentEditable=="false")return!1;e=s<0?yn(r):0}else return!1}}function yn(r){return r.nodeType==3?r.nodeValue.length:r.childNodes.length}function Ma(r,e){let t=e?r.left:r.right;return{left:t,right:t,top:r.top,bottom:r.bottom}}function c2(r){let e=r.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:r.innerWidth,top:0,bottom:r.innerHeight}}function bm(r,e){let t=e.width/r.offsetWidth,n=e.height/r.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-r.offsetWidth)<1)&&(t=1),(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.height-r.offsetHeight)<1)&&(n=1),{scaleX:t,scaleY:n}}function u2(r,e,t,n,s,i,o,a){let l=r.ownerDocument,c=l.defaultView||window;for(let u=r,h=!1;u&&!h;)if(u.nodeType==1){let p,f=u==l.body,g=1,O=1;if(f)p=c2(c);else{if(/^(fixed|sticky)$/.test(getComputedStyle(u).position)&&(h=!0),u.scrollHeight<=u.clientHeight&&u.scrollWidth<=u.clientWidth){u=u.assignedSlot||u.parentNode;continue}let w=u.getBoundingClientRect();({scaleX:g,scaleY:O}=bm(u,w)),p={left:w.left,right:w.left+u.clientWidth*g,top:w.top,bottom:w.top+u.clientHeight*O}}let x=0,b=0;if(s=="nearest")e.top<p.top?(b=e.top-(p.top+o),t>0&&e.bottom>p.bottom+b&&(b=e.bottom-p.bottom+o)):e.bottom>p.bottom&&(b=e.bottom-p.bottom+o,t<0&&e.top-b<p.top&&(b=e.top-(p.top+o)));else{let w=e.bottom-e.top,Q=p.bottom-p.top;b=(s=="center"&&w<=Q?e.top+w/2-Q/2:s=="start"||s=="center"&&t<0?e.top-o:e.bottom-Q+o)-p.top}if(n=="nearest"?e.left<p.left?(x=e.left-(p.left+i),t>0&&e.right>p.right+x&&(x=e.right-p.right+i)):e.right>p.right&&(x=e.right-p.right+i,t<0&&e.left<p.left+x&&(x=e.left-(p.left+i))):x=(n=="center"?e.left+(e.right-e.left)/2-(p.right-p.left)/2:n=="start"==a?e.left-i:e.right-(p.right-p.left)+i)-p.left,x||b)if(f)c.scrollBy(x,b);else{let w=0,Q=0;if(b){let P=u.scrollTop;u.scrollTop+=b/O,Q=(u.scrollTop-P)*O}if(x){let P=u.scrollLeft;u.scrollLeft+=x/g,w=(u.scrollLeft-P)*g}e={left:e.left-w,top:e.top-Q,right:e.right-w,bottom:e.bottom-Q},w&&Math.abs(w-x)<1&&(n="nearest"),Q&&Math.abs(Q-b)<1&&(s="nearest")}if(f)break;(e.top<p.top||e.bottom>p.bottom||e.left<p.left||e.right>p.right)&&(e={left:Math.max(e.left,p.left),right:Math.min(e.right,p.right),top:Math.max(e.top,p.top),bottom:Math.min(e.bottom,p.bottom)}),u=u.assignedSlot||u.parentNode}else if(u.nodeType==11)u=u.host;else break}function h2(r){let e=r.ownerDocument,t,n;for(let s=r.parentNode;s&&!(s==e.body||t&&n);)if(s.nodeType==1)!n&&s.scrollHeight>s.clientHeight&&(n=s),!t&&s.scrollWidth>s.clientWidth&&(t=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:t,y:n}}class d2{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:n}=e;this.set(t,Math.min(e.anchorOffset,t?yn(t):0),n,Math.min(e.focusOffset,n?yn(n):0))}set(e,t,n,s){this.anchorNode=e,this.anchorOffset=t,this.focusNode=n,this.focusOffset=s}}let es=null;Te.safari&&Te.safari_version>=26&&(es=!1);function xm(r){if(r.setActive)return r.setActive();if(es)return r.focus(es);let e=[];for(let t=r;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(r.focus(es==null?{get preventScroll(){return es={preventScroll:!0},!0}}:void 0),!es){es=!1;for(let t=0;t<e.length;){let n=e[t++],s=e[t++],i=e[t++];n.scrollTop!=s&&(n.scrollTop=s),n.scrollLeft!=i&&(n.scrollLeft=i)}}}let ad;function Gi(r,e,t=e){let n=ad||(ad=document.createRange());return n.setEnd(r,t),n.setStart(r,e),n}function Rs(r,e,t,n){let s={key:e,code:e,keyCode:t,which:t,cancelable:!0};n&&({altKey:s.altKey,ctrlKey:s.ctrlKey,shiftKey:s.shiftKey,metaKey:s.metaKey}=n);let i=new KeyboardEvent("keydown",s);i.synthetic=!0,r.dispatchEvent(i);let o=new KeyboardEvent("keyup",s);return o.synthetic=!0,r.dispatchEvent(o),i.defaultPrevented||o.defaultPrevented}function f2(r){for(;r;){if(r&&(r.nodeType==9||r.nodeType==11&&r.host))return r;r=r.assignedSlot||r.parentNode}return null}function p2(r,e){let t=e.focusNode,n=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=n)return!1;for(n=Math.min(n,yn(t));;)if(n){if(t.nodeType!=1)return!1;let s=t.childNodes[n-1];s.contentEditable=="false"?n--:(t=s,n=yn(t))}else{if(t==r)return!0;n=In(t),t=t.parentNode}}function ym(r){return r.scrollTop>Math.max(1,r.scrollHeight-r.clientHeight-4)}function km(r,e){for(let t=r,n=e;;){if(t.nodeType==3&&n>0)return{node:t,offset:n};if(t.nodeType==1&&n>0){if(t.contentEditable=="false")return null;t=t.childNodes[n-1],n=yn(t)}else if(t.parentNode&&!Ta(t))n=In(t),t=t.parentNode;else return null}}function wm(r,e){for(let t=r,n=e;;){if(t.nodeType==3&&n<t.nodeValue.length)return{node:t,offset:n};if(t.nodeType==1&&n<t.childNodes.length){if(t.contentEditable=="false")return null;t=t.childNodes[n],n=0}else if(t.parentNode&&!Ta(t))n=In(t)+1,t=t.parentNode;else return null}}class _r{constructor(e,t,n=!0){this.node=e,this.offset=t,this.precise=n}static before(e,t){return new _r(e.parentNode,In(e),t)}static after(e,t){return new _r(e.parentNode,In(e)+1,t)}}var dt=(function(r){return r[r.LTR=0]="LTR",r[r.RTL=1]="RTL",r})(dt||(dt={}));const ps=dt.LTR,Du=dt.RTL;function Sm(r){let e=[];for(let t=0;t<r.length;t++)e.push(1<<+r[t]);return e}const m2=Sm("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),g2=Sm("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),Dc=Object.create(null),jr=[];for(let r of["()","[]","{}"]){let e=r.charCodeAt(0),t=r.charCodeAt(1);Dc[e]=t,Dc[t]=-e}function $m(r){return r<=247?m2[r]:1424<=r&&r<=1524?2:1536<=r&&r<=1785?g2[r-1536]:1774<=r&&r<=2220?4:8192<=r&&r<=8204?256:64336<=r&&r<=65023?4:1}const O2=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/;class Kr{get dir(){return this.level%2?Du:ps}constructor(e,t,n){this.from=e,this.to=t,this.level=n}side(e,t){return this.dir==t==e?this.to:this.from}forward(e,t){return e==(this.dir==t)}static find(e,t,n,s){let i=-1;for(let o=0;o<e.length;o++){let a=e[o];if(a.from<=t&&a.to>=t){if(a.level==n)return o;(i<0||(s!=0?s<0?a.from<t:a.to>t:e[i].level>a.level))&&(i=o)}}if(i<0)throw new RangeError("Index out of range");return i}}function Cm(r,e){if(r.length!=e.length)return!1;for(let t=0;t<r.length;t++){let n=r[t],s=e[t];if(n.from!=s.from||n.to!=s.to||n.direction!=s.direction||!Cm(n.inner,s.inner))return!1}return!0}const ut=[];function v2(r,e,t,n,s){for(let i=0;i<=n.length;i++){let o=i?n[i-1].to:e,a=i<n.length?n[i].from:t,l=i?256:s;for(let c=o,u=l,h=l;c<a;c++){let p=$m(r.charCodeAt(c));p==512?p=u:p==8&&h==4&&(p=16),ut[c]=p==4?2:p,p&7&&(h=p),u=p}for(let c=o,u=l,h=l;c<a;c++){let p=ut[c];if(p==128)c<a-1&&u==ut[c+1]&&u&24?p=ut[c]=u:ut[c]=256;else if(p==64){let f=c+1;for(;f<a&&ut[f]==64;)f++;let g=c&&u==8||f<t&&ut[f]==8?h==1?1:8:256;for(let O=c;O<f;O++)ut[O]=g;c=f-1}else p==8&&h==1&&(ut[c]=1);u=p,p&7&&(h=p)}}}function b2(r,e,t,n,s){let i=s==1?2:1;for(let o=0,a=0,l=0;o<=n.length;o++){let c=o?n[o-1].to:e,u=o<n.length?n[o].from:t;for(let h=c,p,f,g;h<u;h++)if(f=Dc[p=r.charCodeAt(h)])if(f<0){for(let O=a-3;O>=0;O-=3)if(jr[O+1]==-f){let x=jr[O+2],b=x&2?s:x&4?x&1?i:s:0;b&&(ut[h]=ut[jr[O]]=b),a=O;break}}else{if(jr.length==189)break;jr[a++]=h,jr[a++]=p,jr[a++]=l}else if((g=ut[h])==2||g==1){let O=g==s;l=O?0:1;for(let x=a-3;x>=0;x-=3){let b=jr[x+2];if(b&2)break;if(O)jr[x+2]|=2;else{if(b&4)break;jr[x+2]|=4}}}}}function x2(r,e,t,n){for(let s=0,i=n;s<=t.length;s++){let o=s?t[s-1].to:r,a=s<t.length?t[s].from:e;for(let l=o;l<a;){let c=ut[l];if(c==256){let u=l+1;for(;;)if(u==a){if(s==t.length)break;u=t[s++].to,a=s<t.length?t[s].from:e}else if(ut[u]==256)u++;else break;let h=i==1,p=(u<e?ut[u]:n)==1,f=h==p?h?1:2:n;for(let g=u,O=s,x=O?t[O-1].to:r;g>l;)g==x&&(g=t[--O].from,x=O?t[O-1].to:r),ut[--g]=f;l=u}else i=c,l++}}}function Lc(r,e,t,n,s,i,o){let a=n%2?2:1;if(n%2==s%2)for(let l=e,c=0;l<t;){let u=!0,h=!1;if(c==i.length||l<i[c].from){let O=ut[l];O!=a&&(u=!1,h=O==16)}let p=!u&&a==1?[]:null,f=u?n:n+1,g=l;e:for(;;)if(c<i.length&&g==i[c].from){if(h)break e;let O=i[c];if(!u)for(let x=O.to,b=c+1;;){if(x==t)break e;if(b<i.length&&i[b].from==x)x=i[b++].to;else{if(ut[x]==a)break e;break}}if(c++,p)p.push(O);else{O.from>l&&o.push(new Kr(l,O.from,f));let x=O.direction==ps!=!(f%2);Xc(r,x?n+1:n,s,O.inner,O.from,O.to,o),l=O.to}g=O.to}else{if(g==t||(u?ut[g]!=a:ut[g]==a))break;g++}p?Lc(r,l,g,n+1,s,p,o):l<g&&o.push(new Kr(l,g,f)),l=g}else for(let l=t,c=i.length;l>e;){let u=!0,h=!1;if(!c||l>i[c-1].to){let O=ut[l-1];O!=a&&(u=!1,h=O==16)}let p=!u&&a==1?[]:null,f=u?n:n+1,g=l;e:for(;;)if(c&&g==i[c-1].to){if(h)break e;let O=i[--c];if(!u)for(let x=O.from,b=c;;){if(x==e)break e;if(b&&i[b-1].to==x)x=i[--b].from;else{if(ut[x-1]==a)break e;break}}if(p)p.push(O);else{O.to<l&&o.push(new Kr(O.to,l,f));let x=O.direction==ps!=!(f%2);Xc(r,x?n+1:n,s,O.inner,O.from,O.to,o),l=O.from}g=O.from}else{if(g==e||(u?ut[g-1]!=a:ut[g-1]==a))break;g--}p?Lc(r,g,l,n+1,s,p,o):g<l&&o.push(new Kr(g,l,f)),l=g}}function Xc(r,e,t,n,s,i,o){let a=e%2?2:1;v2(r,s,i,n,a),b2(r,s,i,n,a),x2(s,i,n,a),Lc(r,s,i,e,t,n,o)}function y2(r,e,t){if(!r)return[new Kr(0,0,e==Du?1:0)];if(e==ps&&!t.length&&!O2.test(r))return Qm(r.length);if(t.length)for(;r.length>ut.length;)ut[ut.length]=256;let n=[],s=e==ps?0:1;return Xc(r,s,s,t,0,r.length,n),n}function Qm(r){return[new Kr(0,r,0)]}let Pm="";function k2(r,e,t,n,s){var i;let o=n.head-r.from,a=Kr.find(e,o,(i=n.bidiLevel)!==null&&i!==void 0?i:-1,n.assoc),l=e[a],c=l.side(s,t);if(o==c){let p=a+=s?1:-1;if(p<0||p>=e.length)return null;l=e[a=p],o=l.side(!s,t),c=l.side(s,t)}let u=Mt(r.text,o,l.forward(s,t));(u<l.from||u>l.to)&&(u=c),Pm=r.text.slice(Math.min(o,u),Math.max(o,u));let h=a==(s?e.length-1:0)?null:e[a+(s?1:-1)];return h&&u==c&&h.level+(s?0:1)<l.level?re.cursor(h.side(!s,t)+r.from,h.forward(s,t)?1:-1,h.level):re.cursor(u+r.from,l.forward(s,t)?-1:1,l.level)}function w2(r,e,t){for(let n=e;n<t;n++){let s=$m(r.charCodeAt(n));if(s==1)return ps;if(s==2||s==4)return Du}return ps}const Tm=Ce.define(),Mm=Ce.define(),Am=Ce.define(),_m=Ce.define(),Ic=Ce.define(),Rm=Ce.define(),Bm=Ce.define(),Lu=Ce.define(),Xu=Ce.define(),Zm=Ce.define({combine:r=>r.some(e=>e)}),Em=Ce.define({combine:r=>r.some(e=>e)}),Dm=Ce.define();class Bs{constructor(e,t="nearest",n="nearest",s=5,i=5,o=!1){this.range=e,this.y=t,this.x=n,this.yMargin=s,this.xMargin=i,this.isSnapshot=o}map(e){return e.empty?this:new Bs(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new Bs(re.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const Xo=je.define({map:(r,e)=>r.map(e)}),Lm=je.define();function tr(r,e,t){let n=r.facet(_m);n.length?n[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}const mn=Ce.define({combine:r=>r.length?r[0]:!0});let S2=0;const Ps=Ce.define({combine(r){return r.filter((e,t)=>{for(let n=0;n<t;n++)if(r[n].plugin==e.plugin)return!1;return!0})}});class bt{constructor(e,t,n,s,i){this.id=e,this.create=t,this.domEventHandlers=n,this.domEventObservers=s,this.baseExtensions=i(this),this.extension=this.baseExtensions.concat(Ps.of({plugin:this,arg:void 0}))}of(e){return this.baseExtensions.concat(Ps.of({plugin:this,arg:e}))}static define(e,t){const{eventHandlers:n,eventObservers:s,provide:i,decorations:o}=t||{};return new bt(S2++,e,n,s,a=>{let l=[];return o&&l.push(hl.of(c=>{let u=c.plugin(a);return u?o(u):Le.none})),i&&l.push(i(a)),l})}static fromClass(e,t){return bt.define((n,s)=>new e(n,s),t)}}class Tl{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(n){if(tr(t.state,n,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){tr(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(n){tr(e.state,n,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const Xm=Ce.define(),Iu=Ce.define(),hl=Ce.define(),Im=Ce.define(),Vu=Ce.define(),yo=Ce.define(),Vm=Ce.define();function ld(r,e){let t=r.state.facet(Vm);if(!t.length)return t;let n=t.map(i=>i instanceof Function?i(r):i),s=[];return et.spans(n,e.from,e.to,{point(){},span(i,o,a,l){let c=i-e.from,u=o-e.from,h=s;for(let p=a.length-1;p>=0;p--,l--){let f=a[p].spec.bidiIsolate,g;if(f==null&&(f=w2(e.text,c,u)),l>0&&h.length&&(g=h[h.length-1]).to==c&&g.direction==f)g.to=u,h=g.inner;else{let O={from:c,to:u,direction:f,inner:[]};h.push(O),h=O.inner}}}}),s}const zm=Ce.define();function zu(r){let e=0,t=0,n=0,s=0;for(let i of r.state.facet(zm)){let o=i(r);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(n=Math.max(n,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:e,right:t,top:n,bottom:s}}const _i=Ce.define();class br{constructor(e,t,n,s){this.fromA=e,this.toA=t,this.fromB=n,this.toB=s}join(e){return new br(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,n=this;for(;t>0;t--){let s=e[t-1];if(!(s.fromA>n.toA)){if(s.toA<n.fromA)break;n=n.join(s),e.splice(t-1,1)}}return e.splice(t,0,n),e}static extendWithRanges(e,t){if(t.length==0)return e;let n=[];for(let s=0,i=0,o=0;;){let a=s<e.length?e[s].fromB:1e9,l=i<t.length?t[i]:1e9,c=Math.min(a,l);if(c==1e9)break;let u=c+o,h=c,p=u;for(;;)if(i<t.length&&t[i]<=h){let f=t[i+1];i+=2,h=Math.max(h,f);for(let g=s;g<e.length&&e[g].fromB<=h;g++)o=e[g].toA-e[g].toB;p=Math.max(p,f+o)}else if(s<e.length&&e[s].fromB<=h){let f=e[s++];h=Math.max(h,f.toB),p=Math.max(p,f.toA),o=f.toA-f.toB}else break;n.push(new br(u,p,c,h))}return n}}class Aa{constructor(e,t,n){this.view=e,this.state=t,this.transactions=n,this.flags=0,this.startState=e.state,this.changes=Ct.empty(this.startState.doc.length);for(let i of n)this.changes=this.changes.compose(i.changes);let s=[];this.changes.iterChangedRanges((i,o,a,l)=>s.push(new br(i,o,a,l))),this.changedRanges=s}static create(e,t,n){return new Aa(e,t,n)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}const $2=[];class wt{constructor(e,t,n=0){this.dom=e,this.length=t,this.flags=n,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return $2}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&o2(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let n=t;for(let s of this.children){if(s==e)return n;n+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t){return null}domPosFor(e,t){let n=In(this.dom),s=this.length?e>0:t>0;return new _r(this.parent.dom,n+(s?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof fl)return e;return null}static get(e){return e.cmTile}}class dl extends wt{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,n=null,s,i=e?.node==t?e:null,o=0;for(let a of this.children){if(a.sync(e),o+=a.length+a.breakAfter,s=n?n.nextSibling:t.firstChild,i&&s!=a.dom&&(i.written=!0),a.dom.parentNode==t)for(;s&&s!=a.dom;)s=cd(s);else t.insertBefore(a.dom,s);n=a.dom}for(s=n?n.nextSibling:t.firstChild,i&&s&&(i.written=!0);s;)s=cd(s);this.length=o}}function cd(r){let e=r.nextSibling;return r.parentNode.removeChild(r),e}class fl extends dl{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=wt.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],n=this,s=0,i=0;;)if(s==n.children.length){if(!t.length)return;n=n.parent,n.breakAfter&&i++,s=t.pop()}else{let o=n.children[s++];if(o instanceof gn)t.push(s),n=o,s=0;else{let a=i+o.length,l=e(o,i);if(l!==void 0)return l;i=a+o.breakAfter}}}resolveBlock(e,t){let n,s=-1,i,o=-1;if(this.blockTiles((a,l)=>{let c=l+a.length;if(e>=l&&e<=c){if(a.isWidget()&&t>=-1&&t<=1){if(a.flags&32)return!0;a.flags&16&&(n=void 0)}(l<e||e==c&&(t<-1?a.length:a.covers(1)))&&(!n||!a.isWidget()&&n.isWidget())&&(n=a,s=e-l),(c>e||e==l&&(t>1?a.length:a.covers(-1)))&&(!i||!a.isWidget()&&i.isWidget())&&(i=a,o=e-l)}}),!n&&!i)throw new Error("No tile at position "+e);return n&&t<0||!i?{tile:n,offset:s}:{tile:i,offset:o}}}class gn extends dl{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let n=new gn(t||document.createElement(e.tagName),e);return t||(n.flags|=4),n}}class Ws extends dl{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,n){let s=new Ws(t||document.createElement("div"),e);return(!t||!n)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(e,t,n){let s=null,i=-1,o=null,a=-1;function l(u,h){for(let p=0,f=0;p<u.children.length&&f<=h;p++){let g=u.children[p],O=f+g.length;O>=h&&(g.isComposite()?l(g,h-f):(!o||o.isHidden&&(t>0||n&&Q2(o,g)))&&(O>h||g.flags&32)?(o=g,a=h-f):(f<h||g.flags&16&&!g.isHidden)&&(s=g,i=h-f)),f=O}}l(this,e);let c=(t<0?s:o)||s||o;return c?{tile:c,offset:c==s?i:a}:null}coordsIn(e,t){let n=this.resolveInline(e,t,!0);return n?n.tile.coordsIn(Math.max(0,n.offset),t):C2(this)}domIn(e,t){let n=this.resolveInline(e,t);if(n){let{tile:s,offset:i}=n;if(this.dom.contains(s.dom))return s.isText()?new _r(s.dom,Math.min(s.dom.nodeValue.length,i)):s.domPosFor(i,s.flags&16?1:s.flags&32?-1:t);let o=n.tile.parent,a=!1;for(let l of o.children){if(a)return new _r(l.dom,0);l==n.tile&&(a=!0)}}return new _r(this.dom,0)}}function C2(r){let e=r.dom.lastChild;if(!e)return r.dom.getBoundingClientRect();let t=da(e);return t[t.length-1]||null}function Q2(r,e){let t=r.coordsIn(0,1),n=e.coordsIn(0,1);return t&&n&&n.top<t.bottom}class Jt extends dl{constructor(e,t){super(e),this.mark=t}get domAttrs(){return this.mark.attrs}static of(e,t){let n=new Jt(t||document.createElement(e.tagName),e);return t||(n.flags|=4),n}}class is extends wt{constructor(e,t){super(e,t.length),this.text=t}sync(e){this.flags&2||(super.sync(e),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text))}isText(){return!0}toString(){return JSON.stringify(this.text)}coordsIn(e,t){let n=this.dom.nodeValue.length;e>n&&(e=n);let s=e,i=e,o=0;e==0&&t<0||e==n&&t>=0?Te.chrome||Te.gecko||(e?(s--,o=1):i<n&&(i++,o=-1)):t<0?s--:i<n&&i++;let a=Gi(this.dom,s,i).getClientRects();if(!a.length)return null;let l=a[(o?o<0:t>=0)?0:a.length-1];return Te.safari&&!o&&l.width==0&&(l=Array.prototype.find.call(a,c=>c.width)||l),o?Ma(l,o<0):l||null}static of(e,t){let n=new is(t||document.createTextNode(e),e);return t||(n.flags|=2),n}}class ms extends wt{constructor(e,t,n,s){super(e,t,s),this.widget=n}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,n){let s=this.widget.coordsAt(this.dom,e,t);if(s)return s;if(n)return Ma(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let i=this.dom.getClientRects(),o=null;if(!i.length)return null;let a=this.flags&16?!0:this.flags&32?!1:e>0;for(let l=a?i.length-1:0;o=i[l],!(e>0?l==0:l==i.length-1||o.top<o.bottom);l+=a?-1:1);return Ma(o,!a)}}get overrideDOMText(){if(!this.length)return st.empty;let{root:e}=this;if(!e)return st.empty;let t=this.posAtStart;return e.view.state.doc.slice(t,t+this.length)}destroy(){super.destroy(),this.widget.destroy(this.dom)}static of(e,t,n,s,i){return i||(i=e.toDOM(t),e.editable||(i.contentEditable="false")),new ms(i,n,e,s)}}class _a extends wt{constructor(e){let t=document.createElement("img");t.className="cm-widgetBuffer",t.setAttribute("aria-hidden","true"),super(t,0,e)}get isHidden(){return!0}get overrideDOMText(){return st.empty}coordsIn(e){return this.dom.getBoundingClientRect()}}class P2{constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,n){let{tile:s,index:i,beforeBreak:o,parents:a}=this;for(;e||t>0;)if(s.isComposite())if(o){if(!e)break;n&&n.break(),e--,o=!1}else if(i==s.children.length){if(!e&&!a.length)break;n&&n.leave(s),o=!!s.breakAfter,{tile:s,index:i}=a.pop(),i++}else{let l=s.children[i],c=l.breakAfter;(t>0?l.length<=e:l.length<e)&&(!n||n.skip(l,0,l.length)!==!1||!l.isComposite)?(o=!!c,i++,e-=l.length):(a.push({tile:s,index:i}),s=l,i=0,n&&l.isComposite()&&n.enter(l))}else if(i==s.length)o=!!s.breakAfter,{tile:s,index:i}=a.pop(),i++;else if(e){let l=Math.min(e,s.length-i);n&&n.skip(s,i,i+l),e-=l,i+=l}else break;return this.tile=s,this.index=i,this.beforeBreak=o,this}get root(){return this.parents.length?this.parents[0].tile:this.tile}}class T2{constructor(e,t,n,s){this.from=e,this.to=t,this.wrapper=n,this.rank=s}}class M2{constructor(e,t,n){this.cache=e,this.root=t,this.blockWrappers=n,this.curLine=null,this.lastBlock=null,this.afterWidget=null,this.pos=0,this.wrappers=[],this.wrapperPos=0}addText(e,t,n,s){var i;this.flushBuffer();let o=this.ensureMarks(t,n),a=o.lastChild;if(a&&a.isText()&&!(a.flags&8)&&a.length+e.length<512){this.cache.reused.set(a,2);let l=o.children[o.children.length-1]=new is(a.dom,a.text+e);l.parent=o}else o.append(s||is.of(e,(i=this.cache.find(is))===null||i===void 0?void 0:i.dom));this.pos+=e.length,this.afterWidget=null}addComposition(e,t){let n=this.curLine;n.dom!=t.line.dom&&(n.setDOM(this.cache.reused.has(t.line)?Ml(t.line.dom):t.line.dom),this.cache.reused.set(t.line,2));let s=n;for(let a=t.marks.length-1;a>=0;a--){let l=t.marks[a],c=s.lastChild;if(c instanceof Jt&&c.mark.eq(l.mark))c.dom!=l.dom&&c.setDOM(Ml(l.dom)),s=c;else{if(this.cache.reused.get(l)){let h=wt.get(l.dom);h&&h.setDOM(Ml(l.dom))}let u=Jt.of(l.mark,l.dom);s.append(u),s=u}this.cache.reused.set(l,2)}let i=wt.get(e.text);i&&this.cache.reused.set(i,2);let o=new is(e.text,e.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(e,t,n){let s=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);s||this.flushBuffer();let i=this.ensureMarks(t,n);!s&&!(e.flags&16)&&i.append(this.getBuffer(1)),i.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,n){this.flushBuffer(),this.ensureMarks(t,n).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var n;e||(e=Nm);let s=Ws.start(e,t||((n=this.cache.find(Ws))===null||n===void 0?void 0:n.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var n;let s=this.curLine;for(let i=e.length-1;i>=0;i--){let o=e[i],a;if(t>0&&(a=s.lastChild)&&a instanceof Jt&&a.mark.eq(o))s=a,t--;else{let l=Jt.of(o,(n=this.cache.find(Jt,c=>c.mark.eq(o)))===null||n===void 0?void 0:n.dom);s.append(l),s=l,t=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!ud(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(Te.ios&&ud(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(Al,0,32)||new ms(Al.toDOM(),0,Al,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to<this.pos&&this.wrappers.splice(e,1);for(let e=this.blockWrappers;e.value&&e.from<=this.pos;e.next())if(e.to>=this.pos){let t=new T2(e.from,e.to,e.value,e.rank),n=this.wrappers.length;for(;n>0&&(this.wrappers[n-1].rank-t.rank||this.wrappers[n-1].to-t.to)<0;)n--;this.wrappers.splice(n,0,t)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let n of this.wrappers){let s=t.lastChild;if(n.from<this.pos&&s instanceof gn&&s.wrapper.eq(n.wrapper))t=s;else{let i=gn.of(n.wrapper,(e=this.cache.find(gn,o=>o.wrapper.eq(n.wrapper)))===null||e===void 0?void 0:e.dom);t.append(i),t=i}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),n=this.cache.find(_a,void 0,1);return n&&(n.flags=t),n||new _a(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}}class A2{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:s,lineBreak:i,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let a=this.textOff=Math.min(e,s.length);return i?null:s.slice(0,a)}let t=Math.min(this.text.length,this.textOff+e),n=this.text.slice(this.textOff,t);return this.textOff=t,n}}const Ra=[ms,Ws,is,Jt,_a,gn,fl];for(let r=0;r<Ra.length;r++)Ra[r].bucket=r;class _2{constructor(e){this.view=e,this.buckets=Ra.map(()=>[]),this.index=Ra.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,n=this.buckets[t];n.length<6?n.push(e):n[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,n=2){let s=e.bucket,i=this.buckets[s],o=this.index[s];for(let a=i.length-1;a>=0;a--){let l=(a+o)%i.length,c=i[l];if((!t||t(c))&&!this.reused.has(c))return i.splice(l,1),l<o&&this.index[s]--,this.reused.set(c,n),c}return null}findWidget(e,t,n){let s=this.buckets[0];if(s.length)for(let i=0,o=0;;i++){if(i==s.length){if(o)return null;o=1,i=0}let a=s[i];if(!this.reused.has(a)&&(o==0?a.widget.compare(e):a.widget.constructor==e.constructor&&e.updateDOM(a.dom,this.view)))return s.splice(i,1),i<this.index[0]&&this.index[0]--,a.widget==e&&a.length==t&&(a.flags&497)==n?(this.reused.set(a,1),a):(this.reused.set(a,2),new ms(a.dom,t,e,a.flags&-498|n))}}reuse(e){return this.reused.set(e,1),e}maybeReuse(e,t=2){if(!this.reused.has(e))return this.reused.set(e,t),e.dom}clear(){for(let e=0;e<this.buckets.length;e++)this.buckets[e].length=this.index[e]=0}}class R2{constructor(e,t,n,s,i){this.view=e,this.decorations=s,this.disallowBlockEffectsFor=i,this.openWidget=!1,this.openMarks=0,this.cache=new _2(e),this.text=new A2(e.state.doc),this.builder=new M2(this.cache,new fl(e,e.contentDOM),et.iter(n)),this.cache.reused.set(t,2),this.old=new P2(t),this.reuseWalker={skip:(o,a,l)=>{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,t){let n=t&&this.getCompositionContext(t.text);for(let s=0,i=0,o=0;;){let a=o<e.length?e[o++]:null,l=a?a.fromA:this.old.root.length;if(l>s){let c=l-s;this.preserve(c,!o,!a),s=l,i+=c}if(!a)break;t&&a.fromA<=t.range.fromA&&a.toA>=t.range.toA?(this.forward(a.fromA,t.range.fromA,t.range.fromA<t.range.toA?1:-1),this.emit(i,t.range.fromB),this.cache.clear(),this.builder.addComposition(t,n),this.text.skip(t.range.toB-t.range.fromB),this.forward(t.range.fromA,a.toA),this.emit(t.range.toB,a.toB)):(this.forward(a.fromA,a.toA),this.emit(i,a.toB)),i=a.toB,s=a.toA}return this.builder.curLine&&this.builder.endLine(),this.builder.root}preserve(e,t,n){let s=E2(this.old),i=this.openMarks;this.old.advance(e,n?1:-1,{skip:(o,a,l)=>{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(l-a);else{let c=l>0||a<o.length?ms.of(o.widget,this.view,l-a,o.flags&496,this.cache.maybeReuse(o)):this.cache.reuse(o);c.flags&256?(c.flags&=-2,this.builder.addBlockWidget(c)):(this.builder.ensureLine(null),this.builder.addInlineWidget(c,s,i),i=s.length)}else if(o.isText())this.builder.ensureLine(null),!a&&l==o.length?this.builder.addText(o.text,s,i,this.cache.reuse(o)):(this.cache.add(o),this.builder.addText(o.text.slice(a,l),s,i)),i=s.length;else if(o.isLine())o.flags&=-2,this.cache.reused.set(o,1),this.builder.addLine(o);else if(o instanceof _a)this.cache.add(o);else if(o instanceof Jt)this.builder.ensureLine(null),this.builder.addMark(o,s,i),this.cache.reused.set(o,1),i=s.length;else return!1;this.openWidget=!1},enter:o=>{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof Jt&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=i=0):o instanceof Jt&&(s.shift(),i=Math.min(i,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let n=null,s=this.builder,i=0,o=et.spans(this.decorations,e,t,{point:(a,l,c,u,h,p)=>{if(c instanceof fs){if(this.disallowBlockEffectsFor[p]){if(c.block)throw new RangeError("Block decorations may not be specified via plugins");if(l>this.view.state.doc.lineAt(a).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(i=u.length,h>u.length)s.continueWidget(l-a);else{let f=c.widget||(c.block?js.block:js.inline),g=B2(c),O=this.cache.findWidget(f,l-a,g)||ms.of(f,this.view,l-a,g);c.block?(c.startSide>0&&s.addLineStartIfNotCovered(n),s.addBlockWidget(O)):(s.ensureLine(n),s.addInlineWidget(O,u,h))}n=null}else n=Z2(n,c);l>a&&this.text.skip(l-a)},span:(a,l,c,u)=>{for(let h=a;h<l;){let p=this.text.next(Math.min(512,l-h));p==null?(s.addLineStartIfNotCovered(n),s.addBreak(),h++):(s.ensureLine(n),s.addText(p,c,h==a?u:c.length),h+=p.length),n=null}}});s.addLineStartIfNotCovered(n),this.openWidget=o>i,this.openMarks=o}forward(e,t,n=1){t-e<=10?this.old.advance(t-e,n,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,n,this.reuseWalker))}getCompositionContext(e){let t=[],n=null;for(let s=e.parentNode;;s=s.parentNode){let i=wt.get(s);if(s==this.view.contentDOM)break;i instanceof Jt?t.push(i):i?.isLine()?n=i:i instanceof gn||(s.nodeName=="DIV"&&!n&&s!=this.view.contentDOM?n=new Ws(s,Nm):n||t.push(Jt.of(new bo({tagName:s.nodeName.toLowerCase(),attributes:a2(s)}),s)))}return{line:n,marks:t}}}function ud(r,e){let t=n=>{for(let s of n.children)if((e?s.isText():s.length)||t(s))return!0;return!1};return t(r)}function B2(r){let e=r.isReplace?(r.startSide<0?64:0)|(r.endSide>0?128:0):r.startSide>0?32:16;return r.block&&(e|=256),e}const Nm={class:"cm-line"};function Z2(r,e){let t=e.spec.attributes,n=e.spec.class;return!t&&!n||(r||(r={class:"cm-line"}),t&&Zu(t,r),n&&(r.class+=" "+n)),r}function E2(r){let e=[];for(let t=r.parents.length;t>1;t--){let n=t==r.parents.length?r.tile:r.parents[t].tile;n instanceof Jt&&e.push(n.mark)}return e}function Ml(r){let e=wt.get(r);return e&&e.setDOM(r.cloneNode()),r}class js extends on{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}js.inline=new js("span");js.block=new js("div");const Al=new class extends on{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}};class hd{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=Le.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new fl(e,e.contentDOM),this.updateInner([new br(0,0,0,e.state.doc.length)],null)}update(e){var t;let n=e.changedRanges;this.minWidth>0&&n.length&&(n.every(({fromA:u,toA:h})=>h<this.minWidthFrom||u>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?s=this.domChanged.newSel.head:!j2(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let i=s>-1?L2(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:u,to:h}=this.hasComposition;n=new br(u,h,e.changes.mapPos(u,-1),e.changes.mapPos(h,1)).addToSet(n.slice())}this.hasComposition=i?{from:i.range.fromB,to:i.range.toB}:null,(Te.ie||Te.chrome)&&!i&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,a=this.blockWrappers;this.updateDeco();let l=V2(o,this.decorations,e.changes);l.length&&(n=br.extendWithRanges(n,l));let c=N2(a,this.blockWrappers,e.changes);return c.length&&(n=br.extendWithRanges(n,c)),i&&!n.some(u=>u.fromA<=i.range.fromA&&u.toA>=i.range.toA)&&(n=i.range.addToSet(n.slice())),this.tile.flags&2&&n.length==0?!1:(this.updateInner(n,i),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:n}=this.view;n.ignore(()=>{if(t||e.length){let o=this.tile,a=new R2(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);this.tile=a.run(e,t),Vc(o,a.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let i=Te.chrome||Te.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(i),i&&(i.written||n.selectionRange.focusNode!=i.node||!this.tile.dom.contains(i.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let i of this.tile.children)i.isWidget()&&i.widget instanceof _l&&s.push(i.dom);n.updateGaps(s)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let n of t.effects)n.is(Lm)&&(this.editContextFormatting=n.value)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let{dom:n}=this.tile,s=this.view.root.activeElement,i=s==n,o=!i&&!(this.view.state.facet(mn)||n.tabIndex>-1)&&Xi(n,this.view.observer.selectionRange)&&!(s&&n.contains(s));if(!(i||t||o))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c,u;if(l.empty?u=c=this.inlineDOMNearPos(l.anchor,l.assoc||1):(u=this.inlineDOMNearPos(l.head,l.head==l.from?1:-1),c=this.inlineDOMNearPos(l.anchor,l.anchor==l.from?1:-1)),Te.gecko&&l.empty&&!this.hasComposition&&D2(c)){let p=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(p,c.node.childNodes[c.offset]||null)),c=u=new _r(p,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!Ii(c.node,c.offset,h.anchorNode,h.anchorOffset)||!Ii(u.node,u.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{Te.android&&Te.chrome&&n.contains(h.focusNode)&&W2(h.focusNode,n)&&(n.blur(),n.focus({preventScroll:!0}));let p=Ui(this.view.root);if(p)if(l.empty){if(Te.gecko){let f=X2(c.node,c.offset);if(f&&f!=3){let g=(f==1?km:wm)(c.node,c.offset);g&&(c=new _r(g.node,g.offset))}}p.collapse(c.node,c.offset),l.bidiLevel!=null&&p.caretBidiLevel!==void 0&&(p.caretBidiLevel=l.bidiLevel)}else if(p.extend){p.collapse(c.node,c.offset);try{p.extend(u.node,u.offset)}catch{}}else{let f=document.createRange();l.anchor>l.head&&([c,u]=[u,c]),f.setEnd(u.node,u.offset),f.setStart(c.node,c.offset),p.removeAllRanges(),p.addRange(f)}o&&this.view.root.activeElement==n&&(n.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(c,u)),this.impreciseAnchor=c.precise?null:new _r(h.anchorNode,h.anchorOffset),this.impreciseHead=u.precise?null:new _r(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&Ii(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,n=Ui(e.root),{anchorNode:s,anchorOffset:i}=e.observer.selectionRange;if(!n||!t.empty||!t.assoc||!n.modify)return;let o=this.lineAt(t.head,t.assoc);if(!o)return;let a=o.posAtStart;if(t.head==a||t.head==a+o.length)return;let l=this.coordsAt(t.head,-1),c=this.coordsAt(t.head,1);if(!l||!c||l.bottom>c.top)return;let u=this.domAtPos(t.head+t.assoc,t.assoc);n.collapse(u.node,u.offset),n.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let h=e.observer.selectionRange;e.docView.posFromDOM(h.anchorNode,h.anchorOffset)!=t.from&&n.collapse(s,i)}posFromDOM(e,t){let n=this.tile.nearest(e);if(!n)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let s=n.posAtStart;if(n.isComposite()){let i;if(e==n.dom)i=n.dom.childNodes[t];else{let o=yn(e)==0?0:t==0?-1:1;for(;;){let a=e.parentNode;if(a==n.dom)break;o==0&&a.firstChild!=a.lastChild&&(e==a.firstChild?o=-1:o=1),e=a}o<0?i=e:i=e.nextSibling}if(i==n.dom.firstChild)return s;for(;i&&!wt.get(i);)i=i.nextSibling;if(!i)return s+n.length;for(let o=0,a=s;;o++){let l=n.children[o];if(l.dom==i)return a;a+=l.length+l.breakAfter}}else return n.isText()?e==n.dom?s+t:s+(t?n.length:0):s}domAtPos(e,t){let{tile:n,offset:s}=this.tile.resolveBlock(e,t);return n.isWidget()?n.domPosFor(e,t):n.domIn(s,t)}inlineDOMNearPos(e,t){let n,s=-1,i=!1,o,a=-1,l=!1;return this.tile.blockTiles((c,u)=>{if(c.isWidget()){if(c.flags&32&&u>=e)return!0;c.flags&16&&(i=!0)}else{let h=u+c.length;if(u<=e&&(n=c,s=e-u,i=h<e),h>=e&&!o&&(o=c,a=e-u,l=u>e),u>e&&o)return!0}}),!n&&!o?this.domAtPos(e,t):(i&&o?n=null:l&&n&&(o=null),n&&t<0||!o?n.domIn(s,t):o.domIn(a,t))}coordsAt(e,t){let{tile:n,offset:s}=this.tile.resolveBlock(e,t);return n.isWidget()?n.widget instanceof _l?null:n.coordsInWidget(s,t,!0):n.coordsIn(s,t)}lineAt(e,t){let{tile:n}=this.tile.resolveBlock(e,t);return n.isLine()?n:null}coordsForChar(e){let{tile:t,offset:n}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function s(i,o){if(i.isComposite())for(let a of i.children){if(a.length>=o){let l=s(a,o);if(l)return l}if(o-=a.length,o<0)break}else if(i.isText()&&o<i.length){let a=Mt(i.text,o);if(a==o)return null;let l=Gi(i.dom,o,a).getClientRects();for(let c=0;c<l.length;c++){let u=l[c];if(c==l.length-1||u.top<u.bottom&&u.left<u.right)return u}}return null}return s(t,n)}measureVisibleLineHeights(e){let t=[],{from:n,to:s}=e,i=this.view.contentDOM.clientWidth,o=i>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,a=-1,l=this.view.textDirection==dt.LTR,c=0,u=(h,p,f)=>{for(let g=0;g<h.children.length&&!(p>s);g++){let O=h.children[g],x=p+O.length,b=O.dom.getBoundingClientRect(),{height:w}=b;if(f&&!g&&(c+=b.top-f.top),O instanceof gn)x>n&&u(O,p,b);else if(p>=n&&(c>0&&t.push(-c),t.push(w+c),c=0,o)){let Q=O.dom.lastChild,P=Q?da(Q):[];if(P.length){let E=P[P.length-1],j=l?E.right-b.left:b.right-E.left;j>a&&(a=j,this.minWidth=i,this.minWidthFrom=p,this.minWidthTo=x)}}f&&g==h.children.length-1&&(c+=f.bottom-b.bottom),p=x+O.breakAfter}};return u(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?dt.RTL:dt.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let a=0,l;for(let c of o.children){if(!c.isText()||/[^ -~]/.test(c.text))return;let u=da(c.dom);if(u.length!=1)return;a+=u[0].width,l=u[0].height}if(a)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:a/o.length,textHeight:l}}});if(e)return e;let t=document.createElement("div"),n,s,i;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let o=da(t.firstChild)[0];n=t.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,i=o&&o.height?o.height:n,t.remove()}),{lineHeight:n,charWidth:s,textHeight:i}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let n=0,s=0;;s++){let i=s==t.viewports.length?null:t.viewports[s],o=i?i.from-1:this.view.state.doc.length;if(o>n){let a=(t.lineBlockAt(o).bottom-t.lineBlockAt(n).top)/this.view.scaleY;e.push(Le.replace({widget:new _l(a),block:!0,inclusive:!0,isBlockGap:!0}).range(n,o))}if(!i)break;n=i.to+1}return Le.set(e)}updateDeco(){let e=1,t=this.view.state.facet(hl).map(i=>(this.dynamicDecorationMap[e++]=typeof i=="function")?i(this.view):i),n=!1,s=this.view.state.facet(Vu).map((i,o)=>{let a=typeof i=="function";return a&&(n=!0),a?i(this.view):i});for(s.length&&(this.dynamicDecorationMap[e++]=n,t.push(et.join(s))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];e<this.decorations.length;)this.dynamicDecorationMap[e++]=!1;this.blockWrappers=this.view.state.facet(Im).map(i=>typeof i=="function"?i(this.view):i)}scrollIntoView(e){if(e.isSnapshot){let c=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=c.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let c of this.view.state.facet(Dm))try{if(c(this.view,e.range,e))return!0}catch(u){tr(this.view.state,u,"scroll handler")}let{range:t}=e,n=this.coordsAt(t.head,t.empty?t.assoc:t.head>t.anchor?-1:1),s;if(!n)return;!t.empty&&(s=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(n={left:Math.min(n.left,s.left),top:Math.min(n.top,s.top),right:Math.max(n.right,s.right),bottom:Math.max(n.bottom,s.bottom)});let i=zu(this.view),o={left:n.left-i.left,top:n.top-i.top,right:n.right+i.right,bottom:n.bottom+i.bottom},{offsetWidth:a,offsetHeight:l}=this.view.scrollDOM;if(u2(this.view.scrollDOM,o,t.head<t.anchor?-1:1,e.x,e.y,Math.max(Math.min(e.xMargin,a),-a),Math.max(Math.min(e.yMargin,l),-l),this.view.textDirection==dt.LTR),window.visualViewport&&window.innerHeight-window.visualViewport.height>1&&(n.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||n.bottom<window.pageYOffset+window.visualViewport.offsetTop)){let c=this.view.docView.lineAt(t.head,1);c&&c.dom.scrollIntoView({block:"nearest"})}}lineHasWidget(e){let t=n=>n.isWidget()||n.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){Vc(this.tile)}}function Vc(r,e){let t=e?.get(r);if(t!=1){t==null&&r.destroy();for(let n of r.children)Vc(n,e)}}function D2(r){return r.node.nodeType==1&&r.node.firstChild&&(r.offset==0||r.node.childNodes[r.offset-1].contentEditable=="false")&&(r.offset==r.node.childNodes.length||r.node.childNodes[r.offset].contentEditable=="false")}function Wm(r,e){let t=r.observer.selectionRange;if(!t.focusNode)return null;let n=km(t.focusNode,t.focusOffset),s=wm(t.focusNode,t.focusOffset),i=n||s;if(s&&n&&s.node!=n.node){let a=wt.get(s.node);if(!a||a.isText()&&a.text!=s.node.nodeValue)i=s;else if(r.docView.lastCompositionAfterCursor){let l=wt.get(n.node);!l||l.isText()&&l.text!=n.node.nodeValue||(i=s)}}if(r.docView.lastCompositionAfterCursor=i!=n,!i)return null;let o=e-i.offset;return{from:o,to:o+i.node.nodeValue.length,node:i.node}}function L2(r,e,t){let n=Wm(r,t);if(!n)return null;let{node:s,from:i,to:o}=n,a=s.nodeValue;if(/[\n\r]/.test(a)||r.state.doc.sliceString(n.from,n.to)!=a)return null;let l=e.invertedDesc;return{range:new br(l.mapPos(i),l.mapPos(o),i,o),text:s}}function X2(r,e){return r.nodeType!=1?0:(e&&r.childNodes[e-1].contentEditable=="false"?1:0)|(e<r.childNodes.length&&r.childNodes[e].contentEditable=="false"?2:0)}let I2=class{constructor(){this.changes=[]}compareRange(e,t){_s(e,t,this.changes)}comparePoint(e,t){_s(e,t,this.changes)}boundChange(e){_s(e,e,this.changes)}};function V2(r,e,t){let n=new I2;return et.compare(r,e,t,n),n.changes}class z2{constructor(){this.changes=[]}compareRange(e,t){_s(e,t,this.changes)}comparePoint(){}boundChange(e){_s(e,e,this.changes)}}function N2(r,e,t){let n=new z2;return et.compare(r,e,t,n),n.changes}function W2(r,e){for(let t=r;t&&t!=e;t=t.assignedSlot||t.parentNode)if(t.nodeType==1&&t.contentEditable=="false")return!0;return!1}function j2(r,e){let t=!1;return e&&r.iterChangedRanges((n,s)=>{n<e.to&&s>e.from&&(t=!0)}),t}class _l extends on{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}function q2(r,e,t=1){let n=r.charCategorizer(e),s=r.doc.lineAt(e),i=e-s.from;if(s.length==0)return re.cursor(e);i==0?t=1:i==s.length&&(t=-1);let o=i,a=i;t<0?o=Mt(s.text,i,!1):a=Mt(s.text,i);let l=n(s.text.slice(o,a));for(;o>0;){let c=Mt(s.text,o,!1);if(n(s.text.slice(c,o))!=l)break;o=c}for(;a<s.length;){let c=Mt(s.text,a);if(n(s.text.slice(a,c))!=l)break;a=c}return re.range(o+s.from,a+s.from)}function Y2(r,e,t,n,s){let i=Math.round((n-e.left)*r.defaultCharacterWidth);if(r.lineWrapping&&t.height>r.defaultLineHeight*1.5){let a=r.viewState.heightOracle.textHeight,l=Math.floor((s-t.top-(r.defaultLineHeight-a)*.5)/a);i+=l*r.viewState.heightOracle.lineLength}let o=r.state.sliceDoc(t.from,t.to);return t.from+Tc(o,i,r.state.tabSize)}function zc(r,e,t){let n=r.lineBlockAt(e);if(Array.isArray(n.type)){let s;for(let i of n.type){if(i.from>e)break;if(!(i.to<e)){if(i.from<e&&i.to>e)return i;(!s||i.type==Xt.Text&&(s.type!=i.type||(t<0?i.from<e:i.to>e)))&&(s=i)}}return s||n}return n}function F2(r,e,t,n){let s=zc(r,e.head,e.assoc||-1),i=!n||s.type!=Xt.Text||!(r.lineWrapping||s.widgetLineBreaks)?null:r.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(i){let o=r.dom.getBoundingClientRect(),a=r.textDirectionAt(s.from),l=r.posAtCoords({x:t==(a==dt.LTR)?o.right-1:o.left+1,y:(i.top+i.bottom)/2});if(l!=null)return re.cursor(l,t?-1:1)}return re.cursor(t?s.to:s.from,t?-1:1)}function dd(r,e,t,n){let s=r.state.doc.lineAt(e.head),i=r.bidiSpans(s),o=r.textDirectionAt(s.from);for(let a=e,l=null;;){let c=k2(s,i,o,a,t),u=Pm;if(!c){if(s.number==(t?r.state.doc.lines:1))return a;u=`
|
|
18
|
+
`,s=r.state.doc.line(s.number+(t?1:-1)),i=r.bidiSpans(s),c=r.visualLineSide(s,!t)}if(l){if(!l(u))return a}else{if(!n)return c;l=n(u)}a=c}}function U2(r,e,t){let n=r.state.charCategorizer(e),s=n(t);return i=>{let o=n(i);return s==mt.Space&&(s=o),s==o}}function G2(r,e,t,n){let s=e.head,i=t?1:-1;if(s==(t?r.state.doc.length:0))return re.cursor(s,e.assoc);let o=e.goalColumn,a,l=r.contentDOM.getBoundingClientRect(),c=r.coordsAtPos(s,(e.empty?e.assoc:0)||(t?1:-1)),u=r.documentTop;if(c)o==null&&(o=c.left-l.left),a=i<0?c.top:c.bottom;else{let g=r.viewState.lineBlockAt(s);o==null&&(o=Math.min(l.right-l.left,r.defaultCharacterWidth*(s-g.from))),a=(i<0?g.top:g.bottom)+u}let h=l.left+o,p=n??r.viewState.heightOracle.textHeight>>1,f=Nc(r,{x:h,y:a+p*i},!1,i);return re.cursor(f.pos,f.assoc,void 0,o)}function Vi(r,e,t){for(;;){let n=0;for(let s of r)s.between(e-1,e+1,(i,o,a)=>{if(e>i&&e<o){let l=n||t||(e-i<o-e?-1:1);e=l<0?i:o,n=l}});if(!n)return e}}function jm(r,e){let t=null;for(let n=0;n<e.ranges.length;n++){let s=e.ranges[n],i=null;if(s.empty){let o=Vi(r,s.from,0);o!=s.from&&(i=re.cursor(o,-1))}else{let o=Vi(r,s.from,-1),a=Vi(r,s.to,1);(o!=s.from||a!=s.to)&&(i=re.range(s.from==s.anchor?o:a,s.from==s.head?o:a))}i&&(t||(t=e.ranges.slice()),t[n]=i)}return t?re.create(t,e.mainIndex):e}function Rl(r,e,t){let n=Vi(r.state.facet(yo).map(s=>s(r)),t.from,e.head>t.from?-1:1);return n==t.from?t:re.cursor(n,n<t.from?1:-1)}class Hr{constructor(e,t){this.pos=e,this.assoc=t}}function Nc(r,e,t,n){let s=r.contentDOM.getBoundingClientRect(),i=s.top+r.viewState.paddingTop,{x:o,y:a}=e,l=a-i,c;for(;;){if(l<0)return new Hr(0,1);if(l>r.viewState.docHeight)return new Hr(r.state.doc.length,-1);if(c=r.elementAtHeight(l),n==null)break;if(c.type==Xt.Text){if(n<0?c.to<r.viewport.from:c.from>r.viewport.to)break;let p=r.docView.coordsAt(n<0?c.from:c.to,n>0?-1:1);if(p&&(n<0?p.top<=l+i:p.bottom>=l+i))break}let h=r.viewState.heightOracle.textHeight/2;l=n>0?c.bottom+h:c.top-h}if(r.viewport.from>=c.to||r.viewport.to<=c.from){if(t)return null;if(c.type==Xt.Text){let h=Y2(r,s,c,o,a);return new Hr(h,h==c.from?1:-1)}}if(c.type!=Xt.Text)return l<(c.top+c.bottom)/2?new Hr(c.from,1):new Hr(c.to,-1);let u=r.docView.lineAt(c.from,2);return(!u||u.length!=c.length)&&(u=r.docView.lineAt(c.from,-2)),new H2(r,o,a,r.textDirectionAt(c.from)).scanTile(u,c.from)}class H2{constructor(e,t,n,s){this.view=e,this.x=t,this.y=n,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to<e)&&(this.line=this.view.state.doc.lineAt(e),this.spans=this.view.bidiSpans(this.line)),this}baseDirAt(e,t){let{line:n,spans:s}=this.bidiSpansAt(e);return s[Kr.find(s,e-n.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:n,spans:s}=this.bidiSpansAt(e);return s[Kr.find(s,e-n.from,-1,t)].dir}bidiIn(e,t){let{spans:n,line:s}=this.bidiSpansAt(e);return n.length>1||n.length&&(n[0].level!=this.baseDir||n[0].to+s.from<t)}scan(e,t){let n=0,s=e.length-1,i=new Set,o=this.bidiIn(e[0],e[s]),a,l,c=-1,u=1e9,h;e:for(;n<s;){let f=s-n,g=n+s>>1;t:if(i.has(g)){let x=n+Math.floor(Math.random()*f);for(let b=0;b<f;b++){if(!i.has(x)){g=x;break t}x++,x==s&&(x=n)}break e}i.add(g);let O=t(g);if(O)for(let x=0;x<O.length;x++){let b=O[x],w=0;if(b.bottom<this.y)(!a||a.bottom<b.bottom)&&(a=b),w=1;else if(b.top>this.y)(!l||l.top>b.top)&&(l=b),w=-1;else{let Q=b.left>this.x?this.x-b.left:b.right<this.x?this.x-b.right:0,P=Math.abs(Q);P<u&&(c=g,u=P,h=b),Q&&(w=Q<0==(this.baseDir==dt.LTR)?-1:1)}w==-1&&(!o||this.baseDirAt(e[g],1))?s=g:w==1&&(!o||this.baseDirAt(e[g+1],-1))&&(n=g+1)}}if(!h){let f=a&&(!l||this.y-a.bottom<l.top-this.y)?a:l;return this.y=(f.top+f.bottom)/2,this.scan(e,t)}let p=(o?this.dirAt(e[c],1):this.baseDir)==dt.LTR;return{i:c,after:this.x>(h.left+h.right)/2==p}}scanText(e,t){let n=[];for(let i=0;i<e.length;i=Mt(e.text,i))n.push(t+i);n.push(t+e.length);let s=this.scan(n,i=>{let o=n[i]-t,a=n[i+1]-t;return Gi(e.dom,o,a).getClientRects()});return s.after?new Hr(n[s.i+1],-1):new Hr(n[s.i],1)}scanTile(e,t){if(!e.length)return new Hr(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let n=[t];for(let a=0,l=t;a<e.children.length;a++)n.push(l+=e.children[a].length);let s=this.scan(n,a=>{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:Gi(l.dom,0,l.length)).getClientRects()}),i=e.children[s.i],o=n[s.i];return i.isText()?this.scanText(i,o):i.isComposite()?this.scanTile(i,o):s.after?new Hr(n[s.i+1],-1):new Hr(o,1)}}const Ri="";class K2{constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(tt.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Ri}readRange(e,t){if(!e)return this;let n=e.parentNode;for(let s=e;;){this.findPointBefore(n,s);let i=this.text.length;this.readNode(s);let o=wt.get(s),a=s.nextSibling;if(a==t){o?.breakAfter&&!a&&n!=this.view.contentDOM&&this.lineBreak();break}let l=wt.get(a);(o&&l?o.breakAfter:(o?o.breakAfter:Ta(s))||Ta(a)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>i)&&!e$(a,t)&&this.lineBreak(),s=a}return this.findPointBefore(n,t),this}readTextNode(e){let t=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,t.length));for(let n=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,o=1,a;if(this.lineSeparator?(i=t.indexOf(this.lineSeparator,n),o=this.lineSeparator.length):(a=s.exec(t))&&(i=a.index,o=a[0].length),this.append(t.slice(n,i<0?t.length:i)),i<0)break;if(this.lineBreak(),o>1)for(let l of this.points)l.node==e&&l.pos>this.text.length&&(l.pos-=o-1);n=i+o}}readNode(e){let t=wt.get(e),n=t&&t.overrideDOMText;if(n!=null){this.findPointInside(e,n.length);for(let s=n.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let n of this.points)n.node==e&&e.childNodes[n.offset]==t&&(n.pos=this.text.length)}findPointInside(e,t){for(let n of this.points)(e.nodeType==3?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+(J2(e,n.node,n.offset)?t:0))}}function J2(r,e,t){for(;;){if(!e||t<yn(e))return!1;if(e==r)return!0;t=In(e)+1,e=e.parentNode}}function e$(r,e){let t;for(;!(r==e||!r);r=r.nextSibling){let n=wt.get(r);if(!n?.isWidget())return!1;n&&(t||(t=[])).push(n)}if(t)for(let n of t){let s=n.overrideDOMText;if(s?.length)return!1}return!0}class fd{constructor(e,t){this.node=e,this.offset=t,this.pos=-1}}class t${constructor(e,t,n,s){this.typeOver=s,this.bounds=null,this.text="",this.domChanged=t>-1;let{impreciseHead:i,impreciseAnchor:o}=e.docView;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=qm(e.docView.tile,t,n,0))){let a=i||o?[]:n$(e),l=new K2(a,e);l.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=l.text,this.newSel=s$(a,this.bounds.from)}else{let a=e.observer.selectionRange,l=i&&i.node==a.focusNode&&i.offset==a.focusOffset||!Ec(e.contentDOM,a.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(a.focusNode,a.focusOffset),c=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Ec(e.contentDOM,a.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(a.anchorNode,a.anchorOffset),u=e.viewport;if((Te.ios||Te.chrome)&&e.state.selection.main.empty&&l!=c&&(u.from>0||u.to<e.state.doc.length)){let h=Math.min(l,c),p=Math.max(l,c),f=u.from-h,g=u.to-p;(f==0||f==1||h==0)&&(g==0||g==-1||p==e.state.doc.length)&&(l=0,c=e.state.doc.length)}e.inputState.composing>-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(re.range(c,l)):this.newSel=re.single(c,l)}}}function qm(r,e,t,n){if(r.isComposite()){let s=-1,i=-1,o=-1,a=-1;for(let l=0,c=n,u=n;l<r.children.length;l++){let h=r.children[l],p=c+h.length;if(c<e&&p>t)return qm(h,e,t,c);if(p>=e&&s==-1&&(s=l,i=c),c>t&&h.dom.parentNode==r.dom){o=l,a=u;break}u=p,c=p+h.breakAfter}return{from:i,to:a<0?n+r.length:a,startDOM:(s?r.children[s-1].dom.nextSibling:null)||r.dom.firstChild,endDOM:o<r.children.length&&o>=0?r.children[o].dom:null}}else return r.isText()?{from:n,to:n+r.length,startDOM:r.dom,endDOM:r.dom.nextSibling}:null}function Ym(r,e){let t,{newSel:n}=e,s=r.state.selection.main,i=r.inputState.lastKeyTime>Date.now()-100?r.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:a}=e.bounds,l=s.from,c=null;(i===8||Te.android&&e.text.length<a-o)&&(l=s.to,c="end");let u=Fm(r.state.doc.sliceString(o,a,Ri),e.text,l-o,c);u&&(Te.chrome&&i==13&&u.toB==u.from+2&&e.text.slice(u.from,u.toB)==Ri+Ri&&u.toB--,t={from:o+u.from,to:o+u.toA,insert:st.of(e.text.slice(u.from,u.toB).split(Ri))})}else n&&(!r.hasFocus&&r.state.facet(mn)||Ba(n,s))&&(n=null);if(!t&&!n)return!1;if(!t&&e.typeOver&&!s.empty&&n&&n.main.empty?t={from:s.from,to:s.to,insert:r.state.doc.slice(s.from,s.to)}:(Te.mac||Te.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&r.contentDOM.getAttribute("autocorrect")=="off"?(n&&t.insert.length==2&&(n=re.single(n.main.anchor-1,n.main.head-1)),t={from:t.from,to:t.to,insert:st.of([t.insert.toString().replace("."," ")])}):t&&t.from>=s.from&&t.to<=s.to&&(t.from!=s.from||t.to!=s.to)&&s.to-s.from-(t.to-t.from)<=4?t={from:s.from,to:s.to,insert:r.state.doc.slice(s.from,t.from).append(t.insert).append(r.state.doc.slice(t.to,s.to))}:r.state.doc.lineAt(s.from).to<s.to&&r.docView.lineHasWidget(s.to)&&r.inputState.insertingTextAt>Date.now()-50?t={from:s.from,to:s.to,insert:r.state.toText(r.inputState.insertingText)}:Te.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==`
|
|
19
|
+
`&&r.lineWrapping&&(n&&(n=re.single(n.main.anchor-1,n.main.head-1)),t={from:s.from,to:s.to,insert:st.of([" "])}),t)return Nu(r,t,n,i);if(n&&!Ba(n,s)){let o=!1,a="select";return r.inputState.lastSelectionTime>Date.now()-50&&(r.inputState.lastSelectionOrigin=="select"&&(o=!0),a=r.inputState.lastSelectionOrigin,a=="select.pointer"&&(n=jm(r.state.facet(yo).map(l=>l(r)),n))),r.dispatch({selection:n,scrollIntoView:o,userEvent:a}),!0}else return!1}function Nu(r,e,t,n=-1){if(Te.ios&&r.inputState.flushIOSKey(e))return!0;let s=r.state.selection.main;if(Te.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&r.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Rs(r.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||n==8&&e.insert.length<e.to-e.from&&e.to>s.head)&&Rs(r.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&Rs(r.contentDOM,"Delete",46)))return!0;let i=e.insert.toString();r.inputState.composing>=0&&r.inputState.composing++;let o,a=()=>o||(o=r$(r,e,t));return r.state.facet(Rm).some(l=>l(r,e.from,e.to,i,a))||r.dispatch(a()),!0}function r$(r,e,t){let n,s=r.state,i=s.selection.main,o=-1;if(e.from==e.to&&e.from<i.from||e.from>i.to){let l=e.from<i.from?-1:1,c=l<0?i.from:i.to,u=Vi(s.facet(yo).map(h=>h(r)),c,l);e.from==u&&(o=u)}if(o>-1)n={changes:e,selection:re.cursor(e.from+e.insert.length,-1)};else if(e.from>=i.from&&e.to<=i.to&&e.to-e.from>=(i.to-i.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&r.inputState.composing<0){let l=i.from<e.from?s.sliceDoc(i.from,e.from):"",c=i.to>e.to?s.sliceDoc(e.to,i.to):"";n=s.replaceSelection(r.state.toText(l+e.insert.sliceString(0,void 0,r.state.lineBreak)+c))}else{let l=s.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(s.selection.ranges.length>1&&(r.inputState.composing>=0||r.inputState.compositionPendingChange)&&e.to<=i.to+10&&e.to>=i.to-10){let u=r.state.sliceDoc(e.from,e.to),h,p=t&&Wm(r,t.main.head);if(p){let g=e.insert.length-(e.to-e.from);h={from:p.from,to:p.to-g}}else h=r.state.doc.lineAt(i.head);let f=i.to-e.to;n=s.changeByRange(g=>{if(g.from==i.from&&g.to==i.to)return{changes:l,range:c||g.map(l)};let O=g.to-f,x=O-u.length;if(r.state.sliceDoc(x,O)!=u||O>=h.from&&x<=h.to)return{range:g};let b=s.changes({from:x,to:O,insert:e.insert}),w=g.to-i.to;return{changes:b,range:c?re.range(Math.max(0,c.anchor+w),Math.max(0,c.head+w)):g.map(b)}})}else n={changes:l,selection:c&&s.selection.replaceRange(c)}}let a="input.type";return(r.composing||r.inputState.compositionPendingChange&&r.inputState.compositionEndedAt>Date.now()-50)&&(r.inputState.compositionPendingChange=!1,a+=".compose",r.inputState.compositionFirstChange&&(a+=".start",r.inputState.compositionFirstChange=!1)),s.update(n,{userEvent:a,scrollIntoView:!0})}function Fm(r,e,t,n){let s=Math.min(r.length,e.length),i=0;for(;i<s&&r.charCodeAt(i)==e.charCodeAt(i);)i++;if(i==s&&r.length==e.length)return null;let o=r.length,a=e.length;for(;o>0&&a>0&&r.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(n=="end"){let l=Math.max(0,i-Math.min(o,a));t-=o+l-i}if(o<i&&r.length<e.length){let l=t<=i&&t>=o?i-t:0;i-=l,a=i+(a-o),o=i}else if(a<i){let l=t<=i&&t>=a?i-t:0;i-=l,o=i+(o-a),a=i}return{from:i,toA:o,toB:a}}function n$(r){let e=[];if(r.root.activeElement!=r.contentDOM)return e;let{anchorNode:t,anchorOffset:n,focusNode:s,focusOffset:i}=r.observer.selectionRange;return t&&(e.push(new fd(t,n)),(s!=t||i!=n)&&e.push(new fd(s,i))),e}function s$(r,e){if(r.length==0)return null;let t=r[0].pos,n=r.length==2?r[1].pos:t;return t>-1&&n>-1?re.single(t+e,n+e):null}function Ba(r,e){return e.head==r.main.head&&e.anchor==r.main.anchor}class i${setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,Te.safari&&e.contentDOM.addEventListener("input",()=>null),Te.gecko&&x$(e.contentDOM.ownerDocument)}handleEvent(e){!f$(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let n=this.handlers[e];if(n){for(let s of n.observers)s(this.view,t);for(let s of n.handlers){if(t.defaultPrevented)break;if(s(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=o$(e),n=this.handlers,s=this.view.contentDOM;for(let i in t)if(i!="scroll"){let o=!t[i].handlers.length,a=n[i];a&&o!=!a.handlers.length&&(s.removeEventListener(i,this.handleEvent),a=null),a||s.addEventListener(i,this.handleEvent,{passive:o})}for(let i in n)i!="scroll"&&!t[i]&&s.removeEventListener(i,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&Gm.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),Te.android&&Te.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return Te.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((t=Um.find(n=>n.keyCode==e.keyCode))&&!e.ctrlKey||a$.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key=="Enter"&&e&&e.from<e.to&&/^\S+$/.test(e.insert.toString())?!1:(this.pendingIOSKey=void 0,Rs(this.view.contentDOM,t.key,t.keyCode,t instanceof KeyboardEvent?t:void 0))}ignoreDuringComposition(e){return!/^key/.test(e.type)||e.synthetic?!1:this.composing>0?!0:Te.safari&&!Te.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function pd(r,e){return(t,n)=>{try{return e.call(r,n,t)}catch(s){tr(t.state,s)}}}function o$(r){let e=Object.create(null);function t(n){return e[n]||(e[n]={observers:[],handlers:[]})}for(let n of r){let s=n.spec,i=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(i)for(let a in i){let l=i[a];l&&t(a).handlers.push(pd(n.value,l))}if(o)for(let a in o){let l=o[a];l&&t(a).observers.push(pd(n.value,l))}}for(let n in Br)t(n).handlers.push(Br[n]);for(let n in $r)t(n).observers.push($r[n]);return e}const Um=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],a$="dthko",Gm=[16,17,18,20,91,92,224,225],Io=6;function Vo(r){return Math.max(0,r)*.7+8}function l$(r,e){return Math.max(Math.abs(r.clientX-e.clientX),Math.abs(r.clientY-e.clientY))}class c${constructor(e,t,n,s){this.view=e,this.startEvent=t,this.style=n,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=h2(e.contentDOM),this.atoms=e.state.facet(yo).map(o=>o(e));let i=e.contentDOM.ownerDocument;i.addEventListener("mousemove",this.move=this.move.bind(this)),i.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(tt.allowMultipleSelections)&&u$(e,t),this.dragging=d$(e,t)&&Jm(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&l$(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,n=0,s=0,i=0,o=this.view.win.innerWidth,a=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:a}=this.scrollParents.y.getBoundingClientRect());let l=zu(this.view);e.clientX-l.left<=s+Io?t=-Vo(s-e.clientX):e.clientX+l.right>=o-Io&&(t=Vo(e.clientX-o)),e.clientY-l.top<=i+Io?n=-Vo(i-e.clientY):e.clientY+l.bottom>=a-Io&&(n=Vo(e.clientY-a)),this.setScrollSpeed(t,n)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,n=jm(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:n,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function u$(r,e){let t=r.state.facet(Tm);return t.length?t[0](e):Te.mac?e.metaKey:e.ctrlKey}function h$(r,e){let t=r.state.facet(Mm);return t.length?t[0](e):Te.mac?!e.altKey:!e.ctrlKey}function d$(r,e){let{main:t}=r.state.selection;if(t.empty)return!1;let n=Ui(r.root);if(!n||n.rangeCount==0)return!0;let s=n.getRangeAt(0).getClientRects();for(let i=0;i<s.length;i++){let o=s[i];if(o.left<=e.clientX&&o.right>=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function f$(r,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,n;t!=r.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(n=wt.get(t))&&n.isWidget()&&!n.isHidden&&n.widget.ignoreEvent(e))return!1;return!0}const Br=Object.create(null),$r=Object.create(null),Hm=Te.ie&&Te.ie_version<15||Te.ios&&Te.webkit_version<604;function p$(r){let e=r.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{r.focus(),t.remove(),Km(r,t.value)},50)}function pl(r,e,t){for(let n of r.facet(e))t=n(t,r);return t}function Km(r,e){e=pl(r.state,Lu,e);let{state:t}=r,n,s=1,i=t.toText(e),o=i.lines==t.selection.ranges.length;if(Wc!=null&&t.selection.ranges.every(l=>l.empty)&&Wc==i.toString()){let l=-1;n=t.changeByRange(c=>{let u=t.doc.lineAt(c.from);if(u.from==l)return{range:c};l=u.from;let h=t.toText((o?i.line(s++).text:e)+t.lineBreak);return{changes:{from:u.from,insert:h},range:re.cursor(c.from+h.length)}})}else o?n=t.changeByRange(l=>{let c=i.line(s++);return{changes:{from:l.from,to:l.to,insert:c.text},range:re.cursor(l.from+c.length)}}):n=t.replaceSelection(i);r.dispatch(n,{userEvent:"input.paste",scrollIntoView:!0})}$r.scroll=r=>{r.inputState.lastScrollTop=r.scrollDOM.scrollTop,r.inputState.lastScrollLeft=r.scrollDOM.scrollLeft};Br.keydown=(r,e)=>(r.inputState.setSelectionOrigin("select"),e.keyCode==27&&r.inputState.tabFocusMode!=0&&(r.inputState.tabFocusMode=Date.now()+2e3),!1);$r.touchstart=(r,e)=>{r.inputState.lastTouchTime=Date.now(),r.inputState.setSelectionOrigin("select.pointer")};$r.touchmove=r=>{r.inputState.setSelectionOrigin("select.pointer")};Br.mousedown=(r,e)=>{if(r.observer.flush(),r.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let n of r.state.facet(Am))if(t=n(r,e),t)break;if(!t&&e.button==0&&(t=g$(r,e)),t){let n=!r.hasFocus;r.inputState.startMouseSelection(new c$(r,e,t,n)),n&&r.observer.ignore(()=>{xm(r.contentDOM);let i=r.root.activeElement;i&&!i.contains(r.contentDOM)&&i.blur()});let s=r.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else r.inputState.setSelectionOrigin("select.pointer");return!1};function md(r,e,t,n){if(n==1)return re.cursor(e,t);if(n==2)return q2(r.state,e,t);{let s=r.docView.lineAt(e,t),i=r.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:i.from,a=s?s.posAtEnd:i.to;return a<r.state.doc.length&&a==i.to&&a++,re.range(o,a)}}const m$=Te.ie&&Te.ie_version<=11;let gd=null,Od=0,vd=0;function Jm(r){if(!m$)return r.detail;let e=gd,t=vd;return gd=r,vd=Date.now(),Od=!e||t>Date.now()-400&&Math.abs(e.clientX-r.clientX)<2&&Math.abs(e.clientY-r.clientY)<2?(Od+1)%3:1}function g$(r,e){let t=r.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),n=Jm(e),s=r.state.selection;return{update(i){i.docChanged&&(t.pos=i.changes.mapPos(t.pos),s=s.map(i.changes))},get(i,o,a){let l=r.posAndSideAtCoords({x:i.clientX,y:i.clientY},!1),c,u=md(r,l.pos,l.assoc,n);if(t.pos!=l.pos&&!o){let h=md(r,t.pos,t.assoc,n),p=Math.min(h.from,u.from),f=Math.max(h.to,u.to);u=p<u.from?re.range(p,f):re.range(f,p)}return o?s.replaceRange(s.main.extend(u.from,u.to)):a&&n==1&&s.ranges.length>1&&(c=O$(s,l.pos))?c:a?s.addRange(u):re.create([u])}}}function O$(r,e){for(let t=0;t<r.ranges.length;t++){let{from:n,to:s}=r.ranges[t];if(n<=e&&s>=e)return re.create(r.ranges.slice(0,t).concat(r.ranges.slice(t+1)),r.mainIndex==t?0:r.mainIndex-(r.mainIndex>t?1:0))}return null}Br.dragstart=(r,e)=>{let{selection:{main:t}}=r.state;if(e.target.draggable){let s=r.docView.tile.nearest(e.target);if(s&&s.isWidget()){let i=s.posAtStart,o=i+s.length;(i>=t.to||o<=t.from)&&(t=re.range(i,o))}}let{inputState:n}=r;return n.mouseSelection&&(n.mouseSelection.dragging=!0),n.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",pl(r.state,Xu,r.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Br.dragend=r=>(r.inputState.draggedContent=null,!1);function bd(r,e,t,n){if(t=pl(r.state,Lu,t),!t)return;let s=r.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:i}=r.inputState,o=n&&i&&h$(r,e)?{from:i.from,to:i.to}:null,a={from:s,insert:t},l=r.state.changes(o?[o,a]:a);r.focus(),r.dispatch({changes:l,selection:{anchor:l.mapPos(s,-1),head:l.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),r.inputState.draggedContent=null}Br.drop=(r,e)=>{if(!e.dataTransfer)return!1;if(r.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let n=Array(t.length),s=0,i=()=>{++s==t.length&&bd(r,e,n.filter(o=>o!=null).join(r.state.lineBreak),!1)};for(let o=0;o<t.length;o++){let a=new FileReader;a.onerror=i,a.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(a.result)||(n[o]=a.result),i()},a.readAsText(t[o])}return!0}else{let n=e.dataTransfer.getData("Text");if(n)return bd(r,e,n,!0),!0}return!1};Br.paste=(r,e)=>{if(r.state.readOnly)return!0;r.observer.flush();let t=Hm?null:e.clipboardData;return t?(Km(r,t.getData("text/plain")||t.getData("text/uri-list")),!0):(p$(r),!1)};function v$(r,e){let t=r.dom.parentNode;if(!t)return;let n=t.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout(()=>{n.remove(),r.focus()},50)}function b$(r){let e=[],t=[],n=!1;for(let s of r.selection.ranges)s.empty||(e.push(r.sliceDoc(s.from,s.to)),t.push(s));if(!e.length){let s=-1;for(let{from:i}of r.selection.ranges){let o=r.doc.lineAt(i);o.number>s&&(e.push(o.text),t.push({from:o.from,to:Math.min(r.doc.length,o.to+1)})),s=o.number}n=!0}return{text:pl(r,Xu,e.join(r.lineBreak)),ranges:t,linewise:n}}let Wc=null;Br.copy=Br.cut=(r,e)=>{if(!Xi(r.contentDOM,r.observer.selectionRange))return!1;let{text:t,ranges:n,linewise:s}=b$(r.state);if(!t&&!s)return!1;Wc=s?t:null,e.type=="cut"&&!r.state.readOnly&&r.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"});let i=Hm?null:e.clipboardData;return i?(i.clearData(),i.setData("text/plain",t),!0):(v$(r,t),!1)};const eg=Sn.define();function tg(r,e){let t=[];for(let n of r.facet(Bm)){let s=n(r,e);s&&t.push(s)}return t.length?r.update({effects:t,annotations:eg.of(!0)}):null}function rg(r){setTimeout(()=>{let e=r.hasFocus;if(e!=r.inputState.notifiedFocused){let t=tg(r.state,e);t?r.dispatch(t):r.update([])}},10)}$r.focus=r=>{r.inputState.lastFocusTime=Date.now(),!r.scrollDOM.scrollTop&&(r.inputState.lastScrollTop||r.inputState.lastScrollLeft)&&(r.scrollDOM.scrollTop=r.inputState.lastScrollTop,r.scrollDOM.scrollLeft=r.inputState.lastScrollLeft),rg(r)};$r.blur=r=>{r.observer.clearSelectionRange(),rg(r)};$r.compositionstart=$r.compositionupdate=r=>{r.observer.editContext||(r.inputState.compositionFirstChange==null&&(r.inputState.compositionFirstChange=!0),r.inputState.composing<0&&(r.inputState.composing=0))};$r.compositionend=r=>{r.observer.editContext||(r.inputState.composing=-1,r.inputState.compositionEndedAt=Date.now(),r.inputState.compositionPendingKey=!0,r.inputState.compositionPendingChange=r.observer.pendingRecords().length>0,r.inputState.compositionFirstChange=null,Te.chrome&&Te.android?r.observer.flushSoon():r.inputState.compositionPendingChange?Promise.resolve().then(()=>r.observer.flush()):setTimeout(()=>{r.inputState.composing<0&&r.docView.hasComposition&&r.update([])},50))};$r.contextmenu=r=>{r.inputState.lastContextMenu=Date.now()};Br.beforeinput=(r,e)=>{var t,n;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(r.inputState.insertingText=e.data,r.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&r.observer.editContext){let i=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(i&&o.length){let a=o[0],l=r.posAtDOM(a.startContainer,a.startOffset),c=r.posAtDOM(a.endContainer,a.endOffset);return Nu(r,{from:l,to:c,insert:r.state.toText(i)},null),!0}}let s;if(Te.chrome&&Te.android&&(s=Um.find(i=>i.inputType==e.inputType))&&(r.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let i=((n=window.visualViewport)===null||n===void 0?void 0:n.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>i+10&&r.hasFocus&&(r.contentDOM.blur(),r.focus())},100)}return Te.ios&&e.inputType=="deleteContentForward"&&r.observer.flushSoon(),Te.safari&&e.inputType=="insertText"&&r.inputState.composing>=0&&setTimeout(()=>$r.compositionend(r,e),20),!1};const xd=new Set;function x$(r){xd.has(r)||(xd.add(r),r.addEventListener("copy",()=>{}),r.addEventListener("cut",()=>{}))}const yd=["pre-wrap","normal","pre-line","break-spaces"];let qs=!1;function kd(){qs=!1}class y${constructor(e){this.lineWrapping=e,this.doc=st.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let n=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((t-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return yd.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let n=0;n<e.length;n++){let s=e[n];s<0?n++:this.heightSamples[Math.floor(s*10)]||(t=!0,this.heightSamples[Math.floor(s*10)]=!0)}return t}refresh(e,t,n,s,i,o){let a=yd.indexOf(e)>-1,l=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=a||Math.abs(n-this.charWidth)>.1;if(this.lineWrapping=a,this.lineHeight=t,this.charWidth=n,this.textHeight=s,this.lineLength=i,l){this.heightSamples={};for(let c=0;c<o.length;c++){let u=o[c];u<0?c++:this.heightSamples[Math.floor(u*10)]=!0}}return l}}class k${constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index<this.heights.length}}class Ar{constructor(e,t,n,s,i){this.from=e,this.length=t,this.top=n,this.height=s,this._content=i}get type(){return typeof this._content=="number"?Xt.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof fs?this._content.widget:null}get widgetLineBreaks(){return typeof this._content=="number"?this._content:0}join(e){let t=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new Ar(this.from,this.length+e.length,this.top,this.height+e.height,t)}}var pt=(function(r){return r[r.ByPos=0]="ByPos",r[r.ByHeight=1]="ByHeight",r[r.ByPosNoHeight=2]="ByPosNoHeight",r})(pt||(pt={}));const fa=.001;class Ft{constructor(e,t,n=2){this.length=e,this.height=t,this.flags=n}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>fa&&(qs=!0),this.height=e)}replace(e,t,n){return Ft.of(n)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,n,s){let i=this,o=n.doc;for(let a=s.length-1;a>=0;a--){let{fromA:l,toA:c,fromB:u,toB:h}=s[a],p=i.lineAt(l,pt.ByPosNoHeight,n.setDoc(t),0,0),f=p.to>=c?p:i.lineAt(c,pt.ByPosNoHeight,n,0,0);for(h+=f.to-c,c=f.to;a>0&&p.from<=s[a-1].toA;)l=s[a-1].fromA,u=s[a-1].fromB,a--,l<p.from&&(p=i.lineAt(l,pt.ByPosNoHeight,n,0,0));u+=p.from-l,l=p.from;let g=Wu.build(n.setDoc(o),e,u,h);i=Za(i,i.replace(l,c,g))}return i.updateHeight(n,0)}static empty(){return new hr(0,0,0)}static of(e){if(e.length==1)return e[0];let t=0,n=e.length,s=0,i=0;for(;;)if(t==n)if(s>i*2){let a=e[t-1];a.break?e.splice(--t,1,a.left,null,a.right):e.splice(--t,1,a.left,a.right),n+=1+a.break,s-=a.size}else if(i>s*2){let a=e[n];a.break?e.splice(n,1,a.left,null,a.right):e.splice(n,1,a.left,a.right),n+=2+a.break,i-=a.size}else break;else if(s<i){let a=e[t++];a&&(s+=a.size)}else{let a=e[--n];a&&(i+=a.size)}let o=0;return e[t-1]==null?(o=1,t--):e[t]==null&&(o=1,n++),new S$(Ft.of(e.slice(0,t)),o,Ft.of(e.slice(n)))}}function Za(r,e){return r==e?r:(r.constructor!=e.constructor&&(qs=!0),e)}Ft.prototype.size=1;const w$=Le.replace({});class ng extends Ft{constructor(e,t,n){super(e,t),this.deco=n,this.spaceAbove=0}mainBlock(e,t){return new Ar(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.deco||0)}blockAt(e,t,n,s){return this.spaceAbove&&e<n+this.spaceAbove?new Ar(s,0,n,this.spaceAbove,w$):this.mainBlock(n,s)}lineAt(e,t,n,s,i){let o=this.mainBlock(s,i);return this.spaceAbove?this.blockAt(0,n,s,i).join(o):o}forEachLine(e,t,n,s,i,o){e<=i+this.length&&t>=i&&o(this.lineAt(0,pt.ByPos,n,s,i))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,n=!1,s){return s&&s.from<=t&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}}class hr extends ng{constructor(e,t,n){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=n}mainBlock(e,t){return new Ar(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,n){let s=n[0];return n.length==1&&(s instanceof hr||s instanceof Zt&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof Zt?s=new hr(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):Ft.of(n)}updateHeight(e,t=0,n=!1,s){return s&&s.from<=t&&s.more?this.setMeasuredHeight(s):(n||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Zt extends Ft{constructor(e){super(e,0)}heightMetrics(e,t){let n=e.doc.lineAt(t).number,s=e.doc.lineAt(t+this.length).number,i=s-n+1,o,a=0;if(e.lineWrapping){let l=Math.min(this.height,e.lineHeight*i);o=l/i,this.length>i+1&&(a=(this.height-l)/(this.length-i-1))}else o=this.height/i;return{firstLine:n,lastLine:s,perLine:o,perChar:a}}blockAt(e,t,n,s){let{firstLine:i,lastLine:o,perLine:a,perChar:l}=this.heightMetrics(t,s);if(t.lineWrapping){let c=s+(e<t.lineHeight?0:Math.round(Math.max(0,Math.min(1,(e-n)/this.height))*this.length)),u=t.doc.lineAt(c),h=a+u.length*l,p=Math.max(n,e-h/2);return new Ar(u.from,u.length,p,h,0)}else{let c=Math.max(0,Math.min(o-i,Math.floor((e-n)/a))),{from:u,length:h}=t.doc.line(i+c);return new Ar(u,h,n+a*c,a,0)}}lineAt(e,t,n,s,i){if(t==pt.ByHeight)return this.blockAt(e,n,s,i);if(t==pt.ByPosNoHeight){let{from:f,to:g}=n.doc.lineAt(e);return new Ar(f,g-f,0,0,0)}let{firstLine:o,perLine:a,perChar:l}=this.heightMetrics(n,i),c=n.doc.lineAt(e),u=a+c.length*l,h=c.number-o,p=s+a*h+l*(c.from-i-h);return new Ar(c.from,c.length,Math.max(s,Math.min(p,s+this.height-u)),u,0)}forEachLine(e,t,n,s,i,o){e=Math.max(e,i),t=Math.min(t,i+this.length);let{firstLine:a,perLine:l,perChar:c}=this.heightMetrics(n,i);for(let u=e,h=s;u<=t;){let p=n.doc.lineAt(u);if(u==e){let g=p.number-a;h+=l*g+c*(e-i-g)}let f=l+c*p.length;o(new Ar(p.from,p.length,h,f,0)),h+=f,u=p.to+1}}replace(e,t,n){let s=this.length-t;if(s>0){let i=n[n.length-1];i instanceof Zt?n[n.length-1]=new Zt(i.length+s):n.push(null,new Zt(s-1))}if(e>0){let i=n[0];i instanceof Zt?n[0]=new Zt(e+i.length):n.unshift(new Zt(e-1),null)}return Ft.of(n)}decomposeLeft(e,t){t.push(new Zt(e-1),null)}decomposeRight(e,t){t.push(null,new Zt(this.length-e-1))}updateHeight(e,t=0,n=!1,s){let i=t+this.length;if(s&&s.from<=t+this.length&&s.more){let o=[],a=Math.max(t,s.from),l=-1;for(s.from>t&&o.push(new Zt(s.from-t-1).updateHeight(e,t));a<=i&&s.more;){let u=e.doc.lineAt(a).length;o.length&&o.push(null);let h=s.heights[s.index++],p=0;h<0&&(p=-h,h=s.heights[s.index++]),l==-1?l=h:Math.abs(h-l)>=fa&&(l=-2);let f=new hr(u,h,p);f.outdated=!1,o.push(f),a+=u+1}a<=i&&o.push(null,new Zt(i-a).updateHeight(e,a));let c=Ft.of(o);return(l<0||Math.abs(c.height-this.height)>=fa||Math.abs(l-this.heightMetrics(e,t).perLine)>=fa)&&(qs=!0),Za(this,c)}else(n||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class S$ extends Ft{constructor(e,t,n){super(e.length+t+n.length,e.height+n.height,t|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,t,n,s){let i=n+this.left.height;return e<i?this.left.blockAt(e,t,n,s):this.right.blockAt(e,t,i,s+this.left.length+this.break)}lineAt(e,t,n,s,i){let o=s+this.left.height,a=i+this.left.length+this.break,l=t==pt.ByHeight?e<o:e<a,c=l?this.left.lineAt(e,t,n,s,i):this.right.lineAt(e,t,n,o,a);if(this.break||(l?c.to<a:c.from>a))return c;let u=t==pt.ByPosNoHeight?pt.ByPosNoHeight:pt.ByPos;return l?c.join(this.right.lineAt(a,u,n,o,a)):this.left.lineAt(a,u,n,s,i).join(c)}forEachLine(e,t,n,s,i,o){let a=s+this.left.height,l=i+this.left.length+this.break;if(this.break)e<l&&this.left.forEachLine(e,t,n,s,i,o),t>=l&&this.right.forEachLine(e,t,n,a,l,o);else{let c=this.lineAt(l,pt.ByPos,n,s,i);e<c.from&&this.left.forEachLine(e,c.from-1,n,s,i,o),c.to>=e&&c.from<=t&&o(c),t>c.to&&this.right.forEachLine(c.to+1,t,n,a,l,o)}}replace(e,t,n){let s=this.left.length+this.break;if(t<s)return this.balanced(this.left.replace(e,t,n),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-s,t-s,n));let i=[];e>0&&this.decomposeLeft(e,i);let o=i.length;for(let a of n)i.push(a);if(e>0&&wd(i,o-1),t<this.length){let a=i.length;this.decomposeRight(t,i),wd(i,a)}return Ft.of(i)}decomposeLeft(e,t){let n=this.left.length;if(e<=n)return this.left.decomposeLeft(e,t);t.push(this.left),this.break&&(n++,e>=n&&t.push(null)),e>n&&this.right.decomposeLeft(e-n,t)}decomposeRight(e,t){let n=this.left.length,s=n+this.break;if(e>=s)return this.right.decomposeRight(e-s,t);e<n&&this.left.decomposeRight(e,t),this.break&&e<s&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?Ft.of(this.break?[e,null,t]:[e,t]):(this.left=Za(this.left,e),this.right=Za(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,n=!1,s){let{left:i,right:o}=this,a=t+i.length+this.break,l=null;return s&&s.from<=t+i.length&&s.more?l=i=i.updateHeight(e,t,n,s):i.updateHeight(e,t,n),s&&s.from<=a+o.length&&s.more?l=o=o.updateHeight(e,a,n,s):o.updateHeight(e,a,n),l?this.balanced(i,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function wd(r,e){let t,n;r[e]==null&&(t=r[e-1])instanceof Zt&&(n=r[e+1])instanceof Zt&&r.splice(e-1,3,new Zt(t.length+1+n.length))}const $$=5;class Wu{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let n=Math.min(t,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof hr?s.length+=n-this.pos:(n>this.pos||!this.isCovered)&&this.nodes.push(new hr(n-this.pos,-1,0)),this.writtenTo=n,t>n&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,n){if(e<t||n.heightRelevant){let s=n.widget?n.widget.estimatedHeight:0,i=n.widget?n.widget.lineBreaks:0;s<0&&(s=this.oracle.lineHeight);let o=t-e;n.block?this.addBlock(new ng(o,s,n)):(o||i||s>=$$)&&this.addLineDeco(s,i,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenTo<e&&((this.writtenTo<e-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new hr(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let n=new Zt(t-e);return this.oracle.doc.lineAt(e).to==t&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof hr)return e;let t=new hr(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,n){let s=this.ensureLine();s.length+=n,s.collapsed+=n,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=t,this.writtenTo=this.pos=this.pos+n}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof hr)&&!this.isCovered?this.nodes.push(new hr(0,-1,0)):(this.writtenTo<this.pos||t==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let n=e;for(let s of this.nodes)s instanceof hr&&s.updateHeight(this.oracle,n),n+=s?s.length:1;return this.nodes}static build(e,t,n,s){let i=new Wu(n,e);return et.spans(t,n,s,i,0),i.finish(n)}}function C$(r,e,t){let n=new Q$;return et.compare(r,e,t,n,0),n.changes}class Q${constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,n,s){(e<t||n&&n.heightRelevant||s&&s.heightRelevant)&&_s(e,t,this.changes,5)}}function P$(r,e){let t=r.getBoundingClientRect(),n=r.ownerDocument,s=n.defaultView||window,i=Math.max(0,t.left),o=Math.min(s.innerWidth,t.right),a=Math.max(0,t.top),l=Math.min(s.innerHeight,t.bottom);for(let c=r.parentNode;c&&c!=n.body;)if(c.nodeType==1){let u=c,h=window.getComputedStyle(u);if((u.scrollHeight>u.clientHeight||u.scrollWidth>u.clientWidth)&&h.overflow!="visible"){let p=u.getBoundingClientRect();i=Math.max(i,p.left),o=Math.min(o,p.right),a=Math.max(a,p.top),l=Math.min(c==r.parentNode?s.innerHeight:l,p.bottom)}c=h.position=="absolute"||h.position=="fixed"?u.offsetParent:u.parentNode}else if(c.nodeType==11)c=c.host;else break;return{left:i-t.left,right:Math.max(i,o)-t.left,top:a-(t.top+e),bottom:Math.max(a,l)-(t.top+e)}}function T$(r){let e=r.getBoundingClientRect(),t=r.ownerDocument.defaultView||window;return e.left<t.innerWidth&&e.right>0&&e.top<t.innerHeight&&e.bottom>0}function M$(r,e){let t=r.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}class Bl{constructor(e,t,n,s){this.from=e,this.to=t,this.size=n,this.displaySize=s}static same(e,t){if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++){let s=e[n],i=t[n];if(s.from!=i.from||s.to!=i.to||s.size!=i.size)return!1}return!0}draw(e,t){return Le.replace({widget:new A$(this.displaySize*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}}class A$ extends on{constructor(e,t){super(),this.size=e,this.vertical=t}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){let e=document.createElement("div");return this.vertical?e.style.height=this.size+"px":(e.style.width=this.size+"px",e.style.height="2px",e.style.display="inline-block"),e}get estimatedHeight(){return this.vertical?this.size:-1}}class Sd{constructor(e){this.state=e,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scrollTop=0,this.scrolledToBottom=!1,this.scaleX=1,this.scaleY=1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=$d,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=dt.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let t=e.facet(Iu).some(n=>typeof n!="function"&&n.class=="cm-lineWrapping");this.heightOracle=new y$(t),this.stateDeco=Cd(e),this.heightMap=Ft.empty().applyChanges(this.stateDeco,st.empty,this.heightOracle.setDoc(e.doc),[new br(0,0,0,e.doc.length)]);for(let n=0;n<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());n++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Le.set(this.lineGaps.map(n=>n.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let n=0;n<=1;n++){let s=n?t.head:t.anchor;if(!e.some(({from:i,to:o})=>s>=i&&s<=o)){let{from:i,to:o}=this.lineBlockAt(s);e.push(new zo(i,o))}}return this.viewports=e.sort((n,s)=>n.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?$d:new ju(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(Bi(e,this.scaler))})}update(e,t=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=Cd(this.state);let s=e.changedRanges,i=br.extendWithRanges(s,C$(n,this.stateDeco,e?e.changes:Ct.empty(this.state.doc.length))),o=this.heightMap.height,a=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);kd(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=o||qs)&&(e.flags|=2),a?(this.scrollAnchorPos=e.changes.mapPos(a.from,-1),this.scrollAnchorHeight=a.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let l=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.head<l.from||t.range.head>l.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,t));let c=l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,e.flags|=this.updateForViewport(),(c||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Em)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let t=e.contentDOM,n=window.getComputedStyle(t),s=this.heightOracle,i=n.whiteSpace;this.defaultTextDirection=n.direction=="rtl"?dt.RTL:dt.LTR;let o=this.heightOracle.mustRefreshForWrapping(i)||this.mustMeasureContent==="refresh",a=t.getBoundingClientRect(),l=o||this.mustMeasureContent||this.contentDOMHeight!=a.height;this.contentDOMHeight=a.height,this.mustMeasureContent=!1;let c=0,u=0;if(a.width&&a.height){let{scaleX:P,scaleY:E}=bm(t,a);(P>.005&&Math.abs(this.scaleX-P)>.005||E>.005&&Math.abs(this.scaleY-E)>.005)&&(this.scaleX=P,this.scaleY=E,c|=16,o=l=!0)}let h=(parseInt(n.paddingTop)||0)*this.scaleY,p=(parseInt(n.paddingBottom)||0)*this.scaleY;(this.paddingTop!=h||this.paddingBottom!=p)&&(this.paddingTop=h,this.paddingBottom=p,c|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(l=!0),this.editorWidth=e.scrollDOM.clientWidth,c|=16);let f=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=f&&(this.scrollAnchorHeight=-1,this.scrollTop=f),this.scrolledToBottom=ym(e.scrollDOM);let g=(this.printing?M$:P$)(t,this.paddingTop),O=g.top-this.pixelViewport.top,x=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let b=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(b!=this.inView&&(this.inView=b,b&&(l=!0)),!this.inView&&!this.scrollTarget&&!T$(e.dom))return 0;let w=a.width;if((this.contentDOMWidth!=w||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=a.width,this.editorHeight=e.scrollDOM.clientHeight,c|=16),l){let P=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(P)&&(o=!0),o||s.lineWrapping&&Math.abs(w-this.contentDOMWidth)>s.charWidth){let{lineHeight:E,charWidth:j,textHeight:z}=e.docView.measureTextSize();o=E>0&&s.refresh(i,E,j,z,Math.max(5,w/j),P),o&&(e.docView.minWidth=0,c|=16)}O>0&&x>0?u=Math.max(O,x):O<0&&x<0&&(u=Math.min(O,x)),kd();for(let E of this.viewports){let j=E.from==this.viewport.from?P:e.docView.measureVisibleLineHeights(E);this.heightMap=(o?Ft.empty().applyChanges(this.stateDeco,st.empty,this.heightOracle,[new br(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new k$(E.from,j))}qs&&(c|=2)}let Q=!this.viewportIsAppropriate(this.viewport,u)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return Q&&(c&2&&(c|=this.updateScaler()),this.viewport=this.getViewport(u,this.scrollTarget),c|=this.updateForViewport()),(c&2||Q)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),c|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),c}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,i=this.heightOracle,{visibleTop:o,visibleBottom:a}=this,l=new zo(s.lineAt(o-n*1e3,pt.ByHeight,i,0,0).from,s.lineAt(a+(1-n)*1e3,pt.ByHeight,i,0,0).to);if(t){let{head:c}=t.range;if(c<l.from||c>l.to){let u=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),h=s.lineAt(c,pt.ByPos,i,0,0),p;t.y=="center"?p=(h.top+h.bottom)/2-u/2:t.y=="start"||t.y=="nearest"&&c<l.from?p=h.top:p=h.bottom-u,l=new zo(s.lineAt(p-1e3/2,pt.ByHeight,i,0,0).from,s.lineAt(p+u+1e3/2,pt.ByHeight,i,0,0).to)}}return l}mapViewport(e,t){let n=t.mapPos(e.from,-1),s=t.mapPos(e.to,1);return new zo(this.heightMap.lineAt(n,pt.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(s,pt.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},n=0){if(!this.inView)return!0;let{top:s}=this.heightMap.lineAt(e,pt.ByPos,this.heightOracle,0,0),{bottom:i}=this.heightMap.lineAt(t,pt.ByPos,this.heightOracle,0,0),{visibleTop:o,visibleBottom:a}=this;return(e==0||s<=o-Math.max(10,Math.min(-n,250)))&&(t==this.state.doc.length||i>=a+Math.max(10,Math.min(n,250)))&&s>o-2*1e3&&i<a+2*1e3}mapLineGaps(e,t){if(!e.length||t.empty)return e;let n=[];for(let s of e)t.touchesRange(s.from,s.to)||n.push(new Bl(t.mapPos(s.from),t.mapPos(s.to),s.size,s.displaySize));return n}ensureLineGaps(e,t){let n=this.heightOracle.lineWrapping,s=n?1e4:2e3,i=s>>1,o=s<<1;if(this.defaultTextDirection!=dt.LTR&&!n)return[];let a=[],l=(u,h,p,f)=>{if(h-u<i)return;let g=this.state.selection.main,O=[g.from];g.empty||O.push(g.to);for(let b of O)if(b>u&&b<h){l(u,b-10,p,f),l(b+10,h,p,f);return}let x=R$(e,b=>b.from>=p.from&&b.to<=p.to&&Math.abs(b.from-u)<i&&Math.abs(b.to-h)<i&&!O.some(w=>b.from<w&&b.to>w));if(!x){if(h<p.to&&t&&n&&t.visibleRanges.some(Q=>Q.from<=h&&Q.to>=h)){let Q=t.moveToLineBoundary(re.cursor(h),!1,!0).head;Q>u&&(h=Q)}let b=this.gapSize(p,u,h,f),w=n||b<2e6?b:2e6;x=new Bl(u,h,b,w)}a.push(x)},c=u=>{if(u.length<o||u.type!=Xt.Text)return;let h=_$(u.from,u.to,this.stateDeco);if(h.total<o)return;let p=this.scrollTarget?this.scrollTarget.range.head:null,f,g;if(n){let O=s/this.heightOracle.lineLength*this.heightOracle.lineHeight,x,b;if(p!=null){let w=Wo(h,p),Q=((this.visibleBottom-this.visibleTop)/2+O)/u.height;x=w-Q,b=w+Q}else x=(this.visibleTop-u.top-O)/u.height,b=(this.visibleBottom-u.top+O)/u.height;f=No(h,x),g=No(h,b)}else{let O=h.total*this.heightOracle.charWidth,x=s*this.heightOracle.charWidth,b=0;if(O>2e6)for(let j of e)j.from>=u.from&&j.from<u.to&&j.size!=j.displaySize&&j.from*this.heightOracle.charWidth+b<this.pixelViewport.left&&(b=j.size-j.displaySize);let w=this.pixelViewport.left+b,Q=this.pixelViewport.right+b,P,E;if(p!=null){let j=Wo(h,p),z=((Q-w)/2+x)/O;P=j-z,E=j+z}else P=(w-x)/O,E=(Q+x)/O;f=No(h,P),g=No(h,E)}f>u.from&&l(u.from,f,u,h),g<u.to&&l(g,u.to,u,h)};for(let u of this.viewportLines)Array.isArray(u.type)?u.type.forEach(c):c(u);return a}gapSize(e,t,n,s){let i=Wo(s,n)-Wo(s,t);return this.heightOracle.lineWrapping?e.height*i:s.total*this.heightOracle.charWidth*i}updateLineGaps(e){Bl.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=Le.set(e.map(t=>t.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let n=[];et.spans(t,this.viewport.from,this.viewport.to,{span(i,o){n.push({from:i,to:o})},point(){}},20);let s=0;if(n.length!=this.visibleRanges.length)s=12;else for(let i=0;i<n.length&&!(s&8);i++){let o=this.visibleRanges[i],a=n[i];(o.from!=a.from||o.to!=a.to)&&(s|=4,e&&e.mapPos(o.from,-1)==a.from&&e.mapPos(o.to,1)==a.to||(s|=8))}return this.visibleRanges=n,s}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||Bi(this.heightMap.lineAt(e,pt.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||Bi(this.heightMap.lineAt(this.scaler.fromDOM(e),pt.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return Bi(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class zo{constructor(e,t){this.from=e,this.to=t}}function _$(r,e,t){let n=[],s=r,i=0;return et.spans(t,r,e,{span(){},point(o,a){o>s&&(n.push({from:s,to:o}),i+=o-s),s=a}},20),s<e&&(n.push({from:s,to:e}),i+=e-s),{total:i,ranges:n}}function No({total:r,ranges:e},t){if(t<=0)return e[0].from;if(t>=1)return e[e.length-1].to;let n=Math.floor(r*t);for(let s=0;;s++){let{from:i,to:o}=e[s],a=o-i;if(n<=a)return i+n;n-=a}}function Wo(r,e){let t=0;for(let{from:n,to:s}of r.ranges){if(e<=s){t+=e-n;break}t+=s-n}return t/r.total}function R$(r,e){for(let t of r)if(e(t))return t}const $d={toDOM(r){return r},fromDOM(r){return r},scale:1,eq(r){return r==this}};function Cd(r){let e=r.facet(hl).filter(n=>typeof n!="function"),t=r.facet(Vu).filter(n=>typeof n!="function");return t.length&&e.push(et.join(t)),e}class ju{constructor(e,t,n){let s=0,i=0,o=0;this.viewports=n.map(({from:a,to:l})=>{let c=t.lineAt(a,pt.ByPos,e,0,0).top,u=t.lineAt(l,pt.ByPos,e,0,0).bottom;return s+=u-c,{from:a,to:l,top:c,bottom:u,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(t.height-s);for(let a of this.viewports)a.domTop=o+(a.top-i)*this.scale,o=a.domBottom=a.domTop+(a.bottom-a.top),i=a.bottom}toDOM(e){for(let t=0,n=0,s=0;;t++){let i=t<this.viewports.length?this.viewports[t]:null;if(!i||e<i.top)return s+(e-n)*this.scale;if(e<=i.bottom)return i.domTop+(e-i.top);n=i.bottom,s=i.domBottom}}fromDOM(e){for(let t=0,n=0,s=0;;t++){let i=t<this.viewports.length?this.viewports[t]:null;if(!i||e<i.domTop)return n+(e-s)/this.scale;if(e<=i.domBottom)return i.top+(e-i.domTop);n=i.bottom,s=i.domBottom}}eq(e){return e instanceof ju?this.scale==e.scale&&this.viewports.length==e.viewports.length&&this.viewports.every((t,n)=>t.from==e.viewports[n].from&&t.to==e.viewports[n].to):!1}}function Bi(r,e){if(e.scale==1)return r;let t=e.toDOM(r.top),n=e.toDOM(r.bottom);return new Ar(r.from,r.length,t,n-t,Array.isArray(r._content)?r._content.map(s=>Bi(s,e)):r._content)}const jo=Ce.define({combine:r=>r.join(" ")}),jc=Ce.define({combine:r=>r.indexOf(!0)>-1}),qc=Ln.newName(),sg=Ln.newName(),ig=Ln.newName(),og={"&light":"."+sg,"&dark":"."+ig};function Yc(r,e,t){return new Ln(e,{finish(n){return/&/.test(n)?n.replace(/&\w*/,s=>{if(s=="&")return r;if(!t||!t[s])throw new RangeError(`Unsupported selector: ${s}`);return t[s]}):r+" "+n}})}const B$=Yc("."+qc,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},og),Z$={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Zl=Te.ie&&Te.ie_version<=11;class E${constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new d2,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let n of t)this.queue.push(n);(Te.ie&&Te.ie_version<=11||Te.ios&&e.composing)&&t.some(n=>n.type=="childList"&&n.removedNodes.length||n.type=="characterData"&&n.oldValue.length>n.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&Te.android&&e.constructor.EDIT_CONTEXT!==!1&&!(Te.chrome&&Te.chrome_version<126)&&(this.editContext=new L$(e),e.state.facet(mn)&&(e.contentDOM.editContext=this.editContext.editContext)),Zl&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(e.scrollDOM)),this.addWindowListeners(this.win=e.win),this.start(),typeof IntersectionObserver=="function"&&(this.intersection=new IntersectionObserver(t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,n)=>t!=e[n]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,s=this.selectionRange;if(n.state.facet(mn)?n.root.activeElement!=this.dom:!Xi(this.dom,s))return;let i=s.anchorNode&&n.docView.tile.nearest(s.anchorNode);if(i&&i.isWidget()&&i.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(Te.ie&&Te.ie_version<=11||Te.android&&Te.chrome)&&!n.state.selection.main.empty&&s.focusNode&&Ii(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=Ui(e.root);if(!t)return!1;let n=Te.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&D$(this.view,t)||t;if(!n||this.selectionRange.eq(n))return!1;let s=Xi(this.dom,n);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&p2(this.dom,n)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(n),s&&(this.selectionChanged=!0),!0)}setSelectionRange(e,t){this.selectionRange.set(e.node,e.offset,t.node,t.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,t=null;for(let n=this.dom;n;)if(n.nodeType==1)!t&&e<this.scrollTargets.length&&this.scrollTargets[e]==n?e++:t||(t=this.scrollTargets.slice(0,e)),t&&t.push(n),n=n.assignedSlot||n.parentNode;else if(n.nodeType==11)n=n.host;else break;if(e<this.scrollTargets.length&&!t&&(t=this.scrollTargets.slice(0,e)),t){for(let n of this.scrollTargets)n.removeEventListener("scroll",this.onScroll);for(let n of this.scrollTargets=t)n.addEventListener("scroll",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,Z$),Zl&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),Zl&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){var n;if(!this.delayedAndroidKey){let s=()=>{let i=this.delayedAndroidKey;i&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=i.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&i.force&&Rs(this.dom,i.key,i.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange<Date.now()-50||!!(!((n=this.delayedAndroidKey)===null||n===void 0)&&n.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,n=-1,s=!1;for(let i of e){let o=this.readMutation(i);o&&(o.typeOver&&(s=!0),t==-1?{from:t,to:n}=o:(t=Math.min(o.from,t),n=Math.max(o.to,n)))}return{from:t,to:n,typeOver:s}}readChange(){let{from:e,to:t,typeOver:n}=this.processRecords(),s=this.selectionChanged&&Xi(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new t$(this.view,e,t,n);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let n=this.view.state,s=Ym(this.view,t);return this.view.state==n&&(t.domChanged||t.newSel&&!Ba(this.view.state.selection,t.newSel.main))&&this.view.update([]),s}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let n=Qd(t,e.previousSibling||e.target.previousSibling,-1),s=Qd(t,e.nextSibling||e.target.nextSibling,1);return{from:n?t.posAfter(n):t.posAtStart,to:s?t.posBefore(s):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(mn)!=e.state.facet(mn)&&(e.view.contentDOM.editContext=e.state.facet(mn)?this.editContext.editContext:null))}destroy(){var e,t,n;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(n=this.resizeScroll)===null||n===void 0||n.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function Qd(r,e,t){for(;e;){let n=wt.get(e);if(n&&n.parent==r)return n;let s=e.parentNode;e=s!=r.dom?s:t>0?e.nextSibling:e.previousSibling}return null}function Pd(r,e){let t=e.startContainer,n=e.startOffset,s=e.endContainer,i=e.endOffset,o=r.docView.domAtPos(r.state.selection.main.anchor,1);return Ii(o.node,o.offset,s,i)&&([t,n,s,i]=[s,i,t,n]),{anchorNode:t,anchorOffset:n,focusNode:s,focusOffset:i}}function D$(r,e){if(e.getComposedRanges){let s=e.getComposedRanges(r.root)[0];if(s)return Pd(r,s)}let t=null;function n(s){s.preventDefault(),s.stopImmediatePropagation(),t=s.getTargetRanges()[0]}return r.contentDOM.addEventListener("beforeinput",n,!0),r.dom.ownerDocument.execCommand("indent"),r.contentDOM.removeEventListener("beforeinput",n,!0),t?Pd(r,t):null}class L${constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=n=>{let s=e.state.selection.main,{anchor:i,head:o}=s,a=this.toEditorPos(n.updateRangeStart),l=this.toEditorPos(n.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:n.updateRangeStart,editorBase:a,drifted:!1});let c=l-a>n.text.length;a==this.from&&i<this.from?a=i:l==this.to&&i>this.to&&(l=i);let u=Fm(e.state.sliceDoc(a,l),n.text,(c?s.from:s.to)-a,c?"end":null);if(!u){let p=re.single(this.toEditorPos(n.selectionStart),this.toEditorPos(n.selectionEnd));Ba(p,s)||e.dispatch({selection:p,userEvent:"select"});return}let h={from:u.from+a,to:u.toA+a,insert:st.of(n.text.slice(u.from,u.toB).split(`
|
|
20
|
+
`))};if((Te.mac||Te.android)&&h.from==o-1&&/^\. ?$/.test(n.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(h={from:a,to:l,insert:st.of([n.text.replace("."," ")])}),this.pendingContextChange=h,!e.state.readOnly){let p=this.to-this.from+(h.to-h.from+h.insert.length);Nu(e,h,re.single(this.toEditorPos(n.selectionStart,p),this.toEditorPos(n.selectionEnd,p)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),h.from<h.to&&!h.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,n.updateRangeStart-1),Math.min(t.text.length,n.updateRangeStart+1)))&&this.handlers.compositionend(n)},this.handlers.characterboundsupdate=n=>{let s=[],i=null;for(let o=this.toEditorPos(n.rangeStart),a=this.toEditorPos(n.rangeEnd);o<a;o++){let l=e.coordsForChar(o);i=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||i||new DOMRect,s.push(i)}t.updateCharacterBounds(n.rangeStart,s)},this.handlers.textformatupdate=n=>{let s=[];for(let i of n.getTextFormats()){let o=i.underlineStyle,a=i.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(i.rangeStart),c=this.toEditorPos(i.rangeEnd);if(l<c){let u=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;s.push(Le.mark({attributes:{style:u}}).range(l,c))}}}e.dispatch({effects:Lm.of(Le.set(s))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:n}=this.composing;this.composing=null,n&&this.reset(e.state)}};for(let n in this.handlers)t.addEventListener(n,this.handlers[n]);this.measureReq={read:n=>{this.editContext.updateControlBounds(n.contentDOM.getBoundingClientRect());let s=Ui(n.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,n=!1,s=this.pendingContextChange;return e.changes.iterChanges((i,o,a,l,c)=>{if(n)return;let u=c.length-(o-i);if(s&&o>=s.to)if(s.from==i&&s.to==o&&s.insert.eq(c)){s=this.pendingContextChange=null,t+=u,this.to+=u;return}else s=null,this.revertPending(e.state);if(i+=t,o+=t,o<=this.from)this.from+=u,this.to+=u;else if(i<this.to){if(i<this.from||o>this.to||this.to-this.from+c.length>3e4){n=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(o),c.toString()),this.to+=u}t+=u}),s&&!n&&this.revertPending(e.state),!n}update(e){let t=this.pendingContextChange,n=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(n.from,n.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,n=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),s=this.toContextPos(t.head);(this.editContext.selectionStart!=n||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(n,s)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let n=this.composing;return n&&n.drifted?n.editorBase+(e-n.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Se{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:n}=e;this.dispatchTransactions=e.dispatchTransactions||n&&(s=>s.forEach(i=>n(i,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||f2(e.parent)||document,this.viewState=new Sd(e.state||tt.create(e)),e.scrollTo&&e.scrollTo.is(Xo)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ps).map(s=>new Tl(s));for(let s of this.plugins)s.update(this);this.observer=new E$(this),this.inputState=new i$(this),this.inputState.ensureHandlers(this.plugins),this.docView=new hd(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof kt?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,n=!1,s,i=this.state;for(let p of e){if(p.startState!=i)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");i=p.state}if(this.destroyed){this.viewState.state=i;return}let o=this.hasFocus,a=0,l=null;e.some(p=>p.annotation(eg))?(this.inputState.notifiedFocused=o,a=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,l=tg(i,o),l||(a=1));let c=this.observer.delayedAndroidKey,u=null;if(c?(this.observer.clearDelayedAndroidKey(),u=this.observer.readChange(),(u&&!this.state.doc.eq(i.doc)||!this.state.selection.eq(i.selection))&&(u=null)):this.observer.clear(),i.facet(tt.phrases)!=this.state.facet(tt.phrases))return this.setState(i);s=Aa.create(this,i,e),s.flags|=a;let h=this.viewState.scrollTarget;try{this.updateState=2;for(let p of e){if(h&&(h=h.map(p.changes)),p.scrollIntoView){let{main:f}=p.state.selection;h=new Bs(f.empty?f:re.cursor(f.head,f.head>f.anchor?-1:1))}for(let f of p.effects)f.is(Xo)&&(h=f.value.clip(this.state))}this.viewState.update(s,h),this.bidiCache=Ea.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),t=this.docView.update(s),this.state.facet(_i)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(p=>p.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(jo)!=s.state.facet(jo)&&(this.viewState.mustMeasureContent=!0),(t||n||h||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!s.empty)for(let p of this.state.facet(Ic))try{p(s)}catch(f){tr(this.state,f,"update listener")}(l||u)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),u&&!Ym(this,u)&&c.force&&Rs(this.contentDOM,c.key,c.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let n of this.plugins)n.destroy(this);this.viewState=new Sd(e),this.plugins=e.facet(Ps).map(n=>new Tl(n)),this.pluginMap.clear();for(let n of this.plugins)n.update(this);this.docView.destroy(),this.docView=new hd(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Ps),n=e.state.facet(Ps);if(t!=n){let s=[];for(let i of n){let o=t.indexOf(i);if(o<0)s.push(new Tl(i));else{let a=this.plugins[o];a.mustUpdate=e,s.push(a)}}for(let i of this.plugins)i.mustUpdate!=e&&i.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s<this.plugins.length;s++)this.plugins[s].update(this);t!=n&&this.inputState.ensureHandlers(this.plugins)}docViewUpdate(){for(let e of this.plugins){let t=e.value;if(t&&t.docViewUpdate)try{t.docViewUpdate(this)}catch(n){tr(this.state,n,"doc view update listener")}}}measure(e=!0){if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,n=this.scrollDOM,s=n.scrollTop*this.scaleY,{scrollAnchorPos:i,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let a=0;;a++){if(o<0)if(ym(n))i=-1,o=this.viewState.heightMap.height;else{let f=this.viewState.scrollAnchorAt(s);i=f.from,o=f.top}this.updateState=1;let l=this.viewState.measure(this);if(!l&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(a>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let c=[];l&4||([this.measureRequests,c]=[c,this.measureRequests]);let u=c.map(f=>{try{return f.read(this)}catch(g){return tr(this.state,g),Td}}),h=Aa.create(this,this.state,[]),p=!1;h.flags|=l,t?t.flags|=l:t=h,this.updateState=2,h.empty||(this.updatePlugins(h),this.inputState.update(h),this.updateAttrs(),p=this.docView.update(h),p&&this.docViewUpdate());for(let f=0;f<c.length;f++)if(u[f]!=Td)try{let g=c[f];g.write&&g.write(u[f],this)}catch(g){tr(this.state,g)}if(p&&this.docView.updateSelection(!0),!h.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight)if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,o=-1;continue}else{let g=(i<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(i).top)-o;if(g>1||g<-1){s=s+g,n.scrollTop=s/this.scaleY,o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let a of this.state.facet(Ic))a(t)}get themeClasses(){return qc+" "+(this.state.facet(jc)?ig:sg)+" "+this.state.facet(jo)}updateAttrs(){let e=Md(this,Xm,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(mn)?"true":"false",class:"cm-content",style:`${Te.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),Md(this,Iu,t);let n=this.observer.ignore(()=>{let s=id(this.contentDOM,this.contentAttrs,t),i=id(this.dom,this.editorAttrs,e);return s||i});return this.editorAttrs=e,this.contentAttrs=t,n}showAnnouncements(e){let t=!0;for(let n of e)for(let s of n.effects)if(s.is(Se.announce)){t&&(this.announceDOM.textContent=""),t=!1;let i=this.announceDOM.appendChild(document.createElement("div"));i.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(_i);let e=this.state.facet(Se.cspNonce);Ln.mount(this.root,this.styleModules.concat(B$).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;t<this.measureRequests.length;t++)if(this.measureRequests[t].key===e.key){this.measureRequests[t]=e;return}}this.measureRequests.push(e)}}plugin(e){let t=this.pluginMap.get(e);return(t===void 0||t&&t.plugin!=e)&&this.pluginMap.set(e,t=this.plugins.find(n=>n.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,n){return Rl(this,e,dd(this,e,t,n))}moveByGroup(e,t){return Rl(this,e,dd(this,e,t,n=>U2(this,e.head,n)))}visualLineSide(e,t){let n=this.bidiSpans(e),s=this.textDirectionAt(e.from),i=n[t?n.length-1:0];return re.cursor(i.side(t,s)+e.from,i.forward(!t,s)?1:-1)}moveToLineBoundary(e,t,n=!0){return F2(this,e,t,n)}moveVertically(e,t,n){return Rl(this,e,G2(this,e,t,n))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let n=Nc(this,e,t);return n&&n.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),Nc(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let n=this.docView.coordsAt(e,t);if(!n||n.left==n.right)return n;let s=this.state.doc.lineAt(e),i=this.bidiSpans(s),o=i[Kr.find(i,e-s.from,-1,t)];return Ma(n,o.dir==dt.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Zm)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>X$)return Qm(e.length);let t=this.textDirectionAt(e.from),n;for(let i of this.bidiCache)if(i.from==e.from&&i.dir==t&&(i.fresh||Cm(i.isolates,n=ld(this,e))))return i.order;n||(n=ld(this,e));let s=y2(e.text,t,n);return this.bidiCache.push(new Ea(e.from,e.to,t,n,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||Te.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{xm(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return Xo.of(new Bs(typeof e=="number"?re.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,n=this.viewState.scrollAnchorAt(e);return Xo.of(new Bs(re.cursor(n.from),"start","start",n.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return bt.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return bt.define(()=>({}),{eventObservers:e})}static theme(e,t){let n=Ln.newName(),s=[jo.of(n),_i.of(Yc(`.${n}`,e))];return t&&t.dark&&s.push(jc.of(!0)),s}static baseTheme(e){return wn.lowest(_i.of(Yc("."+qc,e,og)))}static findFromDOM(e){var t;let n=e.querySelector(".cm-content"),s=n&&wt.get(n)||wt.get(e);return((t=s?.root)===null||t===void 0?void 0:t.view)||null}}Se.styleModule=_i;Se.inputHandler=Rm;Se.clipboardInputFilter=Lu;Se.clipboardOutputFilter=Xu;Se.scrollHandler=Dm;Se.focusChangeEffect=Bm;Se.perLineTextDirection=Zm;Se.exceptionSink=_m;Se.updateListener=Ic;Se.editable=mn;Se.mouseSelectionStyle=Am;Se.dragMovesSelection=Mm;Se.clickAddsSelectionRange=Tm;Se.decorations=hl;Se.blockWrappers=Im;Se.outerDecorations=Vu;Se.atomicRanges=yo;Se.bidiIsolatedRanges=Vm;Se.scrollMargins=zm;Se.darkTheme=jc;Se.cspNonce=Ce.define({combine:r=>r.length?r[0]:""});Se.contentAttributes=Iu;Se.editorAttributes=Xm;Se.lineWrapping=Se.contentAttributes.of({class:"cm-lineWrapping"});Se.announce=je.define();const X$=4096,Td={};class Ea{constructor(e,t,n,s,i,o){this.from=e,this.to=t,this.dir=n,this.isolates=s,this.fresh=i,this.order=o}static update(e,t){if(t.empty&&!e.some(i=>i.fresh))return e;let n=[],s=e.length?e[e.length-1].dir:dt.LTR;for(let i=Math.max(0,e.length-10);i<e.length;i++){let o=e[i];o.dir==s&&!t.touchesRange(o.from,o.to)&&n.push(new Ea(t.mapPos(o.from,1),t.mapPos(o.to,-1),o.dir,o.isolates,!1,o.order))}return n}}function Md(r,e,t){for(let n=r.state.facet(e),s=n.length-1;s>=0;s--){let i=n[s],o=typeof i=="function"?i(r):i;o&&Zu(o,t)}return t}const I$=Te.mac?"mac":Te.windows?"win":Te.linux?"linux":"key";function V$(r,e){const t=r.split(/-(?!$)/);let n=t[t.length-1];n=="Space"&&(n=" ");let s,i,o,a;for(let l=0;l<t.length-1;++l){const c=t[l];if(/^(cmd|meta|m)$/i.test(c))a=!0;else if(/^a(lt)?$/i.test(c))s=!0;else if(/^(c|ctrl|control)$/i.test(c))i=!0;else if(/^s(hift)?$/i.test(c))o=!0;else if(/^mod$/i.test(c))e=="mac"?a=!0:i=!0;else throw new Error("Unrecognized modifier name: "+c)}return s&&(n="Alt-"+n),i&&(n="Ctrl-"+n),a&&(n="Meta-"+n),o&&(n="Shift-"+n),n}function qo(r,e,t){return e.altKey&&(r="Alt-"+r),e.ctrlKey&&(r="Ctrl-"+r),e.metaKey&&(r="Meta-"+r),t!==!1&&e.shiftKey&&(r="Shift-"+r),r}const z$=wn.default(Se.domEventHandlers({keydown(r,e){return lg(ag(e.state),r,e,"editor")}})),ko=Ce.define({enables:z$}),Ad=new WeakMap;function ag(r){let e=r.facet(ko),t=Ad.get(e);return t||Ad.set(e,t=j$(e.reduce((n,s)=>n.concat(s),[]))),t}function N$(r,e,t){return lg(ag(r.state),e,r,t)}let Rn=null;const W$=4e3;function j$(r,e=I$){let t=Object.create(null),n=Object.create(null),s=(o,a)=>{let l=n[o];if(l==null)n[o]=a;else if(l!=a)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},i=(o,a,l,c,u)=>{var h,p;let f=t[o]||(t[o]=Object.create(null)),g=a.split(/ (?!$)/).map(b=>V$(b,e));for(let b=1;b<g.length;b++){let w=g.slice(0,b).join(" ");s(w,!0),f[w]||(f[w]={preventDefault:!0,stopPropagation:!1,run:[Q=>{let P=Rn={view:Q,prefix:w,scope:o};return setTimeout(()=>{Rn==P&&(Rn=null)},W$),!0}]})}let O=g.join(" ");s(O,!1);let x=f[O]||(f[O]={preventDefault:!1,stopPropagation:!1,run:((p=(h=f._any)===null||h===void 0?void 0:h.run)===null||p===void 0?void 0:p.slice())||[]});l&&x.run.push(l),c&&(x.preventDefault=!0),u&&(x.stopPropagation=!0)};for(let o of r){let a=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let c of a){let u=t[c]||(t[c]=Object.create(null));u._any||(u._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:h}=o;for(let p in u)u[p].run.push(f=>h(f,Fc))}let l=o[e]||o.key;if(l)for(let c of a)i(c,l,o.run,o.preventDefault,o.stopPropagation),o.shift&&i(c,"Shift-"+l,o.shift,o.preventDefault,o.stopPropagation)}return t}let Fc=null;function lg(r,e,t,n){Fc=e;let s=s2(e),i=Ht(s,0),o=Gr(i)==s.length&&s!=" ",a="",l=!1,c=!1,u=!1;Rn&&Rn.view==t&&Rn.scope==n&&(a=Rn.prefix+" ",Gm.indexOf(e.keyCode)<0&&(c=!0,Rn=null));let h=new Set,p=x=>{if(x){for(let b of x.run)if(!h.has(b)&&(h.add(b),b(t)))return x.stopPropagation&&(u=!0),!0;x.preventDefault&&(x.stopPropagation&&(u=!0),c=!0)}return!1},f=r[n],g,O;return f&&(p(f[a+qo(s,e,!o)])?l=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Te.windows&&e.ctrlKey&&e.altKey)&&!(Te.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(g=Xn[e.keyCode])&&g!=s?(p(f[a+qo(g,e,!0)])||e.shiftKey&&(O=Yi[e.keyCode])!=s&&O!=g&&p(f[a+qo(O,e,!1)]))&&(l=!0):o&&e.shiftKey&&p(f[a+qo(s,e,!0)])&&(l=!0),!l&&p(f._any)&&(l=!0)),c&&(l=!0),l&&u&&e.stopPropagation(),Fc=null,l}class wo{constructor(e,t,n,s,i){this.className=e,this.left=t,this.top=n,this.width=s,this.height=i}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,n){if(n.empty){let s=e.coordsAtPos(n.head,n.assoc||1);if(!s)return[];let i=cg(e);return[new wo(t,s.left-i.left,s.top-i.top,null,s.bottom-s.top)]}else return q$(e,t,n)}}function cg(r){let e=r.scrollDOM.getBoundingClientRect();return{left:(r.textDirection==dt.LTR?e.left:e.right-r.scrollDOM.clientWidth*r.scaleX)-r.scrollDOM.scrollLeft*r.scaleX,top:e.top-r.scrollDOM.scrollTop*r.scaleY}}function _d(r,e,t,n){let s=r.coordsAtPos(e,t*2);if(!s)return n;let i=r.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,a=r.posAtCoords({x:i.left+1,y:o}),l=r.posAtCoords({x:i.right-1,y:o});return a==null||l==null?n:{from:Math.max(n.from,Math.min(a,l)),to:Math.min(n.to,Math.max(a,l))}}function q$(r,e,t){if(t.to<=r.viewport.from||t.from>=r.viewport.to)return[];let n=Math.max(t.from,r.viewport.from),s=Math.min(t.to,r.viewport.to),i=r.textDirection==dt.LTR,o=r.contentDOM,a=o.getBoundingClientRect(),l=cg(r),c=o.querySelector(".cm-line"),u=c&&window.getComputedStyle(c),h=a.left+(u?parseInt(u.paddingLeft)+Math.min(0,parseInt(u.textIndent)):0),p=a.right-(u?parseInt(u.paddingRight):0),f=zc(r,n,1),g=zc(r,s,-1),O=f.type==Xt.Text?f:null,x=g.type==Xt.Text?g:null;if(O&&(r.lineWrapping||f.widgetLineBreaks)&&(O=_d(r,n,1,O)),x&&(r.lineWrapping||g.widgetLineBreaks)&&(x=_d(r,s,-1,x)),O&&x&&O.from==x.from&&O.to==x.to)return w(Q(t.from,t.to,O));{let E=O?Q(t.from,null,O):P(f,!1),j=x?Q(null,t.to,x):P(g,!0),z=[];return(O||f).to<(x||g).from-(O&&x?1:0)||f.widgetLineBreaks>1&&E.bottom+r.defaultLineHeight/2<j.top?z.push(b(h,E.bottom,p,j.top)):E.bottom<j.top&&r.elementAtHeight((E.bottom+j.top)/2).type==Xt.Text&&(E.bottom=j.top=(E.bottom+j.top)/2),w(E).concat(z).concat(w(j))}function b(E,j,z,ae){return new wo(e,E-l.left,j-l.top,Math.max(0,z-E),ae-j)}function w({top:E,bottom:j,horizontal:z}){let ae=[];for(let ce=0;ce<z.length;ce+=2)ae.push(b(z[ce],E,z[ce+1],j));return ae}function Q(E,j,z){let ae=1e9,ce=-1e9,Oe=[];function W(F,q,N,X,I){let xe=r.coordsAtPos(F,F==z.to?-2:2),J=r.coordsAtPos(N,N==z.from?2:-2);!xe||!J||(ae=Math.min(xe.top,J.top,ae),ce=Math.max(xe.bottom,J.bottom,ce),I==dt.LTR?Oe.push(i&&q?h:xe.left,i&&X?p:J.right):Oe.push(!i&&X?h:J.left,!i&&q?p:xe.right))}let L=E??z.from,Z=j??z.to;for(let F of r.visibleRanges)if(F.to>L&&F.from<Z)for(let q=Math.max(F.from,L),N=Math.min(F.to,Z);;){let X=r.state.doc.lineAt(q);for(let I of r.bidiSpans(X)){let xe=I.from+X.from,J=I.to+X.from;if(xe>=N)break;J>q&&W(Math.max(xe,q),E==null&&xe<=L,Math.min(J,N),j==null&&J>=Z,I.dir)}if(q=X.to+1,q>=N)break}return Oe.length==0&&W(L,E==null,Z,j==null,r.textDirection),{top:ae,bottom:ce,horizontal:Oe}}function P(E,j){let z=a.top+(j?E.top:E.bottom);return{top:z,bottom:z,horizontal:[]}}}function Y$(r,e){return r.constructor==e.constructor&&r.eq(e)}class F${constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(pa)!=e.state.facet(pa)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,n=e.facet(pa);for(;t<n.length&&n[t]!=this.layer;)t++;this.dom.style.zIndex=String((this.layer.above?150:-1)-t)}measure(){return this.layer.markers(this.view)}scale(){let{scaleX:e,scaleY:t}=this.view;(e!=this.scaleX||t!=this.scaleY)&&(this.scaleX=e,this.scaleY=t,this.dom.style.transform=`scale(${1/e}, ${1/t})`)}draw(e){if(e.length!=this.drawn.length||e.some((t,n)=>!Y$(t,this.drawn[n]))){let t=this.dom.firstChild,n=0;for(let s of e)s.update&&t&&s.constructor&&this.drawn[n].constructor&&s.update(t,this.drawn[n])?(t=t.nextSibling,n++):this.dom.insertBefore(s.draw(),t);for(;t;){let s=t.nextSibling;t.remove(),t=s}this.drawn=e,Te.safari&&Te.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const pa=Ce.define();function ug(r){return[bt.define(e=>new F$(e,r)),pa.of(r)]}const Hi=Ce.define({combine(r){return sn(r,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function U$(r={}){return[Hi.of(r),G$,H$,K$,Em.of(!0)]}function hg(r){return r.startState.facet(Hi)!=r.state.facet(Hi)}const G$=ug({above:!0,markers(r){let{state:e}=r,t=e.facet(Hi),n=[];for(let s of e.selection.ranges){let i=s==e.selection.main;if(s.empty||t.drawRangeCursor){let o=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",a=s.empty?s:re.cursor(s.head,s.head>s.anchor?-1:1);for(let l of wo.forRange(r,o,a))n.push(l)}}return n},update(r,e){r.transactions.some(n=>n.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=hg(r);return t&&Rd(r.state,e),r.docChanged||r.selectionSet||t},mount(r,e){Rd(e.state,r)},class:"cm-cursorLayer"});function Rd(r,e){e.style.animationDuration=r.facet(Hi).cursorBlinkRate+"ms"}const H$=ug({above:!1,markers(r){return r.state.selection.ranges.map(e=>e.empty?[]:wo.forRange(r,"cm-selectionBackground",e)).reduce((e,t)=>e.concat(t))},update(r,e){return r.docChanged||r.selectionSet||r.viewportChanged||hg(r)},class:"cm-selectionLayer"}),K$=wn.highest(Se.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),dg=je.define({map(r,e){return r==null?null:e.mapPos(r)}}),Zi=_t.define({create(){return null},update(r,e){return r!=null&&(r=e.changes.mapPos(r)),e.effects.reduce((t,n)=>n.is(dg)?n.value:t,r)}}),J$=bt.fromClass(class{constructor(r){this.view=r,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(r){var e;let t=r.state.field(Zi);t==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(r.startState.field(Zi)!=t||r.docChanged||r.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:r}=this,e=r.state.field(Zi),t=e!=null&&r.coordsAtPos(e);if(!t)return null;let n=r.scrollDOM.getBoundingClientRect();return{left:t.left-n.left+r.scrollDOM.scrollLeft*r.scaleX,top:t.top-n.top+r.scrollDOM.scrollTop*r.scaleY,height:t.bottom-t.top}}drawCursor(r){if(this.cursor){let{scaleX:e,scaleY:t}=this.view;r?(this.cursor.style.left=r.left/e+"px",this.cursor.style.top=r.top/t+"px",this.cursor.style.height=r.height/t+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(r){this.view.state.field(Zi)!=r&&this.view.dispatch({effects:dg.of(r)})}},{eventObservers:{dragover(r){this.setDropPos(this.view.posAtCoords({x:r.clientX,y:r.clientY}))},dragleave(r){(r.target==this.view.contentDOM||!this.view.contentDOM.contains(r.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function e5(){return[Zi,J$]}function Bd(r,e,t,n,s){e.lastIndex=0;for(let i=r.iterRange(t,n),o=t,a;!i.next().done;o+=i.value.length)if(!i.lineBreak)for(;a=e.exec(i.value);)s(o+a.index,a)}function t5(r,e){let t=r.visibleRanges;if(t.length==1&&t[0].from==r.viewport.from&&t[0].to==r.viewport.to)return t;let n=[];for(let{from:s,to:i}of t)s=Math.max(r.state.doc.lineAt(s).from,s-e),i=Math.min(r.state.doc.lineAt(i).to,i+e),n.length&&n[n.length-1].to>=s?n[n.length-1].to=i:n.push({from:s,to:i});return n}class r5{constructor(e){const{regexp:t,decoration:n,decorate:s,boundary:i,maxLength:o=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,s)this.addMatch=(a,l,c,u)=>s(u,c,c+a[0].length,a,l);else if(typeof n=="function")this.addMatch=(a,l,c,u)=>{let h=n(a,l,c);h&&u(c,c+a[0].length,h)};else if(n)this.addMatch=(a,l,c,u)=>u(c,c+a[0].length,n);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=i,this.maxLength=o}createDeco(e){let t=new xn,n=t.add.bind(t);for(let{from:s,to:i}of t5(e,this.maxLength))Bd(e.state.doc,this.regexp,s,i,(o,a)=>this.addMatch(a,e,o,n));return t.finish()}updateDeco(e,t){let n=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((i,o,a,l)=>{l>=e.view.viewport.from&&a<=e.view.viewport.to&&(n=Math.min(a,n),s=Math.max(l,s))}),e.viewportMoved||s-n>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,t.map(e.changes),n,s):t}updateRange(e,t,n,s){for(let i of e.visibleRanges){let o=Math.max(i.from,n),a=Math.min(i.to,s);if(a>=o){let l=e.state.doc.lineAt(o),c=l.to<a?e.state.doc.lineAt(a):l,u=Math.max(i.from,l.from),h=Math.min(i.to,c.to);if(this.boundary){for(;o>l.from;o--)if(this.boundary.test(l.text[o-1-l.from])){u=o;break}for(;a<c.to;a++)if(this.boundary.test(c.text[a-c.from])){h=a;break}}let p=[],f,g=(O,x,b)=>p.push(b.range(O,x));if(l==c)for(this.regexp.lastIndex=u-l.from;(f=this.regexp.exec(l.text))&&f.index<h-l.from;)this.addMatch(f,e,f.index+l.from,g);else Bd(e.state.doc,this.regexp,u,h,(O,x)=>this.addMatch(x,e,O,g));t=t.update({filterFrom:u,filterTo:h,filter:(O,x)=>O<u||x>h,add:p})}}return t}}const Uc=/x/.unicode!=null?"gu":"g",n5=new RegExp(`[\0-\b
|
|
21
|
+
--\u2028\u2029\uFEFF-]`,Uc),s5={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let El=null;function i5(){var r;if(El==null&&typeof document<"u"&&document.body){let e=document.body.style;El=((r=e.tabSize)!==null&&r!==void 0?r:e.MozTabSize)!=null}return El||!1}const ma=Ce.define({combine(r){let e=sn(r,{render:null,specialChars:n5,addSpecialChars:null});return(e.replaceTabs=!i5())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Uc)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Uc)),e}});function o5(r={}){return[ma.of(r),a5()]}let Zd=null;function a5(){return Zd||(Zd=bt.fromClass(class{constructor(r){this.view=r,this.decorations=Le.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(r.state.facet(ma)),this.decorations=this.decorator.createDeco(r)}makeDecorator(r){return new r5({regexp:r.specialChars,decoration:(e,t,n)=>{let{doc:s}=t.state,i=Ht(e[0],0);if(i==9){let o=s.lineAt(n),a=t.state.tabSize,l=Rr(o.text,a,n-o.from);return Le.replace({widget:new h5((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=Le.replace({widget:new u5(r,i)}))},boundary:r.replaceTabs?void 0:/[^]/})}update(r){let e=r.state.facet(ma);r.startState.facet(ma)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(r.view)):this.decorations=this.decorator.updateDeco(r,this.decorations)}},{decorations:r=>r.decorations}))}const l5="•";function c5(r){return r>=32?l5:r==10?"":String.fromCharCode(9216+r)}class u5 extends on{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=c5(this.code),n=e.state.phrase("Control character")+" "+(s5[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,n,t);if(s)return s;let i=document.createElement("span");return i.textContent=t,i.title=n,i.setAttribute("aria-label",n),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class h5 extends on{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function d5(){return p5}const f5=Le.line({class:"cm-activeLine"}),p5=bt.fromClass(class{constructor(r){this.decorations=this.getDeco(r)}update(r){(r.docChanged||r.selectionSet)&&(this.decorations=this.getDeco(r.view))}getDeco(r){let e=-1,t=[];for(let n of r.state.selection.ranges){let s=r.lineBlockAt(n.head);s.from>e&&(t.push(f5.range(s.from)),e=s.from)}return Le.set(t)}},{decorations:r=>r.decorations}),Gc=2e3;function m5(r,e,t){let n=Math.min(e.line,t.line),s=Math.max(e.line,t.line),i=[];if(e.off>Gc||t.off>Gc||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=n;l<=s;l++){let c=r.doc.line(l);c.length<=a&&i.push(re.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=n;l<=s;l++){let c=r.doc.line(l),u=Tc(c.text,o,r.tabSize,!0);if(u<0)i.push(re.cursor(c.to));else{let h=Tc(c.text,a,r.tabSize);i.push(re.range(c.from+u,c.from+h))}}}return i}function g5(r,e){let t=r.coordsAtPos(r.viewport.from);return t?Math.round(Math.abs((t.left-e)/r.defaultCharacterWidth)):-1}function Ed(r,e){let t=r.posAtCoords({x:e.clientX,y:e.clientY},!1),n=r.state.doc.lineAt(t),s=t-n.from,i=s>Gc?-1:s==n.length?g5(r,e.clientX):Rr(n.text,r.state.tabSize,t-n.from);return{line:n.number,col:i,off:s}}function O5(r,e){let t=Ed(r,e),n=r.state.selection;return t?{update(s){if(s.docChanged){let i=s.changes.mapPos(s.startState.doc.line(t.line).from),o=s.state.doc.lineAt(i);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},n=n.map(s.changes)}},get(s,i,o){let a=Ed(r,s);if(!a)return n;let l=m5(r.state,t,a);return l.length?o?re.create(l.concat(n.ranges)):re.create(l):n}}:null}function v5(r){let e=(t=>t.altKey&&t.button==0);return Se.mouseSelectionStyle.of((t,n)=>e(n)?O5(t,n):null)}const b5={Alt:[18,r=>!!r.altKey],Control:[17,r=>!!r.ctrlKey],Shift:[16,r=>!!r.shiftKey],Meta:[91,r=>!!r.metaKey]},x5={style:"cursor: crosshair"};function y5(r={}){let[e,t]=b5[r.key||"Alt"],n=bt.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||t(s))},keyup(s){(s.keyCode==e||!t(s))&&this.set(!1)},mousemove(s){this.set(t(s))}}});return[n,Se.contentAttributes.of(s=>{var i;return!((i=s.plugin(n))===null||i===void 0)&&i.isDown?x5:null})]}const Yo="-10000px";class fg{constructor(e,t,n,s){this.facet=t,this.createTooltipView=n,this.removeTooltipView=s,this.input=e.state.facet(t),this.tooltips=this.input.filter(o=>o);let i=null;this.tooltipViews=this.tooltips.map(o=>i=n(o,i))}update(e,t){var n;let s=e.state.facet(this.facet),i=s.filter(l=>l);if(s===this.input){for(let l of this.tooltipViews)l.update&&l.update(e);return!1}let o=[],a=t?[]:null;for(let l=0;l<i.length;l++){let c=i[l],u=-1;if(c){for(let h=0;h<this.tooltips.length;h++){let p=this.tooltips[h];p&&p.create==c.create&&(u=h)}if(u<0)o[l]=this.createTooltipView(c,l?o[l-1]:null),a&&(a[l]=!!c.above);else{let h=o[l]=this.tooltipViews[u];a&&(a[l]=t[u]),h.update&&h.update(e)}}}for(let l of this.tooltipViews)o.indexOf(l)<0&&(this.removeTooltipView(l),(n=l.destroy)===null||n===void 0||n.call(l));return t&&(a.forEach((l,c)=>t[c]=l),t.length=a.length),this.input=s,this.tooltips=i,this.tooltipViews=o,!0}}function k5(r){let e=r.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const Dl=Ce.define({combine:r=>{var e,t,n;return{position:Te.ios?"absolute":((e=r.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=r.find(s=>s.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((n=r.find(s=>s.tooltipSpace))===null||n===void 0?void 0:n.tooltipSpace)||k5}}}),Dd=new WeakMap,qu=bt.fromClass(class{constructor(r){this.view=r,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=r.state.facet(Dl);this.position=e.position,this.parent=e.parent,this.classes=r.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new fg(r,Yu,(t,n)=>this.createTooltip(t,n),t=>{this.resizeObserver&&this.resizeObserver.unobserve(t.dom),t.dom.remove()}),this.above=this.manager.tooltips.map(t=>!!t.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),r.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let r of this.manager.tooltipViews)this.intersectionObserver.observe(r.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(r){r.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(r,this.above);e&&this.observeIntersection();let t=e||r.geometryChanged,n=r.state.facet(Dl);if(n.position!=this.position&&!this.madeAbsolute){this.position=n.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;t=!0}if(n.parent!=this.parent){this.parent&&this.container.remove(),this.parent=n.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(r,e){let t=r.create(this.view),n=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),r.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",t.dom.appendChild(s)}return t.dom.style.position=this.position,t.dom.style.top=Yo,t.dom.style.left="0px",this.container.insertBefore(t.dom,n),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var r,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let n of this.manager.tooltipViews)n.dom.remove(),(r=n.destroy)===null||r===void 0||r.call(n);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.intersectionObserver)===null||t===void 0||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let r=1,e=1,t=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:i}=this.manager.tooltipViews[0];if(Te.safari){let o=i.getBoundingClientRect();t=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else t=!!i.offsetParent&&i.offsetParent!=this.container.ownerDocument.body}if(t||this.position=="absolute")if(this.parent){let i=this.parent.getBoundingClientRect();i.width&&i.height&&(r=i.width/this.parent.offsetWidth,e=i.height/this.parent.offsetHeight)}else({scaleX:r,scaleY:e}=this.view.viewState);let n=this.view.scrollDOM.getBoundingClientRect(),s=zu(this.view);return{visible:{left:n.left+s.left,top:n.top+s.top,right:n.right-s.right,bottom:n.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((i,o)=>{let a=this.manager.tooltipViews[o];return a.getCoords?a.getCoords(i.pos):this.view.coordsAtPos(i.pos)}),size:this.manager.tooltipViews.map(({dom:i})=>i.getBoundingClientRect()),space:this.view.state.facet(Dl).tooltipSpace(this.view),scaleX:r,scaleY:e,makeAbsolute:t}}writeMeasure(r){var e;if(r.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let a of this.manager.tooltipViews)a.dom.style.position="absolute"}let{visible:t,space:n,scaleX:s,scaleY:i}=r,o=[];for(let a=0;a<this.manager.tooltips.length;a++){let l=this.manager.tooltips[a],c=this.manager.tooltipViews[a],{dom:u}=c,h=r.pos[a],p=r.size[a];if(!h||l.clip!==!1&&(h.bottom<=Math.max(t.top,n.top)||h.top>=Math.min(t.bottom,n.bottom)||h.right<Math.max(t.left,n.left)-.1||h.left>Math.min(t.right,n.right)+.1)){u.style.top=Yo;continue}let f=l.arrow?c.dom.querySelector(".cm-tooltip-arrow"):null,g=f?7:0,O=p.right-p.left,x=(e=Dd.get(c))!==null&&e!==void 0?e:p.bottom-p.top,b=c.offset||S5,w=this.view.textDirection==dt.LTR,Q=p.width>n.right-n.left?w?n.left:n.right-p.width:w?Math.max(n.left,Math.min(h.left-(f?14:0)+b.x,n.right-O)):Math.min(Math.max(n.left,h.left-O+(f?14:0)-b.x),n.right-O),P=this.above[a];!l.strictSide&&(P?h.top-x-g-b.y<n.top:h.bottom+x+g+b.y>n.bottom)&&P==n.bottom-h.bottom>h.top-n.top&&(P=this.above[a]=!P);let E=(P?h.top-n.top:n.bottom-h.bottom)-g;if(E<x&&c.resize!==!1){if(E<this.view.defaultLineHeight){u.style.top=Yo;continue}Dd.set(c,x),u.style.height=(x=E)/i+"px"}else u.style.height&&(u.style.height="");let j=P?h.top-x-g-b.y:h.bottom+g+b.y,z=Q+O;if(c.overlap!==!0)for(let ae of o)ae.left<z&&ae.right>Q&&ae.top<j+x&&ae.bottom>j&&(j=P?ae.top-x-2-g:ae.bottom+g+2);if(this.position=="absolute"?(u.style.top=(j-r.parent.top)/i+"px",Ld(u,(Q-r.parent.left)/s)):(u.style.top=j/i+"px",Ld(u,Q/s)),f){let ae=h.left+(w?b.x:-b.x)-(Q+14-7);f.style.left=ae/s+"px"}c.overlap!==!0&&o.push({left:Q,top:j,right:z,bottom:j+x}),u.classList.toggle("cm-tooltip-above",P),u.classList.toggle("cm-tooltip-below",!P),c.positioned&&c.positioned(r.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let r of this.manager.tooltipViews)r.dom.style.top=Yo}},{eventObservers:{scroll(){this.maybeMeasure()}}});function Ld(r,e){let t=parseInt(r.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(r.style.left=e+"px")}const w5=Se.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),S5={x:0,y:0},Yu=Ce.define({enables:[qu,w5]}),Da=Ce.define({combine:r=>r.reduce((e,t)=>e.concat(t),[])});class ml{static create(e){return new ml(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new fg(e,Da,(t,n)=>this.createHostedView(t,n),t=>t.dom.remove())}createHostedView(e,t){let n=e.create(this.view);return n.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(n.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&n.mount&&n.mount(this.view),n}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(let t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let t of this.manager.tooltipViews)(e=t.destroy)===null||e===void 0||e.call(t)}passProp(e){let t;for(let n of this.manager.tooltipViews){let s=n[e];if(s!==void 0){if(t===void 0)t=s;else if(t!==s)return}}return t}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const $5=Yu.compute([Da],r=>{let e=r.facet(Da);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var n;return(n=t.end)!==null&&n!==void 0?n:t.pos})),create:ml.create,above:e[0].above,arrow:e.some(t=>t.arrow)}});class C5{constructor(e,t,n,s,i){this.view=e,this.source=t,this.field=n,this.setHover=s,this.hoverTime=i,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;e<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-e):this.startHover()}startHover(){clearTimeout(this.restartTimeout);let{view:e,lastMove:t}=this,n=e.docView.tile.nearest(t.target);if(!n)return;let s,i=1;if(n.isWidget())s=n.posAtStart;else{if(s=e.posAtCoords(t),s==null)return;let a=e.coordsAtPos(s);if(!a||t.y<a.top||t.y>a.bottom||t.x<a.left-e.defaultCharacterWidth||t.x>a.right+e.defaultCharacterWidth)return;let l=e.bidiSpans(e.state.doc.lineAt(s)).find(u=>u.from<=s&&u.to>=s),c=l&&l.dir==dt.RTL?-1:1;i=t.x<a.left?-c:c}let o=this.source(e,s,i);if(o?.then){let a=this.pending={pos:s};o.then(l=>{this.pending==a&&(this.pending=null,l&&!(Array.isArray(l)&&!l.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(l)?l:[l])}))},l=>tr(e.state,l,"hover tooltip"))}else o&&!(Array.isArray(o)&&!o.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(o)?o:[o])})}get tooltip(){let e=this.view.plugin(qu),t=e?e.manager.tooltips.findIndex(n=>n.create==ml.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,n;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:i}=this;if(s.length&&i&&!Q5(i.dom,e)||this.pending){let{pos:o}=s[0]||this.pending,a=(n=(t=s[0])===null||t===void 0?void 0:t.end)!==null&&n!==void 0?n:o;(o==a?this.view.posAtCoords(this.lastMove)!=o:!P5(this.view,o,a,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:t}=this;if(t.length){let{tooltip:n}=this;n&&n.dom.contains(e.relatedTarget)?this.watchTooltipLeave(n.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=n=>{e.removeEventListener("mouseleave",t),this.active.length&&!this.view.dom.contains(n.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",t)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const Fo=4;function Q5(r,e){let{left:t,right:n,top:s,bottom:i}=r.getBoundingClientRect(),o;if(o=r.querySelector(".cm-tooltip-arrow")){let a=o.getBoundingClientRect();s=Math.min(a.top,s),i=Math.max(a.bottom,i)}return e.clientX>=t-Fo&&e.clientX<=n+Fo&&e.clientY>=s-Fo&&e.clientY<=i+Fo}function P5(r,e,t,n,s,i){let o=r.scrollDOM.getBoundingClientRect(),a=r.documentTop+r.documentPadding.top+r.contentHeight;if(o.left>n||o.right<n||o.top>s||Math.min(o.bottom,a)<s)return!1;let l=r.posAtCoords({x:n,y:s},!1);return l>=e&&l<=t}function T5(r,e={}){let t=je.define(),n=_t.define({create(){return[]},update(s,i){if(s.length&&(e.hideOnChange&&(i.docChanged||i.selection)?s=[]:e.hideOn&&(s=s.filter(o=>!e.hideOn(i,o))),i.docChanged)){let o=[];for(let a of s){let l=i.changes.mapPos(a.pos,-1,Dt.TrackDel);if(l!=null){let c=Object.assign(Object.create(null),a);c.pos=l,c.end!=null&&(c.end=i.changes.mapPos(c.end)),o.push(c)}}s=o}for(let o of i.effects)o.is(t)&&(s=o.value),o.is(M5)&&(s=[]);return s},provide:s=>Da.from(s)});return{active:n,extension:[n,bt.define(s=>new C5(s,r,n,t,e.hoverTime||300)),$5]}}function pg(r,e){let t=r.plugin(qu);if(!t)return null;let n=t.manager.tooltips.indexOf(e);return n<0?null:t.manager.tooltipViews[n]}const M5=je.define(),Xd=Ce.define({combine(r){let e,t;for(let n of r)e=e||n.topContainer,t=t||n.bottomContainer;return{topContainer:e,bottomContainer:t}}});function Fu(r,e){let t=r.plugin(mg),n=t?t.specs.indexOf(e):-1;return n>-1?t.panels[n]:null}const mg=bt.fromClass(class{constructor(r){this.input=r.state.facet(Ki),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(r));let e=r.state.facet(Xd);this.top=new Uo(r,!0,e.topContainer),this.bottom=new Uo(r,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(r){let e=r.state.facet(Xd);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Uo(r.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Uo(r.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=r.state.facet(Ki);if(t!=this.input){let n=t.filter(l=>l),s=[],i=[],o=[],a=[];for(let l of n){let c=this.specs.indexOf(l),u;c<0?(u=l(r.view),a.push(u)):(u=this.panels[c],u.update&&u.update(r)),s.push(u),(u.top?i:o).push(u)}this.specs=n,this.panels=s,this.top.sync(i),this.bottom.sync(o);for(let l of a)l.dom.classList.add("cm-panel"),l.mount&&l.mount()}else for(let n of this.panels)n.update&&n.update(r)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:r=>Se.scrollMargins.of(e=>{let t=e.plugin(r);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})});class Uo{constructor(e,t,n){this.view=e,this.top=t,this.container=n,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=Id(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=Id(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function Id(r){let e=r.nextSibling;return r.remove(),e}const Ki=Ce.define({enables:mg});function A5(r,e){let t,n=new Promise(o=>t=o),s=o=>_5(o,e,t);r.state.field(Ll,!1)?r.dispatch({effects:gg.of(s)}):r.dispatch({effects:je.appendConfig.of(Ll.init(()=>[s]))});let i=Og.of(s);return{close:i,result:n.then(o=>((r.win.queueMicrotask||(l=>r.win.setTimeout(l,10)))(()=>{r.state.field(Ll).indexOf(s)>-1&&r.dispatch({effects:i})}),o))}}const Ll=_t.define({create(){return[]},update(r,e){for(let t of e.effects)t.is(gg)?r=[t.value].concat(r):t.is(Og)&&(r=r.filter(n=>n!=t.value));return r},provide:r=>Ki.computeN([r],e=>e.field(r))}),gg=je.define(),Og=je.define();function _5(r,e,t){let n=e.content?e.content(r,()=>o(null)):null;if(!n){if(n=ct("form"),e.input){let a=ct("input",e.input);/^(text|password|number|email|tel|url)$/.test(a.type)&&a.classList.add("cm-textfield"),a.name||(a.name="input"),n.appendChild(ct("label",(e.label||"")+": ",a))}else n.appendChild(document.createTextNode(e.label||""));n.appendChild(document.createTextNode(" ")),n.appendChild(ct("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let s=n.nodeName=="FORM"?[n]:n.querySelectorAll("form");for(let a=0;a<s.length;a++){let l=s[a];l.addEventListener("keydown",c=>{c.keyCode==27?(c.preventDefault(),o(null)):c.keyCode==13&&(c.preventDefault(),o(l))}),l.addEventListener("submit",c=>{c.preventDefault(),o(l)})}let i=ct("div",n,ct("button",{onclick:()=>o(null),"aria-label":r.state.phrase("close"),class:"cm-dialog-close",type:"button"},["×"]));e.class&&(i.className=e.class),i.classList.add("cm-dialog");function o(a){i.contains(i.ownerDocument.activeElement)&&r.focus(),t(a)}return{dom:i,top:e.top,mount:()=>{if(e.focus){let a;typeof e.focus=="string"?a=n.querySelector(e.focus):a=n.querySelector("input")||n.querySelector("button"),a&&"select"in a?a.select():a&&"focus"in a&&a.focus()}}}}class kn extends Dn{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}kn.prototype.elementClass="";kn.prototype.toDOM=void 0;kn.prototype.mapMode=Dt.TrackBefore;kn.prototype.startSide=kn.prototype.endSide=-1;kn.prototype.point=!0;const ga=Ce.define(),R5=Ce.define(),B5={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>et.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},zi=Ce.define();function Z5(r){return[vg(),zi.of({...B5,...r})]}const Vd=Ce.define({combine:r=>r.some(e=>e)});function vg(r){return[E5]}const E5=bt.fromClass(class{constructor(r){this.view=r,this.domAfter=null,this.prevViewport=r.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=r.state.facet(zi).map(e=>new Nd(r,e)),this.fixed=!r.state.facet(Vd);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),r.scrollDOM.insertBefore(this.dom,r.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(r){if(this.updateGutters(r)){let e=this.prevViewport,t=r.view.viewport,n=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(n<(t.to-t.from)*.8)}if(r.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(Vd)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=r.view.viewport}syncGutters(r){let e=this.dom.nextSibling;r&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=et.iter(this.view.state.facet(ga),this.view.viewport.from),n=[],s=this.gutters.map(i=>new D5(i,this.view.viewport,-this.view.documentPadding.top));for(let i of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(i.type)){let o=!0;for(let a of i.type)if(a.type==Xt.Text&&o){Hc(t,n,a.from);for(let l of s)l.line(this.view,a,n);o=!1}else if(a.widget)for(let l of s)l.widget(this.view,a)}else if(i.type==Xt.Text){Hc(t,n,i.from);for(let o of s)o.line(this.view,i,n)}else if(i.widget)for(let o of s)o.widget(this.view,i);for(let i of s)i.finish();r&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(r){let e=r.startState.facet(zi),t=r.state.facet(zi),n=r.docChanged||r.heightChanged||r.viewportChanged||!et.eq(r.startState.facet(ga),r.state.facet(ga),r.view.viewport.from,r.view.viewport.to);if(e==t)for(let s of this.gutters)s.update(r)&&(n=!0);else{n=!0;let s=[];for(let i of t){let o=e.indexOf(i);o<0?s.push(new Nd(this.view,i)):(this.gutters[o].update(r),s.push(this.gutters[o]))}for(let i of this.gutters)i.dom.remove(),s.indexOf(i)<0&&i.destroy();for(let i of s)i.config.side=="after"?this.getDOMAfter().appendChild(i.dom):this.dom.appendChild(i.dom);this.gutters=s}return n}destroy(){for(let r of this.gutters)r.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:r=>Se.scrollMargins.of(e=>{let t=e.plugin(r);if(!t||t.gutters.length==0||!t.fixed)return null;let n=t.dom.offsetWidth*e.scaleX,s=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==dt.LTR?{left:n,right:s}:{right:n,left:s}})});function zd(r){return Array.isArray(r)?r:[r]}function Hc(r,e,t){for(;r.value&&r.from<=t;)r.from==t&&e.push(r.value),r.next()}class D5{constructor(e,t,n){this.gutter=e,this.height=n,this.i=0,this.cursor=et.iter(e.markers,t.from)}addElement(e,t,n){let{gutter:s}=this,i=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==s.elements.length){let a=new bg(e,o,i,n);s.elements.push(a),s.dom.appendChild(a.dom)}else s.elements[this.i].update(e,o,i,n);this.height=t.bottom,this.i++}line(e,t,n){let s=[];Hc(this.cursor,s,t.from),n.length&&(s=s.concat(n));let i=this.gutter.config.lineMarker(e,t,s);i&&s.unshift(i);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,s)}widget(e,t){let n=this.gutter.config.widgetMarker(e,t.widget,t),s=n?[n]:null;for(let i of e.state.facet(R5)){let o=i(e,t.widget,t);o&&(s||(s=[])).push(o)}s&&this.addElement(e,t,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}}class Nd{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let n in t.domEventHandlers)this.dom.addEventListener(n,s=>{let i=s.target,o;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let l=i.getBoundingClientRect();o=(l.top+l.bottom)/2}else o=s.clientY;let a=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[n](e,a,s)&&s.preventDefault()});this.markers=zd(t.markers(e)),t.initialSpacer&&(this.spacer=new bg(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=zd(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let n=e.view.viewport;return!et.eq(this.markers,t,n.from,n.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class bg{constructor(e,t,n,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,n,s)}update(e,t,n,s){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=n&&(this.dom.style.marginTop=(this.above=n)?n+"px":""),L5(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,t){let n="cm-gutterElement",s=this.dom.firstChild;for(let i=0,o=0;;){let a=o,l=i<t.length?t[i++]:null,c=!1;if(l){let u=l.elementClass;u&&(n+=" "+u);for(let h=o;h<this.markers.length;h++)if(this.markers[h].compare(l)){a=h,c=!0;break}}else a=this.markers.length;for(;o<a;){let u=this.markers[o++];if(u.toDOM){u.destroy(s);let h=s.nextSibling;s.remove(),s=h}}if(!l)break;l.toDOM&&(c?s=s.nextSibling:this.dom.insertBefore(l.toDOM(e),s)),c&&o++}this.dom.className=n,this.markers=t}destroy(){this.setMarkers(null,[])}}function L5(r,e){if(r.length!=e.length)return!1;for(let t=0;t<r.length;t++)if(!r[t].compare(e[t]))return!1;return!0}const X5=Ce.define(),I5=Ce.define(),Ts=Ce.define({combine(r){return sn(r,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){let n=Object.assign({},e);for(let s in t){let i=n[s],o=t[s];n[s]=i?(a,l,c)=>i(a,l,c)||o(a,l,c):o}return n}})}});class Xl extends kn{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function Il(r,e){return r.state.facet(Ts).formatNumber(e,r.state)}const V5=zi.compute([Ts],r=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(X5)},lineMarker(e,t,n){return n.some(s=>s.toDOM)?null:new Xl(Il(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,n)=>{for(let s of e.state.facet(I5)){let i=s(e,t,n);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Ts)!=e.state.facet(Ts),initialSpacer(e){return new Xl(Il(e,Wd(e.state.doc.lines)))},updateSpacer(e,t){let n=Il(t.view,Wd(t.view.state.doc.lines));return n==e.number?e:new Xl(n)},domEventHandlers:r.facet(Ts).domEventHandlers,side:"before"}));function z5(r={}){return[Ts.of(r),vg(),V5]}function Wd(r){let e=9;for(;e<r;)e=e*10+9;return e}const N5=new class extends kn{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},W5=ga.compute(["selection"],r=>{let e=[],t=-1;for(let n of r.selection.ranges){let s=r.doc.lineAt(n.head).from;s>t&&(t=s,e.push(N5.range(s)))}return et.of(e)});function j5(){return W5}const xg=1024;let q5=0;class xr{constructor(e,t){this.from=e,this.to=t}}class Ye{constructor(e={}){this.id=q5++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=Pt.match(e)),t=>{let n=e(t);return n===void 0?null:[this,n]}}}Ye.closedBy=new Ye({deserialize:r=>r.split(" ")});Ye.openedBy=new Ye({deserialize:r=>r.split(" ")});Ye.group=new Ye({deserialize:r=>r.split(" ")});Ye.isolate=new Ye({deserialize:r=>{if(r&&r!="rtl"&&r!="ltr"&&r!="auto")throw new RangeError("Invalid value for isolate: "+r);return r||"auto"}});Ye.contextHash=new Ye({perNode:!0});Ye.lookAhead=new Ye({perNode:!0});Ye.mounted=new Ye({perNode:!0});class Zs{constructor(e,t,n,s=!1){this.tree=e,this.overlay=t,this.parser=n,this.bracketed=s}static get(e){return e&&e.props&&e.props[Ye.mounted.id]}}const Y5=Object.create(null);class Pt{constructor(e,t,n,s=0){this.name=e,this.props=t,this.id=n,this.flags=s}static define(e){let t=e.props&&e.props.length?Object.create(null):Y5,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new Pt(e.name||"",t,e.id,n);if(e.props){for(let i of e.props)if(Array.isArray(i)||(i=i(s)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[i[0].id]=i[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(Ye.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let n in e)for(let s of n.split(" "))t[s]=e[n];return n=>{for(let s=n.prop(Ye.group),i=-1;i<(s?s.length:0);i++){let o=t[i<0?n.name:s[i]];if(o)return o}}}}Pt.none=new Pt("",Object.create(null),0,8);class So{constructor(e){this.types=e;for(let t=0;t<e.length;t++)if(e[t].id!=t)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...e){let t=[];for(let n of this.types){let s=null;for(let i of e){let o=i(n);if(o){s||(s=Object.assign({},n.props));let a=o[1],l=o[0];l.combine&&l.id in s&&(a=l.combine(s[l.id],a)),s[l.id]=a}}t.push(s?new Pt(n.name,s,n.id,n.flags):n)}return new So(t)}}const Go=new WeakMap,jd=new WeakMap;var at;(function(r){r[r.ExcludeBuffers=1]="ExcludeBuffers",r[r.IncludeAnonymous=2]="IncludeAnonymous",r[r.IgnoreMounts=4]="IgnoreMounts",r[r.IgnoreOverlays=8]="IgnoreOverlays",r[r.EnterBracketed=16]="EnterBracketed"})(at||(at={}));class ot{constructor(e,t,n,s,i){if(this.type=e,this.children=t,this.positions=n,this.length=s,this.props=null,i&&i.length){this.props=Object.create(null);for(let[o,a]of i)this.props[typeof o=="number"?o:o.id]=a}}toString(){let e=Zs.get(this);if(e&&!e.overlay)return e.tree.toString();let t="";for(let n of this.children){let s=n.toString();s&&(t&&(t+=","),t+=s)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(t.length?"("+t+")":""):t}cursor(e=0){return new La(this.topNode,e)}cursorAt(e,t=0,n=0){let s=Go.get(this)||this.topNode,i=new La(s);return i.moveTo(e,t),Go.set(this,i._tree),i}get topNode(){return new Wt(this,0,0,null)}resolve(e,t=0){let n=Ji(Go.get(this)||this.topNode,e,t,!1);return Go.set(this,n),n}resolveInner(e,t=0){let n=Ji(jd.get(this)||this.topNode,e,t,!0);return jd.set(this,n),n}resolveStack(e,t=0){return G5(this,e,t)}iterate(e){let{enter:t,leave:n,from:s=0,to:i=this.length}=e,o=e.mode||0,a=(o&at.IncludeAnonymous)>0;for(let l=this.cursor(o|at.IncludeAnonymous);;){let c=!1;if(l.from<=i&&l.to>=s&&(!a&&l.type.isAnonymous||t(l)!==!1)){if(l.firstChild())continue;c=!0}for(;c&&n&&(a||!l.type.isAnonymous)&&n(l),!l.nextSibling();){if(!l.parent())return;c=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Hu(Pt.none,this.children,this.positions,0,this.children.length,0,this.length,(t,n,s)=>new ot(this.type,t,n,s,this.propValues),e.makeTree||((t,n,s)=>new ot(Pt.none,t,n,s)))}static build(e){return H5(e)}}ot.empty=new ot(Pt.none,[],[],0);class Uu{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Uu(this.buffer,this.index)}}class Vn{constructor(e,t,n){this.buffer=e,this.length=t,this.set=n}get type(){return Pt.none}toString(){let e=[];for(let t=0;t<this.buffer.length;)e.push(this.childString(t)),t=this.buffer[t+3];return e.join(",")}childString(e){let t=this.buffer[e],n=this.buffer[e+3],s=this.set.types[t],i=s.name;if(/\W/.test(i)&&!s.isError&&(i=JSON.stringify(i)),e+=4,n==e)return i;let o=[];for(;e<n;)o.push(this.childString(e)),e=this.buffer[e+3];return i+"("+o.join(",")+")"}findChild(e,t,n,s,i){let{buffer:o}=this,a=-1;for(let l=e;l!=t&&!(yg(i,s,o[l+1],o[l+2])&&(a=l,n>0));l=o[l+3]);return a}slice(e,t,n){let s=this.buffer,i=new Uint16Array(t-e),o=0;for(let a=e,l=0;a<t;){i[l++]=s[a++],i[l++]=s[a++]-n;let c=i[l++]=s[a++]-n;i[l++]=s[a++]-e,o=Math.max(o,c)}return new Vn(i,o,this.set)}}function yg(r,e,t,n){switch(r){case-2:return t<e;case-1:return n>=e&&t<e;case 0:return t<e&&n>e;case 1:return t<=e&&n>e;case 2:return n>e;case 4:return!0}}function Ji(r,e,t,n){for(var s;r.from==r.to||(t<1?r.from>=e:r.from>e)||(t>-1?r.to<=e:r.to<e);){let o=!n&&r instanceof Wt&&r.index<0?null:r.parent;if(!o)return r;r=o}let i=n?0:at.IgnoreOverlays;if(n)for(let o=r,a=o.parent;a;o=a,a=o.parent)o instanceof Wt&&o.index<0&&((s=a.enter(e,t,i))===null||s===void 0?void 0:s.from)!=o.from&&(r=a);for(;;){let o=r.enter(e,t,i);if(!o)return r;r=o}}class kg{cursor(e=0){return new La(this,e)}getChild(e,t=null,n=null){let s=qd(this,e,t,n);return s.length?s[0]:null}getChildren(e,t=null,n=null){return qd(this,e,t,n)}resolve(e,t=0){return Ji(this,e,t,!1)}resolveInner(e,t=0){return Ji(this,e,t,!0)}matchContext(e){return Kc(this.parent,e)}enterUnfinishedNodesBefore(e){let t=this.childBefore(e),n=this;for(;t;){let s=t.lastChild;if(!s||s.to!=t.to)break;s.type.isError&&s.from==s.to?(n=t,t=s.prevSibling):t=s}return n}get node(){return this}get next(){return this.parent}}class Wt extends kg{constructor(e,t,n,s){super(),this._tree=e,this.from=t,this.index=n,this._parent=s}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(e,t,n,s,i=0){for(let o=this;;){for(let{children:a,positions:l}=o._tree,c=t>0?a.length:-1;e!=c;e+=t){let u=a[e],h=l[e]+o.from,p;if(!(!(i&at.EnterBracketed&&u instanceof ot&&(p=Zs.get(u))&&!p.overlay&&p.bracketed&&n>=h&&n<=h+u.length)&&!yg(s,n,h,h+u.length))){if(u instanceof Vn){if(i&at.ExcludeBuffers)continue;let f=u.findChild(0,u.buffer.length,t,n-h,s);if(f>-1)return new Jr(new F5(o,u,e,h),null,f)}else if(i&at.IncludeAnonymous||!u.type.isAnonymous||Gu(u)){let f;if(!(i&at.IgnoreMounts)&&(f=Zs.get(u))&&!f.overlay)return new Wt(f.tree,h,e,o);let g=new Wt(u,h,e,o);return i&at.IncludeAnonymous||!g.type.isAnonymous?g:g.nextChild(t<0?u.children.length-1:0,t,n,s,i)}}}if(i&at.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,n=0){let s;if(!(n&at.IgnoreOverlays)&&(s=Zs.get(this._tree))&&s.overlay){let i=e-this.from,o=n&at.EnterBracketed&&s.bracketed;for(let{from:a,to:l}of s.overlay)if((t>0||o?a<=i:a<i)&&(t<0||o?l>=i:l>i))return new Wt(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,n)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function qd(r,e,t,n){let s=r.cursor(),i=[];if(!s.firstChild())return i;if(t!=null){for(let o=!1;!o;)if(o=s.type.is(t),!s.nextSibling())return i}for(;;){if(n!=null&&s.type.is(n))return i;if(s.type.is(e)&&i.push(s.node),!s.nextSibling())return n==null?i:[]}}function Kc(r,e,t=e.length-1){for(let n=r;t>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[t]&&e[t]!=n.name)return!1;t--}}return!0}class F5{constructor(e,t,n,s){this.parent=e,this.buffer=t,this.index=n,this.start=s}}class Jr extends kg{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,n){super(),this.context=e,this._parent=t,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,t,n){let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.context.start,n);return i<0?null:new Jr(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,n=0){if(n&at.ExcludeBuffers)return null;let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return i<0?null:new Jr(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new Jr(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new Jr(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:n}=this.context,s=this.index+4,i=n.buffer[this.index+3];if(i>s){let o=n.buffer[this.index+1];e.push(n.slice(s,i,o)),t.push(0)}return new ot(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function wg(r){if(!r.length)return null;let e=0,t=r[0];for(let i=1;i<r.length;i++){let o=r[i];(o.from>t.from||o.to<t.to)&&(t=o,e=i)}let n=t instanceof Wt&&t.index<0?null:t.parent,s=r.slice();return n?s[e]=n:s.splice(e,1),new U5(s,t)}class U5{constructor(e,t){this.heads=e,this.node=t}get next(){return wg(this.heads)}}function G5(r,e,t){let n=r.resolveInner(e,t),s=null;for(let i=n instanceof Wt?n:n.context.parent;i;i=i.parent)if(i.index<0){let o=i.parent;(s||(s=[n])).push(o.resolve(e,t)),i=o}else{let o=Zs.get(i.tree);if(o&&o.overlay&&o.overlay[0].from<=e&&o.overlay[o.overlay.length-1].to>=e){let a=new Wt(o.tree,o.overlay[0].from+i.from,-1,i);(s||(s=[n])).push(Ji(a,e,t,!1))}}return s?wg(s):n}class La{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~at.EnterBracketed,e instanceof Wt)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let n=e._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:n,buffer:s}=this.buffer;return this.type=t||s.set.types[s.buffer[e]],this.from=n+s.buffer[e+1],this.to=n+s.buffer[e+2],!0}yield(e){return e?e instanceof Wt?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,n,this.mode));let{buffer:s}=this.buffer,i=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.buffer.start,n);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,n=this.mode){return this.buffer?n&at.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,n))}parent(){if(!this.buffer)return this.yieldNode(this.mode&at.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&at.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,n=this.stack.length-1;if(e<0){let s=n<0?0:this.stack[n]+4;if(this.index!=s)return this.yieldBuf(t.findChild(s,this.index,-1,0,4))}else{let s=t.buffer[this.index+3];if(s<(n<0?t.buffer.length:t.buffer[this.stack[n]+3]))return this.yieldBuf(s)}return n<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,n,{buffer:s}=this;if(s){if(e>0){if(this.index<s.buffer.buffer.length)return!1}else for(let i=0;i<this.index;i++)if(s.buffer.buffer[i+3]<this.index)return!1;({index:t,parent:n}=s)}else({index:t,_parent:n}=this._tree);for(;n;{index:t,_parent:n}=n)if(t>-1)for(let i=t+e,o=e<0?-1:n._tree.children.length;i!=o;i+=e){let a=n._tree.children[i];if(this.mode&at.IncludeAnonymous||a instanceof Vn||!a.type.isAnonymous||Gu(a))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let e=this.bufferNode,t=null,n=0;if(e&&e.context==this.buffer)e:for(let s=this.index,i=this.stack.length;i>=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;t=o,n=i+1;break e}s=this.stack[--i]}for(let s=n;s<this.stack.length;s++)t=new Jr(this.buffer,t,this.stack[s]);return this.bufferNode=new Jr(this.buffer,t,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,t){for(let n=0;;){let s=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){n++;continue}this.type.isAnonymous||(s=!0)}for(;;){if(s&&t&&t(this),s=this.type.isAnonymous,!n)return;if(this.nextSibling())break;this.parent(),n--,s=!0}}}matchContext(e){if(!this.buffer)return Kc(this.node.parent,e);let{buffer:t}=this.buffer,{types:n}=t.set;for(let s=e.length-1,i=this.stack.length-1;s>=0;i--){if(i<0)return Kc(this._tree,e,s);let o=n[t.buffer[this.stack[i]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}}function Gu(r){return r.children.some(e=>e instanceof Vn||!e.type.isAnonymous||Gu(e))}function H5(r){var e;let{buffer:t,nodeSet:n,maxBufferLength:s=xg,reused:i=[],minRepeatType:o=n.types.length}=r,a=Array.isArray(t)?new Uu(t,t.length):t,l=n.types,c=0,u=0;function h(E,j,z,ae,ce,Oe){let{id:W,start:L,end:Z,size:F}=a,q=u,N=c;if(F<0)if(a.next(),F==-1){let fe=i[W];z.push(fe),ae.push(L-E);return}else if(F==-3){c=W;return}else if(F==-4){u=W;return}else throw new RangeError(`Unrecognized record size: ${F}`);let X=l[W],I,xe,J=L-E;if(Z-L<=s&&(xe=x(a.pos-j,ce))){let fe=new Uint16Array(xe.size-xe.skip),S=a.pos-xe.size,k=fe.length;for(;a.pos>S;)k=b(xe.start,fe,k);I=new Vn(fe,Z-xe.start,n),J=xe.start-E}else{let fe=a.pos-F;a.next();let S=[],k=[],A=W>=o?W:-1,R=0,H=Z;for(;a.pos>fe;)A>=0&&a.id==A&&a.size>=0?(a.end<=H-s&&(g(S,k,L,R,a.end,H,A,q,N),R=S.length,H=a.end),a.next()):Oe>2500?p(L,fe,S,k):h(L,fe,S,k,A,Oe+1);if(A>=0&&R>0&&R<S.length&&g(S,k,L,R,L,H,A,q,N),S.reverse(),k.reverse(),A>-1&&R>0){let oe=f(X,N);I=Hu(X,S,k,0,S.length,0,Z-L,oe,oe)}else I=O(X,S,k,Z-L,q-Z,N)}z.push(I),ae.push(J)}function p(E,j,z,ae){let ce=[],Oe=0,W=-1;for(;a.pos>j;){let{id:L,start:Z,end:F,size:q}=a;if(q>4)a.next();else{if(W>-1&&Z<W)break;W<0&&(W=F-s),ce.push(L,Z,F),Oe++,a.next()}}if(Oe){let L=new Uint16Array(Oe*4),Z=ce[ce.length-2];for(let F=ce.length-3,q=0;F>=0;F-=3)L[q++]=ce[F],L[q++]=ce[F+1]-Z,L[q++]=ce[F+2]-Z,L[q++]=q;z.push(new Vn(L,ce[2]-Z,n)),ae.push(Z-E)}}function f(E,j){return(z,ae,ce)=>{let Oe=0,W=z.length-1,L,Z;if(W>=0&&(L=z[W])instanceof ot){if(!W&&L.type==E&&L.length==ce)return L;(Z=L.prop(Ye.lookAhead))&&(Oe=ae[W]+L.length+Z)}return O(E,z,ae,ce,Oe,j)}}function g(E,j,z,ae,ce,Oe,W,L,Z){let F=[],q=[];for(;E.length>ae;)F.push(E.pop()),q.push(j.pop()+z-ce);E.push(O(n.types[W],F,q,Oe-ce,L-Oe,Z)),j.push(ce-z)}function O(E,j,z,ae,ce,Oe,W){if(Oe){let L=[Ye.contextHash,Oe];W=W?[L].concat(W):[L]}if(ce>25){let L=[Ye.lookAhead,ce];W=W?[L].concat(W):[L]}return new ot(E,j,z,ae,W)}function x(E,j){let z=a.fork(),ae=0,ce=0,Oe=0,W=z.end-s,L={size:0,start:0,skip:0};e:for(let Z=z.pos-E;z.pos>Z;){let F=z.size;if(z.id==j&&F>=0){L.size=ae,L.start=ce,L.skip=Oe,Oe+=4,ae+=4,z.next();continue}let q=z.pos-F;if(F<0||q<Z||z.start<W)break;let N=z.id>=o?4:0,X=z.start;for(z.next();z.pos>q;){if(z.size<0)if(z.size==-3||z.size==-4)N+=4;else break e;else z.id>=o&&(N+=4);z.next()}ce=X,ae+=F,Oe+=N}return(j<0||ae==E)&&(L.size=ae,L.start=ce,L.skip=Oe),L.size>4?L:void 0}function b(E,j,z){let{id:ae,start:ce,end:Oe,size:W}=a;if(a.next(),W>=0&&ae<o){let L=z;if(W>4){let Z=a.pos-(W-4);for(;a.pos>Z;)z=b(E,j,z)}j[--z]=L,j[--z]=Oe-E,j[--z]=ce-E,j[--z]=ae}else W==-3?c=ae:W==-4&&(u=ae);return z}let w=[],Q=[];for(;a.pos>0;)h(r.start||0,r.bufferStart||0,w,Q,-1,0);let P=(e=r.length)!==null&&e!==void 0?e:w.length?Q[0]+w[0].length:0;return new ot(l[r.topID],w.reverse(),Q.reverse(),P)}const Yd=new WeakMap;function Oa(r,e){if(!r.isAnonymous||e instanceof Vn||e.type!=r)return 1;let t=Yd.get(e);if(t==null){t=1;for(let n of e.children){if(n.type!=r||!(n instanceof ot)){t=1;break}t+=Oa(r,n)}Yd.set(e,t)}return t}function Hu(r,e,t,n,s,i,o,a,l){let c=0;for(let g=n;g<s;g++)c+=Oa(r,e[g]);let u=Math.ceil(c*1.5/8),h=[],p=[];function f(g,O,x,b,w){for(let Q=x;Q<b;){let P=Q,E=O[Q],j=Oa(r,g[Q]);for(Q++;Q<b;Q++){let z=Oa(r,g[Q]);if(j+z>=u)break;j+=z}if(Q==P+1){if(j>u){let z=g[P];f(z.children,z.positions,0,z.children.length,O[P]+w);continue}h.push(g[P])}else{let z=O[Q-1]+g[Q-1].length-E;h.push(Hu(r,g,O,P,Q,E,z,null,l))}p.push(E+w-i)}}return f(e,t,n,s,0),(a||l)(h,p,o)}class Sg{constructor(){this.map=new WeakMap}setBuffer(e,t,n){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(t,n)}getBuffer(e,t){let n=this.map.get(e);return n&&n.get(t)}set(e,t){e instanceof Jr?this.setBuffer(e.context.buffer,e.index,t):e instanceof Wt&&this.map.set(e.tree,t)}get(e){return e instanceof Jr?this.getBuffer(e.context.buffer,e.index):e instanceof Wt?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class On{constructor(e,t,n,s,i=!1,o=!1){this.from=e,this.to=t,this.tree=n,this.offset=s,this.open=(i?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],n=!1){let s=[new On(0,e.length,e,0,!1,n)];for(let i of t)i.to>e.length&&s.push(i);return s}static applyChanges(e,t,n=128){if(!t.length)return e;let s=[],i=1,o=e.length?e[0]:null;for(let a=0,l=0,c=0;;a++){let u=a<t.length?t[a]:null,h=u?u.fromA:1e9;if(h-l>=n)for(;o&&o.from<h;){let p=o;if(l>=p.from||h<=p.to||c){let f=Math.max(p.from,l)-c,g=Math.min(p.to,h)-c;p=f>=g?null:new On(f,g,p.tree,p.offset+c,a>0,!!u)}if(p&&s.push(p),o.to>h)break;o=i<e.length?e[i++]:null}if(!u)break;l=u.toA,c=u.toA-u.toB}return s}}class Ku{startParse(e,t,n){return typeof e=="string"&&(e=new K5(e)),n=n?n.length?n.map(s=>new xr(s.from,s.to)):[new xr(0,0)]:[new xr(0,e.length)],this.createParse(e,t||[],n)}parse(e,t,n){let s=this.startParse(e,t,n);for(;;){let i=s.advance();if(i)return i}}}class K5{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}}function $g(r){return(e,t,n,s)=>new eC(e,r,t,n,s)}class Fd{constructor(e,t,n,s,i,o){this.parser=e,this.parse=t,this.overlay=n,this.bracketed=s,this.target=i,this.from=o}}function Ud(r){if(!r.length||r.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(r))}class J5{constructor(e,t,n,s,i,o,a,l){this.parser=e,this.predicate=t,this.mounts=n,this.index=s,this.start=i,this.bracketed=o,this.target=a,this.prev=l,this.depth=0,this.ranges=[]}}const Jc=new Ye({perNode:!0});class eC{constructor(e,t,n,s,i){this.nest=t,this.input=n,this.fragments=s,this.ranges=i,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let n=this.baseParse.advance();if(!n)return null;if(this.baseParse=null,this.baseTree=n,this.startInner(),this.stoppedAt!=null)for(let s of this.inner)s.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let n=this.baseTree;return this.stoppedAt!=null&&(n=new ot(n.type,n.children,n.positions,n.length,n.propValues.concat([[Jc,this.stoppedAt]]))),n}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let n=Object.assign(Object.create(null),e.target.props);n[Ye.mounted.id]=new Zs(t,e.overlay,e.parser,e.bracketed),e.target.props=n}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].from<e&&(e=Math.min(e,this.inner[t].parse.parsedPos));return e}stopAt(e){if(this.stoppedAt=e,this.baseParse)this.baseParse.stopAt(e);else for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].parse.stopAt(e)}startInner(){let e=new nC(this.fragments),t=null,n=null,s=new La(new Wt(this.baseTree,this.ranges[0].from,0,null),at.IncludeAnonymous|at.IgnoreMounts);e:for(let i,o;;){let a=!0,l;if(this.stoppedAt!=null&&s.from>=this.stoppedAt)a=!1;else if(e.hasNode(s)){if(t){let c=t.mounts.find(u=>u.frag.from<=s.from&&u.frag.to>=s.to&&u.mount.overlay);if(c)for(let u of c.mount.overlay){let h=u.from+c.pos,p=u.to+c.pos;h>=s.from&&p<=s.to&&!t.ranges.some(f=>f.from<p&&f.to>h)&&t.ranges.push({from:h,to:p})}}a=!1}else if(n&&(o=tC(n.ranges,s.from,s.to)))a=o!=2;else if(!s.type.isAnonymous&&(i=this.nest(s,this.input))&&(s.from<s.to||!i.overlay)){s.tree||(rC(s),t&&t.depth++,n&&n.depth++);let c=e.findMounts(s.from,i.parser);if(typeof i.overlay=="function")t=new J5(i.parser,i.overlay,c,this.inner.length,s.from,!!i.bracketed,s.tree,t);else{let u=Kd(this.ranges,i.overlay||(s.from<s.to?[new xr(s.from,s.to)]:[]));u.length&&Ud(u),(u.length||!i.overlay)&&this.inner.push(new Fd(i.parser,u.length?i.parser.startParse(this.input,Jd(c,u),u):i.parser.startParse(""),i.overlay?i.overlay.map(h=>new xr(h.from-s.from,h.to-s.from)):null,!!i.bracketed,s.tree,u.length?u[0].from:s.from)),i.overlay?u.length&&(n={ranges:u,depth:0,prev:n}):a=!1}}else if(t&&(l=t.predicate(s))&&(l===!0&&(l=new xr(s.from,s.to)),l.from<l.to)){let c=t.ranges.length-1;c>=0&&t.ranges[c].to==l.from?t.ranges[c]={from:t.ranges[c].from,to:l.to}:t.ranges.push(l)}if(a&&s.firstChild())t&&t.depth++,n&&n.depth++;else for(;!s.nextSibling();){if(!s.parent())break e;if(t&&!--t.depth){let c=Kd(this.ranges,t.ranges);c.length&&(Ud(c),this.inner.splice(t.index,0,new Fd(t.parser,t.parser.startParse(this.input,Jd(t.mounts,c),c),t.ranges.map(u=>new xr(u.from-t.start,u.to-t.start)),t.bracketed,t.target,c[0].from))),t=t.prev}n&&!--n.depth&&(n=n.prev)}}}}function tC(r,e,t){for(let n of r){if(n.from>=t)break;if(n.to>e)return n.from<=e&&n.to>=t?2:1}return 0}function Gd(r,e,t,n,s,i){if(e<t){let o=r.buffer[e+1];n.push(r.slice(e,t,o)),s.push(o-i)}}function rC(r){let{node:e}=r,t=[],n=e.context.buffer;do t.push(r.index),r.parent();while(!r.tree);let s=r.tree,i=s.children.indexOf(n),o=s.children[i],a=o.buffer,l=[i];function c(u,h,p,f,g,O){let x=t[O],b=[],w=[];Gd(o,u,x,b,w,f);let Q=a[x+1],P=a[x+2];l.push(b.length);let E=O?c(x+4,a[x+3],o.set.types[a[x]],Q,P-Q,O-1):e.toTree();return b.push(E),w.push(Q-f),Gd(o,a[x+3],h,b,w,f),new ot(p,b,w,g)}s.children[i]=c(0,a.length,Pt.none,0,o.length,t.length-1);for(let u of l){let h=r.tree.children[u],p=r.tree.positions[u];r.yield(new Wt(h,p+r.from,u,r._tree))}}class Hd{constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(at.IncludeAnonymous|at.IgnoreMounts)}moveTo(e){let{cursor:t}=this,n=e-this.offset;for(;!this.done&&t.from<n;)t.to>=e&&t.enter(n,1,at.IgnoreOverlays|at.ExcludeBuffers)||t.next(!1)||(this.done=!0)}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof ot)t=t.children[0];else break}return!1}}let nC=class{constructor(e){var t;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let n=this.curFrag=e[0];this.curTo=(t=n.tree.prop(Jc))!==null&&t!==void 0?t:n.to,this.inner=new Hd(n.tree,-n.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let t=this.curFrag=this.fragments[this.fragI];this.curTo=(e=t.tree.prop(Jc))!==null&&e!==void 0?e:t.to,this.inner=new Hd(t.tree,-t.offset)}}findMounts(e,t){var n;let s=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let i=this.inner.cursor.node;i;i=i.parent){let o=(n=i.tree)===null||n===void 0?void 0:n.prop(Ye.mounted);if(o&&o.parser==t)for(let a=this.fragI;a<this.fragments.length;a++){let l=this.fragments[a];if(l.from>=i.to)break;l.tree==this.curFrag.tree&&s.push({frag:l,pos:i.from-l.offset,mount:o})}}}return s}};function Kd(r,e){let t=null,n=e;for(let s=1,i=0;s<r.length;s++){let o=r[s-1].to,a=r[s].from;for(;i<n.length;i++){let l=n[i];if(l.from>=a)break;l.to<=o||(t||(n=t=e.slice()),l.from<o?(t[i]=new xr(l.from,o),l.to>a&&t.splice(i+1,0,new xr(a,l.to))):l.to>a?t[i--]=new xr(a,l.to):t.splice(i--,1))}}return n}function sC(r,e,t,n){let s=0,i=0,o=!1,a=!1,l=-1e9,c=[];for(;;){let u=s==r.length?1e9:o?r[s].to:r[s].from,h=i==e.length?1e9:a?e[i].to:e[i].from;if(o!=a){let p=Math.max(l,t),f=Math.min(u,h,n);p<f&&c.push(new xr(p,f))}if(l=Math.min(u,h),l==1e9)break;u==l&&(o?(o=!1,s++):o=!0),h==l&&(a?(a=!1,i++):a=!0)}return c}function Jd(r,e){let t=[];for(let{pos:n,mount:s,frag:i}of r){let o=n+(s.overlay?s.overlay[0].from:0),a=o+s.tree.length,l=Math.max(i.from,o),c=Math.min(i.to,a);if(s.overlay){let u=s.overlay.map(p=>new xr(p.from+n,p.to+n)),h=sC(e,u,l,c);for(let p=0,f=l;;p++){let g=p==h.length,O=g?c:h[p].from;if(O>f&&t.push(new On(f,O,s.tree,-o,i.from>=f||i.openStart,i.to<=O||i.openEnd)),g)break;f=h[p].to}}else t.push(new On(l,c,s.tree,-o,i.from>=o||i.openStart,i.to<=a||i.openEnd))}return t}let iC=0;class fr{constructor(e,t,n,s){this.name=e,this.set=t,this.base=n,this.modified=s,this.id=iC++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let n=typeof e=="string"?e:"?";if(e instanceof fr&&(t=e),t?.base)throw new Error("Can not derive from a modified tag");let s=new fr(n,[],null,[]);if(s.set.push(s),t)for(let i of t.set)s.set.push(i);return s}static defineModifier(e){let t=new Xa(e);return n=>n.modified.indexOf(t)>-1?n:Xa.get(n.base||n,n.modified.concat(t).sort((s,i)=>s.id-i.id))}}let oC=0;class Xa{constructor(e){this.name=e,this.instances=[],this.id=oC++}static get(e,t){if(!t.length)return e;let n=t[0].instances.find(a=>a.base==e&&aC(t,a.modified));if(n)return n;let s=[],i=new fr(e.name,s,e,t);for(let a of t)a.instances.push(i);let o=lC(t);for(let a of e.set)if(!a.modified.length)for(let l of o)s.push(Xa.get(a,l));return i}}function aC(r,e){return r.length==e.length&&r.every((t,n)=>t==e[n])}function lC(r){let e=[[]];for(let t=0;t<r.length;t++)for(let n=0,s=e.length;n<s;n++)e.push(e[n].concat(r[t]));return e.sort((t,n)=>n.length-t.length)}function ti(r){let e=Object.create(null);for(let t in r){let n=r[t];Array.isArray(n)||(n=[n]);for(let s of t.split(" "))if(s){let i=[],o=2,a=s;for(let h=0;;){if(a=="..."&&h>0&&h+3==s.length){o=1;break}let p=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!p)throw new RangeError("Invalid path: "+s);if(i.push(p[0]=="*"?"":p[0][0]=='"'?JSON.parse(p[0]):p[0]),h+=p[0].length,h==s.length)break;let f=s[h++];if(h==s.length&&f=="!"){o=0;break}if(f!="/")throw new RangeError("Invalid path: "+s);a=s.slice(h)}let l=i.length-1,c=i[l];if(!c)throw new RangeError("Invalid path: "+s);let u=new eo(n,o,l>0?i.slice(0,l):null);e[c]=u.sort(e[c])}}return Cg.add(e)}const Cg=new Ye({combine(r,e){let t,n,s;for(;r||e;){if(!r||e&&r.depth>=e.depth?(s=e,e=e.next):(s=r,r=r.next),t&&t.mode==s.mode&&!s.context&&!t.context)continue;let i=new eo(s.tags,s.mode,s.context);t?t.next=i:n=i,t=i}return n}});class eo{constructor(e,t,n,s){this.tags=e,this.mode=t,this.context=n,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}}eo.empty=new eo([],2,null);function Qg(r,e){let t=Object.create(null);for(let i of r)if(!Array.isArray(i.tag))t[i.tag.id]=i.class;else for(let o of i.tag)t[o.id]=i.class;let{scope:n,all:s=null}=e||{};return{style:i=>{let o=s;for(let a of i)for(let l of a.set){let c=t[l.id];if(c){o=o?o+" "+c:c;break}}return o},scope:n}}function cC(r,e){let t=null;for(let n of r){let s=n.style(e);s&&(t=t?t+" "+s:s)}return t}function uC(r,e,t,n=0,s=r.length){let i=new hC(n,Array.isArray(e)?e:[e],t);i.highlightRange(r.cursor(),n,s,"",i.highlighters),i.flush(s)}class hC{constructor(e,t,n){this.at=e,this.highlighters=t,this.span=n,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,n,s,i){let{type:o,from:a,to:l}=e;if(a>=n||l<=t)return;o.isTop&&(i=this.highlighters.filter(f=>!f.scope||f.scope(o)));let c=s,u=dC(e)||eo.empty,h=cC(i,u.tags);if(h&&(c&&(c+=" "),c+=h,u.mode==1&&(s+=(s?" ":"")+h)),this.startSpan(Math.max(t,a),c),u.opaque)return;let p=e.tree&&e.tree.prop(Ye.mounted);if(p&&p.overlay){let f=e.node.enter(p.overlay[0].from+a,1),g=this.highlighters.filter(x=>!x.scope||x.scope(p.tree.type)),O=e.firstChild();for(let x=0,b=a;;x++){let w=x<p.overlay.length?p.overlay[x]:null,Q=w?w.from+a:l,P=Math.max(t,b),E=Math.min(n,Q);if(P<E&&O)for(;e.from<E&&(this.highlightRange(e,P,E,s,i),this.startSpan(Math.min(E,e.to),c),!(e.to>=Q||!e.nextSibling())););if(!w||Q>n)break;b=w.to+a,b>t&&(this.highlightRange(f.cursor(),Math.max(t,w.from+a),Math.min(n,b),"",g),this.startSpan(Math.min(n,b),c))}O&&e.parent()}else if(e.firstChild()){p&&(s="");do if(!(e.to<=t)){if(e.from>=n)break;this.highlightRange(e,t,n,s,i),this.startSpan(Math.min(n,e.to),c)}while(e.nextSibling());e.parent()}}}function dC(r){let e=r.type.prop(Cg);for(;e&&e.context&&!r.matchContext(e.context);)e=e.next;return e||null}const we=fr.define,Ho=we(),An=we(),ef=we(An),tf=we(An),_n=we(),Ko=we(_n),Vl=we(_n),Fr=we(),Kn=we(Fr),qr=we(),Yr=we(),eu=we(),Ci=we(eu),Jo=we(),$={comment:Ho,lineComment:we(Ho),blockComment:we(Ho),docComment:we(Ho),name:An,variableName:we(An),typeName:ef,tagName:we(ef),propertyName:tf,attributeName:we(tf),className:we(An),labelName:we(An),namespace:we(An),macroName:we(An),literal:_n,string:Ko,docString:we(Ko),character:we(Ko),attributeValue:we(Ko),number:Vl,integer:we(Vl),float:we(Vl),bool:we(_n),regexp:we(_n),escape:we(_n),color:we(_n),url:we(_n),keyword:qr,self:we(qr),null:we(qr),atom:we(qr),unit:we(qr),modifier:we(qr),operatorKeyword:we(qr),controlKeyword:we(qr),definitionKeyword:we(qr),moduleKeyword:we(qr),operator:Yr,derefOperator:we(Yr),arithmeticOperator:we(Yr),logicOperator:we(Yr),bitwiseOperator:we(Yr),compareOperator:we(Yr),updateOperator:we(Yr),definitionOperator:we(Yr),typeOperator:we(Yr),controlOperator:we(Yr),punctuation:eu,separator:we(eu),bracket:Ci,angleBracket:we(Ci),squareBracket:we(Ci),paren:we(Ci),brace:we(Ci),content:Fr,heading:Kn,heading1:we(Kn),heading2:we(Kn),heading3:we(Kn),heading4:we(Kn),heading5:we(Kn),heading6:we(Kn),contentSeparator:we(Fr),list:we(Fr),quote:we(Fr),emphasis:we(Fr),strong:we(Fr),link:we(Fr),monospace:we(Fr),strikethrough:we(Fr),inserted:we(),deleted:we(),changed:we(),invalid:we(),meta:Jo,documentMeta:we(Jo),annotation:we(Jo),processingInstruction:we(Jo),definition:fr.defineModifier("definition"),constant:fr.defineModifier("constant"),function:fr.defineModifier("function"),standard:fr.defineModifier("standard"),local:fr.defineModifier("local"),special:fr.defineModifier("special")};for(let r in $){let e=$[r];e instanceof fr&&(e.name=r)}Qg([{tag:$.link,class:"tok-link"},{tag:$.heading,class:"tok-heading"},{tag:$.emphasis,class:"tok-emphasis"},{tag:$.strong,class:"tok-strong"},{tag:$.keyword,class:"tok-keyword"},{tag:$.atom,class:"tok-atom"},{tag:$.bool,class:"tok-bool"},{tag:$.url,class:"tok-url"},{tag:$.labelName,class:"tok-labelName"},{tag:$.inserted,class:"tok-inserted"},{tag:$.deleted,class:"tok-deleted"},{tag:$.literal,class:"tok-literal"},{tag:$.string,class:"tok-string"},{tag:$.number,class:"tok-number"},{tag:[$.regexp,$.escape,$.special($.string)],class:"tok-string2"},{tag:$.variableName,class:"tok-variableName"},{tag:$.local($.variableName),class:"tok-variableName tok-local"},{tag:$.definition($.variableName),class:"tok-variableName tok-definition"},{tag:$.special($.variableName),class:"tok-variableName2"},{tag:$.definition($.propertyName),class:"tok-propertyName tok-definition"},{tag:$.typeName,class:"tok-typeName"},{tag:$.namespace,class:"tok-namespace"},{tag:$.className,class:"tok-className"},{tag:$.macroName,class:"tok-macroName"},{tag:$.propertyName,class:"tok-propertyName"},{tag:$.operator,class:"tok-operator"},{tag:$.comment,class:"tok-comment"},{tag:$.meta,class:"tok-meta"},{tag:$.invalid,class:"tok-invalid"},{tag:$.punctuation,class:"tok-punctuation"}]);var zl;const os=new Ye;function Ju(r){return Ce.define({combine:r?e=>e.concat(r):void 0})}const eh=new Ye;class yr{constructor(e,t,n=[],s=""){this.data=e,this.name=s,tt.prototype.hasOwnProperty("tree")||Object.defineProperty(tt.prototype,"tree",{get(){return ft(this)}}),this.parser=t,this.extension=[zn.of(this),tt.languageData.of((i,o,a)=>{let l=rf(i,o,a),c=l.type.prop(os);if(!c)return[];let u=i.facet(c),h=l.type.prop(eh);if(h){let p=l.resolve(o-l.from,a);for(let f of h)if(f.test(p,i)){let g=i.facet(f.facet);return f.type=="replace"?g:g.concat(u)}}return u})].concat(n)}isActiveAt(e,t,n=-1){return rf(e,t,n).type.prop(os)==this.data}findRegions(e){let t=e.facet(zn);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let n=[],s=(i,o)=>{if(i.prop(os)==this.data){n.push({from:o,to:o+i.length});return}let a=i.prop(Ye.mounted);if(a){if(a.tree.prop(os)==this.data){if(a.overlay)for(let l of a.overlay)n.push({from:l.from+o,to:l.to+o});else n.push({from:o,to:o+i.length});return}else if(a.overlay){let l=n.length;if(s(a.tree,a.overlay[0].from+o),n.length>l)return}}for(let l=0;l<i.children.length;l++){let c=i.children[l];c instanceof ot&&s(c,i.positions[l]+o)}};return s(ft(e),0),n}get allowsNesting(){return!0}}yr.setState=je.define();function rf(r,e,t){let n=r.facet(zn),s=ft(r).topNode;if(!n||n.allowsNesting)for(let i=s;i;i=i.enter(e,t,at.ExcludeBuffers|at.EnterBracketed))i.type.isTop&&(s=i);return s}class Ys extends yr{constructor(e,t,n){super(e,t,[],n),this.parser=t}static define(e){let t=Ju(e.languageData);return new Ys(t,e.parser.configure({props:[os.add(n=>n.isTop?t:void 0)]}),e.name)}configure(e,t){return new Ys(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function ft(r){let e=r.field(yr.state,!1);return e?e.tree:ot.empty}class fC{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let n=this.cursorPos-this.string.length;return e<n||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-n,t-n)}}let Qi=null;class to{constructor(e,t,n=[],s,i,o,a,l){this.parser=e,this.state=t,this.fragments=n,this.tree=s,this.treeLen=i,this.viewport=o,this.skipped=a,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(e,t,n){return new to(e,t,[],ot.empty,0,n,[],null)}startParse(){return this.parser.startParse(new fC(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=ot.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var n;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let s=this.parse.advance();if(s)if(this.fragments=this.withoutTempSkipped(On.addTree(s,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(n=this.parse.stoppedAt)!==null&&n!==void 0?n:this.state.doc.length,this.tree=s,this.parse=null,this.treeLen<(t??this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(On.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=Qi;Qi=this;try{return e()}finally{Qi=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=nf(e,t.from,t.to);return e}changes(e,t){let{fragments:n,tree:s,treeLen:i,viewport:o,skipped:a}=this;if(this.takeTree(),!e.empty){let l=[];if(e.iterChangedRanges((c,u,h,p)=>l.push({fromA:c,toA:u,fromB:h,toB:p})),n=On.applyChanges(n,l),s=ot.empty,i=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){a=[];for(let c of this.skipped){let u=e.mapPos(c.from,1),h=e.mapPos(c.to,-1);u<h&&a.push({from:u,to:h})}}}return new to(this.parser,t,n,s,i,o,a,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let n=0;n<this.skipped.length;n++){let{from:s,to:i}=this.skipped[n];s<e.to&&i>e.from&&(this.fragments=nf(this.fragments,s,i),this.skipped.splice(n--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Ku{createParse(t,n,s){let i=s[0].from,o=s[s.length-1].to;return{parsedPos:i,advance(){let l=Qi;if(l){for(let c of s)l.tempSkipped.push(c);e&&(l.scheduleOn=l.scheduleOn?Promise.all([l.scheduleOn,e]):e)}return this.parsedPos=o,new ot(Pt.none,[],[],o-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return Qi}}function nf(r,e,t){return On.applyChanges(r,[{fromA:e,toA:t,fromB:e,toB:t}])}class Fs{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),n=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,n)||t.takeTree(),new Fs(t)}static init(e){let t=Math.min(3e3,e.doc.length),n=to.create(e.facet(zn).parser,e,{from:0,to:t});return n.work(20,t)||n.takeTree(),new Fs(n)}}yr.state=_t.define({create:Fs.init,update(r,e){for(let t of e.effects)if(t.is(yr.setState))return t.value;return e.startState.facet(zn)!=e.state.facet(zn)?Fs.init(e.state):r.apply(e)}});let Pg=r=>{let e=setTimeout(()=>r(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Pg=r=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(r,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});const Nl=typeof navigator<"u"&&(!((zl=navigator.scheduling)===null||zl===void 0)&&zl.isInputPending)?()=>navigator.scheduling.isInputPending():null,pC=bt.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(yr.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(yr.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Pg(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:n,viewport:{to:s}}=this.view,i=n.field(yr.state);if(i.tree==i.context.tree&&i.context.isDone(s+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,e&&!Nl?Math.max(25,e.timeRemaining()-5):1e9),a=i.context.treeLen<s&&n.doc.length>s+1e3,l=i.context.work(()=>Nl&&Nl()||Date.now()>o,s+(a?0:1e5));this.chunkBudget-=Date.now()-t,(l||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:yr.setState.of(new Fs(i.context))})),this.chunkBudget>0&&!(l&&!a)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>tr(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),zn=Ce.define({combine(r){return r.length?r[0]:null},enables:r=>[yr.state,pC,Se.contentAttributes.compute([r],e=>{let t=e.facet(r);return t&&t.name?{"data-language":t.name}:{}})]});class ro{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}}class Ia{constructor(e,t,n,s,i,o=void 0){this.name=e,this.alias=t,this.extensions=n,this.filename=s,this.loadFunc=i,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:n}=e;if(!t){if(!n)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");t=()=>Promise.resolve(n)}return new Ia(e.name,(e.alias||[]).concat(e.name).map(s=>s.toLowerCase()),e.extensions||[],e.filename,t,n)}static matchFilename(e,t){for(let s of e)if(s.filename&&s.filename.test(t))return s;let n=/\.([^.]+)$/.exec(t);if(n){for(let s of e)if(s.extensions.indexOf(n[1])>-1)return s}return null}static matchLanguageName(e,t,n=!0){t=t.toLowerCase();for(let s of e)if(s.alias.some(i=>i==t))return s;if(n)for(let s of e)for(let i of s.alias){let o=t.indexOf(i);if(o>-1&&(i.length>2||!/\w/.test(t[o-1])&&!/\w/.test(t[o+i.length])))return s}return null}}const mC=Ce.define(),$o=Ce.define({combine:r=>{if(!r.length)return" ";let e=r[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(r[0]));return e}});function Va(r){let e=r.facet($o);return e.charCodeAt(0)==9?r.tabSize*e.length:e.length}function no(r,e){let t="",n=r.tabSize,s=r.facet($o)[0];if(s==" "){for(;e>=n;)t+=" ",e-=n;s=" "}for(let i=0;i<e;i++)t+=s;return t}function th(r,e){r instanceof tt&&(r=new gl(r));for(let n of r.state.facet(mC)){let s=n(r,e);if(s!==void 0)return s}let t=ft(r.state);return t.length>=e?gC(r,t,e):null}class gl{constructor(e,t={}){this.state=e,this.options=t,this.unit=Va(e)}lineAt(e,t=1){let n=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:i}=this.options;return s!=null&&s>=n.from&&s<=n.to?i&&s==e?{text:"",from:e}:(t<0?s<e:s<=e)?{text:n.text.slice(s-n.from),from:s}:{text:n.text.slice(0,s-n.from),from:n.from}:n}textAfterPos(e,t=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:n,from:s}=this.lineAt(e,t);return n.slice(e-s,Math.min(n.length,e+100-s))}column(e,t=1){let{text:n,from:s}=this.lineAt(e,t),i=this.countColumn(n,e-s),o=this.options.overrideIndentation?this.options.overrideIndentation(s):-1;return o>-1&&(i+=o-this.countColumn(n,n.search(/\S|$/))),i}countColumn(e,t=e.length){return Rr(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:n,from:s}=this.lineAt(e,t),i=this.options.overrideIndentation;if(i){let o=i(s);if(o>-1)return o}return this.countColumn(n,n.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const Co=new Ye;function gC(r,e,t){let n=e.resolveStack(t),s=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(s!=n.node){let i=[];for(let o=s;o&&!(o.from<n.node.from||o.to>n.node.to||o.from==n.node.from&&o.type==n.node.type);o=o.parent)i.push(o);for(let o=i.length-1;o>=0;o--)n={node:i[o],next:n}}return Tg(n,r,t)}function Tg(r,e,t){for(let n=r;n;n=n.next){let s=vC(n.node);if(s)return s(rh.create(e,t,n))}return 0}function OC(r){return r.pos==r.options.simulateBreak&&r.options.simulateDoubleBreak}function vC(r){let e=r.type.prop(Co);if(e)return e;let t=r.firstChild,n;if(t&&(n=t.type.prop(Ye.closedBy))){let s=r.lastChild,i=s&&n.indexOf(s.name)>-1;return o=>Mg(o,!0,1,void 0,i&&!OC(o)?s.from:void 0)}return r.parent==null?bC:null}function bC(){return 0}class rh extends gl{constructor(e,t,n){super(e.state,e.options),this.base=e,this.pos=t,this.context=n}get node(){return this.context.node}static create(e,t,n){return new rh(e,t,n)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let n=e.resolve(t.from);for(;n.parent&&n.parent.from==n.from;)n=n.parent;if(xC(n,e))break;t=this.state.doc.lineAt(n.from)}return this.lineIndent(t.from)}continue(){return Tg(this.context.next,this.base,this.pos)}}function xC(r,e){for(let t=e;t;t=t.parent)if(r==t)return!0;return!1}function yC(r){let e=r.node,t=e.childAfter(e.from),n=e.lastChild;if(!t)return null;let s=r.options.simulateBreak,i=r.state.doc.lineAt(t.from),o=s==null||s<=i.from?i.to:Math.min(i.to,s);for(let a=t.to;;){let l=e.childAfter(a);if(!l||l==n)return null;if(!l.type.isSkipped){if(l.from>=o)return null;let c=/^ */.exec(i.text.slice(t.to-i.from))[0].length;return{from:t.from,to:t.to+c}}a=l.to}}function kC({closing:r,align:e=!0,units:t=1}){return n=>Mg(n,e,t,r)}function Mg(r,e,t,n,s){let i=r.textAfter,o=i.match(/^\s*/)[0].length,a=n&&i.slice(o,o+n.length)==n||s==r.pos+o,l=e?yC(r):null;return l?a?r.column(l.from):r.column(l.to):r.baseIndent+(a?0:r.unit*t)}const wC=r=>r.baseIndent;function va({except:r,units:e=1}={}){return t=>{let n=r&&r.test(t.textAfter);return t.baseIndent+(n?0:e*t.unit)}}const SC=200;function $C(){return tt.transactionFilter.of(r=>{if(!r.docChanged||!r.isUserEvent("input.type")&&!r.isUserEvent("input.complete"))return r;let e=r.startState.languageDataAt("indentOnInput",r.startState.selection.main.head);if(!e.length)return r;let t=r.newDoc,{head:n}=r.newSelection.main,s=t.lineAt(n);if(n>s.from+SC)return r;let i=t.sliceString(s.from,n);if(!e.some(c=>c.test(i)))return r;let{state:o}=r,a=-1,l=[];for(let{head:c}of o.selection.ranges){let u=o.doc.lineAt(c);if(u.from==a)continue;a=u.from;let h=th(o,u.from);if(h==null)continue;let p=/^\s*/.exec(u.text)[0],f=no(o,h);p!=f&&l.push({from:u.from,to:u.from+p.length,insert:f})}return l.length?[r,{changes:l,sequential:!0}]:r})}const Ag=Ce.define(),ri=new Ye;function _g(r){let e=r.firstChild,t=r.lastChild;return e&&e.to<t.from?{from:e.to,to:t.type.isError?r.to:t.from}:null}function CC(r,e,t){let n=ft(r);if(n.length<t)return null;let s=n.resolveStack(t,1),i=null;for(let o=s;o;o=o.next){let a=o.node;if(a.to<=t||a.from>t)continue;if(i&&a.from<e)break;let l=a.type.prop(ri);if(l&&(a.to<n.length-50||n.length==r.doc.length||!QC(a))){let c=l(a,r);c&&c.from<=t&&c.from>=e&&c.to>t&&(i=c)}}return i}function QC(r){let e=r.lastChild;return e&&e.to==r.to&&e.type.isError}function za(r,e,t){for(let n of r.facet(Ag)){let s=n(r,e,t);if(s)return s}return CC(r,e,t)}function Rg(r,e){let t=e.mapPos(r.from,1),n=e.mapPos(r.to,-1);return t>=n?void 0:{from:t,to:n}}const Ol=je.define({map:Rg}),Qo=je.define({map:Rg});function Bg(r){let e=[];for(let{head:t}of r.state.selection.ranges)e.some(n=>n.from<=t&&n.to>=t)||e.push(r.lineBlockAt(t));return e}const gs=_t.define({create(){return Le.none},update(r,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((t,n)=>r=sf(r,t,n)),r=r.map(e.changes);for(let t of e.effects)if(t.is(Ol)&&!PC(r,t.value.from,t.value.to)){let{preparePlaceholder:n}=e.state.facet(Dg),s=n?Le.replace({widget:new ZC(n(e.state,t.value))}):of;r=r.update({add:[s.range(t.value.from,t.value.to)]})}else t.is(Qo)&&(r=r.update({filter:(n,s)=>t.value.from!=n||t.value.to!=s,filterFrom:t.value.from,filterTo:t.value.to}));return e.selection&&(r=sf(r,e.selection.main.head)),r},provide:r=>Se.decorations.from(r),toJSON(r,e){let t=[];return r.between(0,e.doc.length,(n,s)=>{t.push(n,s)}),t},fromJSON(r){if(!Array.isArray(r)||r.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t<r.length;){let n=r[t++],s=r[t++];if(typeof n!="number"||typeof s!="number")throw new RangeError("Invalid JSON for fold state");e.push(of.range(n,s))}return Le.set(e,!0)}});function sf(r,e,t=e){let n=!1;return r.between(e,t,(s,i)=>{s<t&&i>e&&(n=!0)}),n?r.update({filterFrom:e,filterTo:t,filter:(s,i)=>s>=t||i<=e}):r}function Na(r,e,t){var n;let s=null;return(n=r.field(gs,!1))===null||n===void 0||n.between(e,t,(i,o)=>{(!s||s.from>i)&&(s={from:i,to:o})}),s}function PC(r,e,t){let n=!1;return r.between(e,e,(s,i)=>{s==e&&i==t&&(n=!0)}),n}function Zg(r,e){return r.field(gs,!1)?e:e.concat(je.appendConfig.of(Lg()))}const TC=r=>{for(let e of Bg(r)){let t=za(r.state,e.from,e.to);if(t)return r.dispatch({effects:Zg(r.state,[Ol.of(t),Eg(r,t)])}),!0}return!1},MC=r=>{if(!r.state.field(gs,!1))return!1;let e=[];for(let t of Bg(r)){let n=Na(r.state,t.from,t.to);n&&e.push(Qo.of(n),Eg(r,n,!1))}return e.length&&r.dispatch({effects:e}),e.length>0};function Eg(r,e,t=!0){let n=r.state.doc.lineAt(e.from).number,s=r.state.doc.lineAt(e.to).number;return Se.announce.of(`${r.state.phrase(t?"Folded lines":"Unfolded lines")} ${n} ${r.state.phrase("to")} ${s}.`)}const AC=r=>{let{state:e}=r,t=[];for(let n=0;n<e.doc.length;){let s=r.lineBlockAt(n),i=za(e,s.from,s.to);i&&t.push(Ol.of(i)),n=(i?r.lineBlockAt(i.to):s).to+1}return t.length&&r.dispatch({effects:Zg(r.state,t)}),!!t.length},_C=r=>{let e=r.state.field(gs,!1);if(!e||!e.size)return!1;let t=[];return e.between(0,r.state.doc.length,(n,s)=>{t.push(Qo.of({from:n,to:s}))}),r.dispatch({effects:t}),!0},RC=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:TC},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:MC},{key:"Ctrl-Alt-[",run:AC},{key:"Ctrl-Alt-]",run:_C}],BC={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},Dg=Ce.define({combine(r){return sn(r,BC)}});function Lg(r){return[gs,LC]}function Xg(r,e){let{state:t}=r,n=t.facet(Dg),s=o=>{let a=r.lineBlockAt(r.posAtDOM(o.target)),l=Na(r.state,a.from,a.to);l&&r.dispatch({effects:Qo.of(l)}),o.preventDefault()};if(n.placeholderDOM)return n.placeholderDOM(r,s,e);let i=document.createElement("span");return i.textContent=n.placeholderText,i.setAttribute("aria-label",t.phrase("folded code")),i.title=t.phrase("unfold"),i.className="cm-foldPlaceholder",i.onclick=s,i}const of=Le.replace({widget:new class extends on{toDOM(r){return Xg(r,null)}}});class ZC extends on{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Xg(e,this.value)}}const EC={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class Wl extends kn{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}}function DC(r={}){let e={...EC,...r},t=new Wl(e,!0),n=new Wl(e,!1),s=bt.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(zn)!=o.state.facet(zn)||o.startState.field(gs,!1)!=o.state.field(gs,!1)||ft(o.startState)!=ft(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let a=new xn;for(let l of o.viewportLineBlocks){let c=Na(o.state,l.from,l.to)?n:za(o.state,l.from,l.to)?t:null;c&&a.add(l.from,l.from,c)}return a.finish()}}),{domEventHandlers:i}=e;return[s,Z5({class:"cm-foldGutter",markers(o){var a;return((a=o.plugin(s))===null||a===void 0?void 0:a.markers)||et.empty},initialSpacer(){return new Wl(e,!1)},domEventHandlers:{...i,click:(o,a,l)=>{if(i.click&&i.click(o,a,l))return!0;let c=Na(o.state,a.from,a.to);if(c)return o.dispatch({effects:Qo.of(c)}),!0;let u=za(o.state,a.from,a.to);return u?(o.dispatch({effects:Ol.of(u)}),!0):!1}}}),Lg()]}const LC=Se.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Po{constructor(e,t){this.specs=e;let n;function s(a){let l=Ln.newName();return(n||(n=Object.create(null)))["."+l]=a,l}const i=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,o=t.scope;this.scope=o instanceof yr?a=>a.prop(os)==o.data:o?a=>a==o:void 0,this.style=Qg(e.map(a=>({tag:a.tag,class:a.class||s(Object.assign({},a,{tag:null}))})),{all:i}).style,this.module=n?new Ln(n):null,this.themeType=t.themeType}static define(e,t){return new Po(e,t||{})}}const tu=Ce.define(),Ig=Ce.define({combine(r){return r.length?[r[0]]:null}});function jl(r){let e=r.facet(tu);return e.length?e:r.facet(Ig)}function Vg(r,e){let t=[IC],n;return r instanceof Po&&(r.module&&t.push(Se.styleModule.of(r.module)),n=r.themeType),e?.fallback?t.push(Ig.of(r)):n?t.push(tu.computeN([Se.darkTheme],s=>s.facet(Se.darkTheme)==(n=="dark")?[r]:[])):t.push(tu.of(r)),t}class XC{constructor(e){this.markCache=Object.create(null),this.tree=ft(e.state),this.decorations=this.buildDeco(e,jl(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=ft(e.state),n=jl(e.state),s=n!=jl(e.startState),{viewport:i}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length<i.to&&!s&&t.type==this.tree.type&&o>=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||s)&&(this.tree=t,this.decorations=this.buildDeco(e.view,n),this.decoratedTo=i.to)}buildDeco(e,t){if(!t||!this.tree.length)return Le.none;let n=new xn;for(let{from:s,to:i}of e.visibleRanges)uC(this.tree,t,(o,a,l)=>{n.add(o,a,this.markCache[l]||(this.markCache[l]=Le.mark({class:l})))},s,i);return n.finish()}}const IC=wn.high(bt.fromClass(XC,{decorations:r=>r.decorations})),VC=Po.define([{tag:$.meta,color:"#404740"},{tag:$.link,textDecoration:"underline"},{tag:$.heading,textDecoration:"underline",fontWeight:"bold"},{tag:$.emphasis,fontStyle:"italic"},{tag:$.strong,fontWeight:"bold"},{tag:$.strikethrough,textDecoration:"line-through"},{tag:$.keyword,color:"#708"},{tag:[$.atom,$.bool,$.url,$.contentSeparator,$.labelName],color:"#219"},{tag:[$.literal,$.inserted],color:"#164"},{tag:[$.string,$.deleted],color:"#a11"},{tag:[$.regexp,$.escape,$.special($.string)],color:"#e40"},{tag:$.definition($.variableName),color:"#00f"},{tag:$.local($.variableName),color:"#30a"},{tag:[$.typeName,$.namespace],color:"#085"},{tag:$.className,color:"#167"},{tag:[$.special($.variableName),$.macroName],color:"#256"},{tag:$.definition($.propertyName),color:"#00c"},{tag:$.comment,color:"#940"},{tag:$.invalid,color:"#f00"}]),zC=Se.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),zg=1e4,Ng="()[]{}",Wg=Ce.define({combine(r){return sn(r,{afterCursor:!0,brackets:Ng,maxScanDistance:zg,renderMatch:jC})}}),NC=Le.mark({class:"cm-matchingBracket"}),WC=Le.mark({class:"cm-nonmatchingBracket"});function jC(r){let e=[],t=r.matched?NC:WC;return e.push(t.range(r.start.from,r.start.to)),r.end&&e.push(t.range(r.end.from,r.end.to)),e}function af(r){let e=[],t=r.facet(Wg);for(let n of r.selection.ranges){if(!n.empty)continue;let s=en(r,n.head,-1,t)||n.head>0&&en(r,n.head-1,1,t)||t.afterCursor&&(en(r,n.head,1,t)||n.head<r.doc.length&&en(r,n.head+1,-1,t));s&&(e=e.concat(t.renderMatch(s,r)))}return Le.set(e,!0)}const qC=bt.fromClass(class{constructor(r){this.paused=!1,this.decorations=af(r.state)}update(r){(r.docChanged||r.selectionSet||this.paused)&&(r.view.composing?(this.decorations=this.decorations.map(r.changes),this.paused=!0):(this.decorations=af(r.state),this.paused=!1))}},{decorations:r=>r.decorations}),YC=[qC,zC];function FC(r={}){return[Wg.of(r),YC]}const jg=new Ye;function ru(r,e,t){let n=r.prop(e<0?Ye.openedBy:Ye.closedBy);if(n)return n;if(r.name.length==1){let s=t.indexOf(r.name);if(s>-1&&s%2==(e<0?1:0))return[t[s+e]]}return null}function nu(r){let e=r.type.prop(jg);return e?e(r.node):r}function en(r,e,t,n={}){let s=n.maxScanDistance||zg,i=n.brackets||Ng,o=ft(r),a=o.resolveInner(e,t);for(let l=a;l;l=l.parent){let c=ru(l.type,t,i);if(c&&l.from<l.to){let u=nu(l);if(u&&(t>0?e>=u.from&&e<u.to:e>u.from&&e<=u.to))return UC(r,e,t,l,u,c,i)}}return GC(r,e,t,o,a.type,s,i)}function UC(r,e,t,n,s,i,o){let a=n.parent,l={from:s.from,to:s.to},c=0,u=a?.cursor();if(u&&(t<0?u.childBefore(n.from):u.childAfter(n.to)))do if(t<0?u.to<=n.from:u.from>=n.to){if(c==0&&i.indexOf(u.type.name)>-1&&u.from<u.to){let h=nu(u);return{start:l,end:h?{from:h.from,to:h.to}:void 0,matched:!0}}else if(ru(u.type,t,o))c++;else if(ru(u.type,-t,o)){if(c==0){let h=nu(u);return{start:l,end:h&&h.from<h.to?{from:h.from,to:h.to}:void 0,matched:!1}}c--}}while(t<0?u.prevSibling():u.nextSibling());return{start:l,matched:!1}}function GC(r,e,t,n,s,i,o){let a=t<0?r.sliceDoc(e-1,e):r.sliceDoc(e,e+1),l=o.indexOf(a);if(l<0||l%2==0!=t>0)return null;let c={from:t<0?e-1:e,to:t>0?e+1:e},u=r.doc.iterRange(e,t>0?r.doc.length:0),h=0;for(let p=0;!u.next().done&&p<=i;){let f=u.value;t<0&&(p+=f.length);let g=e+p*t;for(let O=t>0?0:f.length-1,x=t>0?f.length:-1;O!=x;O+=t){let b=o.indexOf(f[O]);if(!(b<0||n.resolveInner(g+O,1).type!=s))if(b%2==0==t>0)h++;else{if(h==1)return{start:c,end:{from:g+O,to:g+O+1},matched:b>>1==l>>1};h--}}t>0&&(p+=f.length)}return u.done?{start:c,matched:!1}:null}const HC=Object.create(null),lf=[Pt.none],cf=[],uf=Object.create(null),KC=Object.create(null);for(let[r,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])KC[r]=JC(HC,e);function ql(r,e){cf.indexOf(r)>-1||(cf.push(r),console.warn(e))}function JC(r,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let u=r[c]||$[c];u?typeof u=="function"?l.length?l=l.map(u):ql(c,`Modifier ${c} used at start of tag`):l.length?ql(c,`Tag ${c} used as modifier`):l=Array.isArray(u)?u:[u]:ql(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let n=e.replace(/ /g,"_"),s=n+" "+t.map(a=>a.id),i=uf[s];if(i)return i.id;let o=uf[s]=Pt.define({id:lf.length,name:n,props:[ti({[n]:t})]});return lf.push(o),o.id}dt.RTL,dt.LTR;const eQ=r=>{let{state:e}=r,t=e.doc.lineAt(e.selection.main.from),n=sh(r.state,t.from);return n.line?tQ(r):n.block?nQ(r):!1};function nh(r,e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let s=r(e,t);return s?(n(t.update(s)),!0):!1}}const tQ=nh(oQ,0),rQ=nh(qg,0),nQ=nh((r,e)=>qg(r,e,iQ(e)),0);function sh(r,e){let t=r.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}const Pi=50;function sQ(r,{open:e,close:t},n,s){let i=r.sliceDoc(n-Pi,n),o=r.sliceDoc(s,s+Pi),a=/\s*$/.exec(i)[0].length,l=/^\s*/.exec(o)[0].length,c=i.length-a;if(i.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:n-a,margin:a&&1},close:{pos:s+l,margin:l&&1}};let u,h;s-n<=2*Pi?u=h=r.sliceDoc(n,s):(u=r.sliceDoc(n,n+Pi),h=r.sliceDoc(s-Pi,s));let p=/^\s*/.exec(u)[0].length,f=/\s*$/.exec(h)[0].length,g=h.length-f-t.length;return u.slice(p,p+e.length)==e&&h.slice(g,g+t.length)==t?{open:{pos:n+p+e.length,margin:/\s/.test(u.charAt(p+e.length))?1:0},close:{pos:s-f-t.length,margin:/\s/.test(h.charAt(g-1))?1:0}}:null}function iQ(r){let e=[];for(let t of r.selection.ranges){let n=r.doc.lineAt(t.from),s=t.to<=n.to?n:r.doc.lineAt(t.to);s.from>n.from&&s.from==t.to&&(s=t.to==n.to+1?n:r.doc.lineAt(t.to-1));let i=e.length-1;i>=0&&e[i].to>n.from?e[i].to=s.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:s.to})}return e}function qg(r,e,t=e.selection.ranges){let n=t.map(i=>sh(e,i.from).block);if(!n.every(i=>i))return null;let s=t.map((i,o)=>sQ(e,n[o],i.from,i.to));if(r!=2&&!s.every(i=>i))return{changes:e.changes(t.map((i,o)=>s[o]?[]:[{from:i.from,insert:n[o].open+" "},{from:i.to,insert:" "+n[o].close}]))};if(r!=1&&s.some(i=>i)){let i=[];for(let o=0,a;o<s.length;o++)if(a=s[o]){let l=n[o],{open:c,close:u}=a;i.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:u.pos-u.margin,to:u.pos+l.close.length})}return{changes:i}}return null}function oQ(r,e,t=e.selection.ranges){let n=[],s=-1;e:for(let{from:i,to:o}of t){let a=n.length,l=1e9,c;for(let u=i;u<=o;){let h=e.doc.lineAt(u);if(c==null&&(c=sh(e,h.from).line,!c))continue e;if(h.from>s&&(i==o||o>h.from)){s=h.from;let p=/^\s*/.exec(h.text)[0].length,f=p==h.length,g=h.text.slice(p,p+c.length)==c?p:-1;p<h.text.length&&p<l&&(l=p),n.push({line:h,comment:g,token:c,indent:p,empty:f,single:!1})}u=h.to+1}if(l<1e9)for(let u=a;u<n.length;u++)n[u].indent<n[u].line.text.length&&(n[u].indent=l);n.length==a+1&&(n[a].single=!0)}if(r!=2&&n.some(i=>i.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:a,token:l,indent:c,empty:u,single:h}of n)(h||!u)&&i.push({from:a.from+c,insert:l+" "});let o=e.changes(i);return{changes:o,selection:e.selection.map(o,1)}}else if(r!=1&&n.some(i=>i.comment>=0)){let i=[];for(let{line:o,comment:a,token:l}of n)if(a>=0){let c=o.from+a,u=c+l.length;o.text[u-o.from]==" "&&u++,i.push({from:c,to:u})}return{changes:i}}return null}const su=Sn.define(),aQ=Sn.define(),lQ=Ce.define(),Yg=Ce.define({combine(r){return sn(r,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,s)=>e(n,s)||t(n,s)})}}),Fg=_t.define({create(){return tn.empty},update(r,e){let t=e.state.facet(Yg),n=e.annotation(su);if(n){let l=rr.fromTransaction(e,n.selection),c=n.side,u=c==0?r.undone:r.done;return l?u=Wa(u,u.length,t.minDepth,l):u=Hg(u,e.startState.selection),new tn(c==0?n.rest:u,c==0?u:n.rest)}let s=e.annotation(aQ);if((s=="full"||s=="before")&&(r=r.isolate()),e.annotation(kt.addToHistory)===!1)return e.changes.empty?r:r.addMapping(e.changes.desc);let i=rr.fromTransaction(e),o=e.annotation(kt.time),a=e.annotation(kt.userEvent);return i?r=r.addChanges(i,o,a,t,e):e.selection&&(r=r.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(s=="full"||s=="after")&&(r=r.isolate()),r},toJSON(r){return{done:r.done.map(e=>e.toJSON()),undone:r.undone.map(e=>e.toJSON())}},fromJSON(r){return new tn(r.done.map(rr.fromJSON),r.undone.map(rr.fromJSON))}});function cQ(r={}){return[Fg,Yg.of(r),Se.domEventHandlers({beforeinput(e,t){let n=e.inputType=="historyUndo"?Ug:e.inputType=="historyRedo"?iu:null;return n?(e.preventDefault(),n(t)):!1}})]}function vl(r,e){return function({state:t,dispatch:n}){if(!e&&t.readOnly)return!1;let s=t.field(Fg,!1);if(!s)return!1;let i=s.pop(r,t,e);return i?(n(i),!0):!1}}const Ug=vl(0,!1),iu=vl(1,!1),uQ=vl(0,!0),hQ=vl(1,!0);class rr{constructor(e,t,n,s,i){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=s,this.selectionsAfter=i}setSelAfter(e){return new rr(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,n;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(n=this.startSelection)===null||n===void 0?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new rr(e.changes&&Ct.fromJSON(e.changes),[],e.mapped&&rn.fromJSON(e.mapped),e.startSelection&&re.fromJSON(e.startSelection),e.selectionsAfter.map(re.fromJSON))}static fromTransaction(e,t){let n=kr;for(let s of e.startState.facet(lQ)){let i=s(e);i.length&&(n=n.concat(i))}return!n.length&&e.changes.empty?null:new rr(e.changes.invert(e.startState.doc),n,void 0,t||e.startState.selection,kr)}static selection(e){return new rr(void 0,kr,void 0,void 0,e)}}function Wa(r,e,t,n){let s=e+1>t+20?e-t-1:0,i=r.slice(s,e);return i.push(n),i}function dQ(r,e){let t=[],n=!1;return r.iterChangedRanges((s,i)=>t.push(s,i)),e.iterChangedRanges((s,i,o,a)=>{for(let l=0;l<t.length;){let c=t[l++],u=t[l++];a>=c&&o<=u&&(n=!0)}}),n}function fQ(r,e){return r.ranges.length==e.ranges.length&&r.ranges.filter((t,n)=>t.empty!=e.ranges[n].empty).length===0}function Gg(r,e){return r.length?e.length?r.concat(e):r:e}const kr=[],pQ=200;function Hg(r,e){if(r.length){let t=r[r.length-1],n=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-pQ));return n.length&&n[n.length-1].eq(e)?r:(n.push(e),Wa(r,r.length-1,1e9,t.setSelAfter(n)))}else return[rr.selection([e])]}function mQ(r){let e=r[r.length-1],t=r.slice();return t[r.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function Yl(r,e){if(!r.length)return r;let t=r.length,n=kr;for(;t;){let s=gQ(r[t-1],e,n);if(s.changes&&!s.changes.empty||s.effects.length){let i=r.slice(0,t);return i[t-1]=s,i}else e=s.mapped,t--,n=s.selectionsAfter}return n.length?[rr.selection(n)]:kr}function gQ(r,e,t){let n=Gg(r.selectionsAfter.length?r.selectionsAfter.map(a=>a.map(e)):kr,t);if(!r.changes)return rr.selection(n);let s=r.changes.map(e),i=e.mapDesc(r.changes,!0),o=r.mapped?r.mapped.composeDesc(i):i;return new rr(s,je.mapEffects(r.effects,e),o,r.startSelection.map(i),n)}const OQ=/^(input\.type|delete)($|\.)/;class tn{constructor(e,t,n=0,s=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=s}isolate(){return this.prevTime?new tn(this.done,this.undone):this}addChanges(e,t,n,s,i){let o=this.done,a=o[o.length-1];return a&&a.changes&&!a.changes.empty&&e.changes&&(!n||OQ.test(n))&&(!a.selectionsAfter.length&&t-this.prevTime<s.newGroupDelay&&s.joinToEvent(i,dQ(a.changes,e.changes))||n=="input.type.compose")?o=Wa(o,o.length-1,s.minDepth,new rr(e.changes.compose(a.changes),Gg(je.mapEffects(e.effects,a.changes),a.effects),a.mapped,a.startSelection,kr)):o=Wa(o,o.length,s.minDepth,e),new tn(o,kr,t,n)}addSelection(e,t,n,s){let i=this.done.length?this.done[this.done.length-1].selectionsAfter:kr;return i.length>0&&t-this.prevTime<s&&n==this.prevUserEvent&&n&&/^select($|\.)/.test(n)&&fQ(i[i.length-1],e)?this:new tn(Hg(this.done,e),this.undone,t,n)}addMapping(e){return new tn(Yl(this.done,e),Yl(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,n){let s=e==0?this.done:this.undone;if(s.length==0)return null;let i=s[s.length-1],o=i.selectionsAfter[0]||(i.startSelection?i.startSelection.map(i.changes.invertedDesc,1):t.selection);if(n&&i.selectionsAfter.length)return t.update({selection:i.selectionsAfter[i.selectionsAfter.length-1],annotations:su.of({side:e,rest:mQ(s),selection:o}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(i.changes){let a=s.length==1?kr:s.slice(0,s.length-1);return i.mapped&&(a=Yl(a,i.mapped)),t.update({changes:i.changes,selection:i.startSelection,effects:i.effects,annotations:su.of({side:e,rest:a,selection:o}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}}tn.empty=new tn(kr,kr);const vQ=[{key:"Mod-z",run:Ug,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:iu,preventDefault:!0},{linux:"Ctrl-Shift-z",run:iu,preventDefault:!0},{key:"Mod-u",run:uQ,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:hQ,preventDefault:!0}];function ni(r,e){return re.create(r.ranges.map(e),r.mainIndex)}function Zr(r,e){return r.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function Er({state:r,dispatch:e},t){let n=ni(r.selection,t);return n.eq(r.selection,!0)?!1:(e(Zr(r,n)),!0)}function bl(r,e){return re.cursor(e?r.to:r.from)}function Kg(r,e){return Er(r,t=>t.empty?r.moveByChar(t,e):bl(t,e))}function jt(r){return r.textDirectionAt(r.state.selection.main.head)==dt.LTR}const Jg=r=>Kg(r,!jt(r)),eO=r=>Kg(r,jt(r));function tO(r,e){return Er(r,t=>t.empty?r.moveByGroup(t,e):bl(t,e))}const bQ=r=>tO(r,!jt(r)),xQ=r=>tO(r,jt(r));function yQ(r,e,t){if(e.type.prop(t))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(r.sliceDoc(e.from,e.to)))||e.firstChild}function xl(r,e,t){let n=ft(r).resolveInner(e.head),s=t?Ye.closedBy:Ye.openedBy;for(let l=e.head;;){let c=t?n.childAfter(l):n.childBefore(l);if(!c)break;yQ(r,c,s)?n=c:l=t?c.to:c.from}let i=n.type.prop(s),o,a;return i&&(o=t?en(r,n.from,1):en(r,n.to,-1))&&o.matched?a=t?o.end.to:o.end.from:a=t?n.to:n.from,re.cursor(a,t?-1:1)}const kQ=r=>Er(r,e=>xl(r.state,e,!jt(r))),wQ=r=>Er(r,e=>xl(r.state,e,jt(r)));function rO(r,e){return Er(r,t=>{if(!t.empty)return bl(t,e);let n=r.moveVertically(t,e);return n.head!=t.head?n:r.moveToLineBoundary(t,e)})}const nO=r=>rO(r,!1),sO=r=>rO(r,!0);function iO(r){let e=r.scrollDOM.clientHeight<r.scrollDOM.scrollHeight-2,t=0,n=0,s;if(e){for(let i of r.state.facet(Se.scrollMargins)){let o=i(r);o?.top&&(t=Math.max(o?.top,t)),o?.bottom&&(n=Math.max(o?.bottom,n))}s=r.scrollDOM.clientHeight-t-n}else s=(r.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:t,marginBottom:n,selfScroll:e,height:Math.max(r.defaultLineHeight,s-5)}}function oO(r,e){let t=iO(r),{state:n}=r,s=ni(n.selection,o=>o.empty?r.moveVertically(o,e,t.height):bl(o,e));if(s.eq(n.selection))return!1;let i;if(t.selfScroll){let o=r.coordsAtPos(n.selection.main.head),a=r.scrollDOM.getBoundingClientRect(),l=a.top+t.marginTop,c=a.bottom-t.marginBottom;o&&o.top>l&&o.bottom<c&&(i=Se.scrollIntoView(s.main.head,{y:"start",yMargin:o.top-l}))}return r.dispatch(Zr(n,s),{effects:i}),!0}const hf=r=>oO(r,!1),ou=r=>oO(r,!0);function Wn(r,e,t){let n=r.lineBlockAt(e.head),s=r.moveToLineBoundary(e,t);if(s.head==e.head&&s.head!=(t?n.to:n.from)&&(s=r.moveToLineBoundary(e,t,!1)),!t&&s.head==n.from&&n.length){let i=/^\s*/.exec(r.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;i&&e.head!=n.from+i&&(s=re.cursor(n.from+i))}return s}const SQ=r=>Er(r,e=>Wn(r,e,!0)),$Q=r=>Er(r,e=>Wn(r,e,!1)),CQ=r=>Er(r,e=>Wn(r,e,!jt(r))),QQ=r=>Er(r,e=>Wn(r,e,jt(r))),PQ=r=>Er(r,e=>re.cursor(r.lineBlockAt(e.head).from,1)),TQ=r=>Er(r,e=>re.cursor(r.lineBlockAt(e.head).to,-1));function MQ(r,e,t){let n=!1,s=ni(r.selection,i=>{let o=en(r,i.head,-1)||en(r,i.head,1)||i.head>0&&en(r,i.head-1,1)||i.head<r.doc.length&&en(r,i.head+1,-1);if(!o||!o.end)return i;n=!0;let a=o.start.from==i.head?o.end.to:o.end.from;return re.cursor(a)});return n?(e(Zr(r,s)),!0):!1}const AQ=({state:r,dispatch:e})=>MQ(r,e);function Cr(r,e){let t=ni(r.state.selection,n=>{let s=e(n);return re.range(n.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return t.eq(r.state.selection)?!1:(r.dispatch(Zr(r.state,t)),!0)}function aO(r,e){return Cr(r,t=>r.moveByChar(t,e))}const lO=r=>aO(r,!jt(r)),cO=r=>aO(r,jt(r));function uO(r,e){return Cr(r,t=>r.moveByGroup(t,e))}const _Q=r=>uO(r,!jt(r)),RQ=r=>uO(r,jt(r)),BQ=r=>Cr(r,e=>xl(r.state,e,!jt(r))),ZQ=r=>Cr(r,e=>xl(r.state,e,jt(r)));function hO(r,e){return Cr(r,t=>r.moveVertically(t,e))}const dO=r=>hO(r,!1),fO=r=>hO(r,!0);function pO(r,e){return Cr(r,t=>r.moveVertically(t,e,iO(r).height))}const df=r=>pO(r,!1),ff=r=>pO(r,!0),EQ=r=>Cr(r,e=>Wn(r,e,!0)),DQ=r=>Cr(r,e=>Wn(r,e,!1)),LQ=r=>Cr(r,e=>Wn(r,e,!jt(r))),XQ=r=>Cr(r,e=>Wn(r,e,jt(r))),IQ=r=>Cr(r,e=>re.cursor(r.lineBlockAt(e.head).from)),VQ=r=>Cr(r,e=>re.cursor(r.lineBlockAt(e.head).to)),pf=({state:r,dispatch:e})=>(e(Zr(r,{anchor:0})),!0),mf=({state:r,dispatch:e})=>(e(Zr(r,{anchor:r.doc.length})),!0),gf=({state:r,dispatch:e})=>(e(Zr(r,{anchor:r.selection.main.anchor,head:0})),!0),Of=({state:r,dispatch:e})=>(e(Zr(r,{anchor:r.selection.main.anchor,head:r.doc.length})),!0),zQ=({state:r,dispatch:e})=>(e(r.update({selection:{anchor:0,head:r.doc.length},userEvent:"select"})),!0),NQ=({state:r,dispatch:e})=>{let t=yl(r).map(({from:n,to:s})=>re.range(n,Math.min(s+1,r.doc.length)));return e(r.update({selection:re.create(t),userEvent:"select"})),!0},WQ=({state:r,dispatch:e})=>{let t=ni(r.selection,n=>{let s=ft(r),i=s.resolveStack(n.from,1);if(n.empty){let o=s.resolveStack(n.from,-1);o.node.from>=i.node.from&&o.node.to<=i.node.to&&(i=o)}for(let o=i;o;o=o.next){let{node:a}=o;if((a.from<n.from&&a.to>=n.to||a.to>n.to&&a.from<=n.from)&&o.next)return re.range(a.to,a.from)}return n});return t.eq(r.selection)?!1:(e(Zr(r,t)),!0)};function mO(r,e){let{state:t}=r,n=t.selection,s=t.selection.ranges.slice();for(let i of t.selection.ranges){let o=t.doc.lineAt(i.head);if(e?o.to<r.state.doc.length:o.from>0)for(let a=i;;){let l=r.moveVertically(a,e);if(l.head<o.from||l.head>o.to){s.some(c=>c.head==l.head)||s.push(l);break}else{if(l.head==a.head)break;a=l}}}return s.length==n.ranges.length?!1:(r.dispatch(Zr(t,re.create(s,s.length-1))),!0)}const jQ=r=>mO(r,!1),qQ=r=>mO(r,!0),YQ=({state:r,dispatch:e})=>{let t=r.selection,n=null;return t.ranges.length>1?n=re.create([t.main]):t.main.empty||(n=re.create([re.cursor(t.main.head)])),n?(e(Zr(r,n)),!0):!1};function To(r,e){if(r.state.readOnly)return!1;let t="delete.selection",{state:n}=r,s=n.changeByRange(i=>{let{from:o,to:a}=i;if(o==a){let l=e(i);l<o?(t="delete.backward",l=ea(r,l,!1)):l>o&&(t="delete.forward",l=ea(r,l,!0)),o=Math.min(o,l),a=Math.max(a,l)}else o=ea(r,o,!1),a=ea(r,a,!0);return o==a?{range:i}:{changes:{from:o,to:a},range:re.cursor(o,o<i.head?-1:1)}});return s.changes.empty?!1:(r.dispatch(n.update(s,{scrollIntoView:!0,userEvent:t,effects:t=="delete.selection"?Se.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function ea(r,e,t){if(r instanceof Se)for(let n of r.state.facet(Se.atomicRanges).map(s=>s(r)))n.between(e,e,(s,i)=>{s<e&&i>e&&(e=t?i:s)});return e}const gO=(r,e,t)=>To(r,n=>{let s=n.from,{state:i}=r,o=i.doc.lineAt(s),a,l;if(t&&!e&&s>o.from&&s<o.from+200&&!/[^ \t]/.test(a=o.text.slice(0,s-o.from))){if(a[a.length-1]==" ")return s-1;let c=Rr(a,i.tabSize),u=c%Va(i)||Va(i);for(let h=0;h<u&&a[a.length-1-h]==" ";h++)s--;l=s}else l=Mt(o.text,s-o.from,e,e)+o.from,l==s&&o.number!=(e?i.doc.lines:1)?l+=e?1:-1:!e&&/[\ufe00-\ufe0f]/.test(o.text.slice(l-o.from,s-o.from))&&(l=Mt(o.text,l-o.from,!1,!1)+o.from);return l}),au=r=>gO(r,!1,!0),OO=r=>gO(r,!0,!1),vO=(r,e)=>To(r,t=>{let n=t.head,{state:s}=r,i=s.doc.lineAt(n),o=s.charCategorizer(n);for(let a=null;;){if(n==(e?i.to:i.from)){n==t.head&&i.number!=(e?s.doc.lines:1)&&(n+=e?1:-1);break}let l=Mt(i.text,n-i.from,e)+i.from,c=i.text.slice(Math.min(n,l)-i.from,Math.max(n,l)-i.from),u=o(c);if(a!=null&&u!=a)break;(c!=" "||n!=t.head)&&(a=u),n=l}return n}),bO=r=>vO(r,!1),FQ=r=>vO(r,!0),UQ=r=>To(r,e=>{let t=r.lineBlockAt(e.head).to;return e.head<t?t:Math.min(r.state.doc.length,e.head+1)}),GQ=r=>To(r,e=>{let t=r.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),HQ=r=>To(r,e=>{let t=r.moveToLineBoundary(e,!0).head;return e.head<t?t:Math.min(r.state.doc.length,e.head+1)}),KQ=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=r.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:st.of(["",""])},range:re.cursor(n.from)}));return e(r.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},JQ=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=r.changeByRange(n=>{if(!n.empty||n.from==0||n.from==r.doc.length)return{range:n};let s=n.from,i=r.doc.lineAt(s),o=s==i.from?s-1:Mt(i.text,s-i.from,!1)+i.from,a=s==i.to?s+1:Mt(i.text,s-i.from,!0)+i.from;return{changes:{from:o,to:a,insert:r.doc.slice(s,a).append(r.doc.slice(o,s))},range:re.cursor(a)}});return t.changes.empty?!1:(e(r.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function yl(r){let e=[],t=-1;for(let n of r.selection.ranges){let s=r.doc.lineAt(n.from),i=r.doc.lineAt(n.to);if(!n.empty&&n.to==i.from&&(i=r.doc.lineAt(n.to-1)),t>=s.number){let o=e[e.length-1];o.to=i.to,o.ranges.push(n)}else e.push({from:s.from,to:i.to,ranges:[n]});t=i.number+1}return e}function xO(r,e,t){if(r.readOnly)return!1;let n=[],s=[];for(let i of yl(r)){if(t?i.to==r.doc.length:i.from==0)continue;let o=r.doc.lineAt(t?i.to+1:i.from-1),a=o.length+1;if(t){n.push({from:i.to,to:o.to},{from:i.from,insert:o.text+r.lineBreak});for(let l of i.ranges)s.push(re.range(Math.min(r.doc.length,l.anchor+a),Math.min(r.doc.length,l.head+a)))}else{n.push({from:o.from,to:i.from},{from:i.to,insert:r.lineBreak+o.text});for(let l of i.ranges)s.push(re.range(l.anchor-a,l.head-a))}}return n.length?(e(r.update({changes:n,scrollIntoView:!0,selection:re.create(s,r.selection.mainIndex),userEvent:"move.line"})),!0):!1}const eP=({state:r,dispatch:e})=>xO(r,e,!1),tP=({state:r,dispatch:e})=>xO(r,e,!0);function yO(r,e,t){if(r.readOnly)return!1;let n=[];for(let i of yl(r))t?n.push({from:i.from,insert:r.doc.slice(i.from,i.to)+r.lineBreak}):n.push({from:i.to,insert:r.lineBreak+r.doc.slice(i.from,i.to)});let s=r.changes(n);return e(r.update({changes:s,selection:r.selection.map(s,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}const rP=({state:r,dispatch:e})=>yO(r,e,!1),nP=({state:r,dispatch:e})=>yO(r,e,!0),sP=r=>{if(r.state.readOnly)return!1;let{state:e}=r,t=e.changes(yl(e).map(({from:s,to:i})=>(s>0?s--:i<e.doc.length&&i++,{from:s,to:i}))),n=ni(e.selection,s=>{let i;if(r.lineWrapping){let o=r.lineBlockAt(s.head),a=r.coordsAtPos(s.head,s.assoc||1);a&&(i=o.bottom+r.documentTop-a.bottom+r.defaultLineHeight/2)}return r.moveVertically(s,!0,i)}).map(t);return r.dispatch({changes:t,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0};function iP(r,e){if(/\(\)|\[\]|\{\}/.test(r.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=ft(r).resolveInner(e),n=t.childBefore(e),s=t.childAfter(e),i;return n&&s&&n.to<=e&&s.from>=e&&(i=n.type.prop(Ye.closedBy))&&i.indexOf(s.name)>-1&&r.doc.lineAt(n.to).from==r.doc.lineAt(s.from).from&&!/\S/.test(r.sliceDoc(n.to,s.from))?{from:n.to,to:s.from}:null}const vf=kO(!1),oP=kO(!0);function kO(r){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(s=>{let{from:i,to:o}=s,a=e.doc.lineAt(i),l=!r&&i==o&&iP(e,i);r&&(i=o=(o<=a.to?a:e.doc.lineAt(o)).to);let c=new gl(e,{simulateBreak:i,simulateDoubleBreak:!!l}),u=th(c,i);for(u==null&&(u=Rr(/^\s*/.exec(e.doc.lineAt(i).text)[0],e.tabSize));o<a.to&&/\s/.test(a.text[o-a.from]);)o++;l?{from:i,to:o}=l:i>a.from&&i<a.from+100&&!/\S/.test(a.text.slice(0,i))&&(i=a.from);let h=["",no(e,u)];return l&&h.push(no(e,c.lineIndent(a.from,-1))),{changes:{from:i,to:o,insert:st.of(h)},range:re.cursor(i+1+h[1].length)}});return t(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0}}function ih(r,e){let t=-1;return r.changeByRange(n=>{let s=[];for(let o=n.from;o<=n.to;){let a=r.doc.lineAt(o);a.number>t&&(n.empty||n.to>a.from)&&(e(a,s,n),t=a.number),o=a.to+1}let i=r.changes(s);return{changes:s,range:re.range(i.mapPos(n.anchor,1),i.mapPos(n.head,1))}})}const aP=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=Object.create(null),n=new gl(r,{overrideIndentation:i=>{let o=t[i];return o??-1}}),s=ih(r,(i,o,a)=>{let l=th(n,i.from);if(l==null)return;/\S/.test(i.text)||(l=0);let c=/^\s*/.exec(i.text)[0],u=no(r,l);(c!=u||a.from<i.from+c.length)&&(t[i.from]=l,o.push({from:i.from,to:i.from+c.length,insert:u}))});return s.changes.empty||e(r.update(s,{userEvent:"indent"})),!0},lP=({state:r,dispatch:e})=>r.readOnly?!1:(e(r.update(ih(r,(t,n)=>{n.push({from:t.from,insert:r.facet($o)})}),{userEvent:"input.indent"})),!0),cP=({state:r,dispatch:e})=>r.readOnly?!1:(e(r.update(ih(r,(t,n)=>{let s=/^\s*/.exec(t.text)[0];if(!s)return;let i=Rr(s,r.tabSize),o=0,a=no(r,Math.max(0,i-Va(r)));for(;o<s.length&&o<a.length&&s.charCodeAt(o)==a.charCodeAt(o);)o++;n.push({from:t.from+o,to:t.from+s.length,insert:a.slice(o)})}),{userEvent:"delete.dedent"})),!0),uP=r=>(r.setTabFocusMode(),!0),hP=[{key:"Ctrl-b",run:Jg,shift:lO,preventDefault:!0},{key:"Ctrl-f",run:eO,shift:cO},{key:"Ctrl-p",run:nO,shift:dO},{key:"Ctrl-n",run:sO,shift:fO},{key:"Ctrl-a",run:PQ,shift:IQ},{key:"Ctrl-e",run:TQ,shift:VQ},{key:"Ctrl-d",run:OO},{key:"Ctrl-h",run:au},{key:"Ctrl-k",run:UQ},{key:"Ctrl-Alt-h",run:bO},{key:"Ctrl-o",run:KQ},{key:"Ctrl-t",run:JQ},{key:"Ctrl-v",run:ou}],dP=[{key:"ArrowLeft",run:Jg,shift:lO,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:bQ,shift:_Q,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:CQ,shift:LQ,preventDefault:!0},{key:"ArrowRight",run:eO,shift:cO,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:xQ,shift:RQ,preventDefault:!0},{mac:"Cmd-ArrowRight",run:QQ,shift:XQ,preventDefault:!0},{key:"ArrowUp",run:nO,shift:dO,preventDefault:!0},{mac:"Cmd-ArrowUp",run:pf,shift:gf},{mac:"Ctrl-ArrowUp",run:hf,shift:df},{key:"ArrowDown",run:sO,shift:fO,preventDefault:!0},{mac:"Cmd-ArrowDown",run:mf,shift:Of},{mac:"Ctrl-ArrowDown",run:ou,shift:ff},{key:"PageUp",run:hf,shift:df},{key:"PageDown",run:ou,shift:ff},{key:"Home",run:$Q,shift:DQ,preventDefault:!0},{key:"Mod-Home",run:pf,shift:gf},{key:"End",run:SQ,shift:EQ,preventDefault:!0},{key:"Mod-End",run:mf,shift:Of},{key:"Enter",run:vf,shift:vf},{key:"Mod-a",run:zQ},{key:"Backspace",run:au,shift:au,preventDefault:!0},{key:"Delete",run:OO,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:bO,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:FQ,preventDefault:!0},{mac:"Mod-Backspace",run:GQ,preventDefault:!0},{mac:"Mod-Delete",run:HQ,preventDefault:!0}].concat(hP.map(r=>({mac:r.key,run:r.run,shift:r.shift}))),fP=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:kQ,shift:BQ},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:wQ,shift:ZQ},{key:"Alt-ArrowUp",run:eP},{key:"Shift-Alt-ArrowUp",run:rP},{key:"Alt-ArrowDown",run:tP},{key:"Shift-Alt-ArrowDown",run:nP},{key:"Mod-Alt-ArrowUp",run:jQ},{key:"Mod-Alt-ArrowDown",run:qQ},{key:"Escape",run:YQ},{key:"Mod-Enter",run:oP},{key:"Alt-l",mac:"Ctrl-l",run:NQ},{key:"Mod-i",run:WQ,preventDefault:!0},{key:"Mod-[",run:cP},{key:"Mod-]",run:lP},{key:"Mod-Alt-\\",run:aP},{key:"Shift-Mod-k",run:sP},{key:"Shift-Mod-\\",run:AQ},{key:"Mod-/",run:eQ},{key:"Alt-A",run:rQ},{key:"Ctrl-m",mac:"Shift-Alt-m",run:uP}].concat(dP),bf=typeof String.prototype.normalize=="function"?r=>r.normalize("NFKD"):r=>r;class Us{constructor(e,t,n=0,s=e.length,i,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(n,s),this.bufferStart=n,this.normalize=i?a=>i(bf(a)):bf,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Ht(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=Mu(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=Gr(e);let s=this.normalize(t);if(s.length)for(let i=0,o=n;;i++){let a=s.charCodeAt(i),l=this.match(a,o,this.bufferPos+this.bufferStart);if(i==s.length-1){if(l)return this.value=l,this;break}o==n&&i<t.length&&t.charCodeAt(i)==a&&o++}}}match(e,t,n){let s=null;for(let i=0;i<this.matches.length;i+=2){let o=this.matches[i],a=!1;this.query.charCodeAt(o)==e&&(o==this.query.length-1?s={from:this.matches[i+1],to:n}:(this.matches[i]++,a=!0)),a||(this.matches.splice(i,2),i-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?s={from:t,to:n}:this.matches.push(1,t)),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}}typeof Symbol<"u"&&(Us.prototype[Symbol.iterator]=function(){return this});const wO={from:-1,to:-1,match:/.*/.exec("")},oh="gm"+(/x/.unicode==null?"":"u");class SO{constructor(e,t,n,s=0,i=e.length){if(this.text=e,this.to=i,this.curLine="",this.done=!1,this.value=wO,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new $O(e,t,n,s,i);this.re=new RegExp(t,oh+(n?.ignoreCase?"i":"")),this.test=n?.test,this.iter=e.iter();let o=e.lineAt(s);this.curLineStart=o.from,this.matchPos=ja(e,s),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let n=this.curLineStart+t.index,s=n+t[0].length;if(this.matchPos=ja(this.text,s+(n==s?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(n<s||n>this.value.to)&&(!this.test||this.test(n,s,t)))return this.value={from:n,to:s,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}}const Fl=new WeakMap;class Es{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,n){let s=Fl.get(e);if(!s||s.from>=n||s.to<=t){let a=new Es(t,e.sliceString(t,n));return Fl.set(e,a),a}if(s.from==t&&s.to==n)return s;let{text:i,from:o}=s;return o>t&&(i=e.sliceString(t,o)+i,o=t),s.to<n&&(i+=e.sliceString(s.to,n)),Fl.set(e,new Es(o,i)),new Es(t,i.slice(t-o,n-o))}}class $O{constructor(e,t,n,s,i){this.text=e,this.to=i,this.done=!1,this.value=wO,this.matchPos=ja(e,s),this.re=new RegExp(t,oh+(n?.ignoreCase?"i":"")),this.test=n?.test,this.flat=Es.get(e,s,this.chunkEnd(s+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let n=this.flat.from+t.index,s=n+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,s,t)))return this.value={from:n,to:s,match:t},this.matchPos=ja(this.text,s+(n==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Es.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(SO.prototype[Symbol.iterator]=$O.prototype[Symbol.iterator]=function(){return this});function pP(r){try{return new RegExp(r,oh),!0}catch{return!1}}function ja(r,e){if(e>=r.length)return e;let t=r.lineAt(e),n;for(;e<t.to&&(n=t.text.charCodeAt(e-t.from))>=56320&&n<57344;)e++;return e}const mP=r=>{let{state:e}=r,t=String(e.doc.lineAt(r.state.selection.main.head).number),{close:n,result:s}=A5(r,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:t},focus:!0,submitLabel:e.phrase("go")});return s.then(i=>{let o=i&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(i.elements.line.value);if(!o){r.dispatch({effects:n});return}let a=e.doc.lineAt(e.selection.main.head),[,l,c,u,h]=o,p=u?+u.slice(1):0,f=c?+c:a.number;if(c&&h){let x=f/100;l&&(x=x*(l=="-"?-1:1)+a.number/e.doc.lines),f=Math.round(e.doc.lines*x)}else c&&l&&(f=f*(l=="-"?-1:1)+a.number);let g=e.doc.line(Math.max(1,Math.min(e.doc.lines,f))),O=re.cursor(g.from+Math.max(0,Math.min(p,g.length)));r.dispatch({effects:[n,Se.scrollIntoView(O.from,{y:"center"})],selection:O})}),!0},gP={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},OP=Ce.define({combine(r){return sn(r,gP,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})}});function vP(r){return[wP,kP]}const bP=Le.mark({class:"cm-selectionMatch"}),xP=Le.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function xf(r,e,t,n){return(t==0||r(e.sliceDoc(t-1,t))!=mt.Word)&&(n==e.doc.length||r(e.sliceDoc(n,n+1))!=mt.Word)}function yP(r,e,t,n){return r(e.sliceDoc(t,t+1))==mt.Word&&r(e.sliceDoc(n-1,n))==mt.Word}const kP=bt.fromClass(class{constructor(r){this.decorations=this.getDeco(r)}update(r){(r.selectionSet||r.docChanged||r.viewportChanged)&&(this.decorations=this.getDeco(r.view))}getDeco(r){let e=r.state.facet(OP),{state:t}=r,n=t.selection;if(n.ranges.length>1)return Le.none;let s=n.main,i,o=null;if(s.empty){if(!e.highlightWordAroundCursor)return Le.none;let l=t.wordAt(s.head);if(!l)return Le.none;o=t.charCategorizer(s.head),i=t.sliceDoc(l.from,l.to)}else{let l=s.to-s.from;if(l<e.minSelectionLength||l>200)return Le.none;if(e.wholeWords){if(i=t.sliceDoc(s.from,s.to),o=t.charCategorizer(s.head),!(xf(o,t,s.from,s.to)&&yP(o,t,s.from,s.to)))return Le.none}else if(i=t.sliceDoc(s.from,s.to),!i)return Le.none}let a=[];for(let l of r.visibleRanges){let c=new Us(t.doc,i,l.from,l.to);for(;!c.next().done;){let{from:u,to:h}=c.value;if((!o||xf(o,t,u,h))&&(s.empty&&u<=s.from&&h>=s.to?a.push(xP.range(u,h)):(u>=s.to||h<=s.from)&&a.push(bP.range(u,h)),a.length>e.maxMatches))return Le.none}}return Le.set(a)}},{decorations:r=>r.decorations}),wP=Se.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),SP=({state:r,dispatch:e})=>{let{selection:t}=r,n=re.create(t.ranges.map(s=>r.wordAt(s.head)||re.cursor(s.head)),t.mainIndex);return n.eq(t)?!1:(e(r.update({selection:n})),!0)};function $P(r,e){let{main:t,ranges:n}=r.selection,s=r.wordAt(t.head),i=s&&s.from==t.from&&s.to==t.to;for(let o=!1,a=new Us(r.doc,e,n[n.length-1].to);;)if(a.next(),a.done){if(o)return null;a=new Us(r.doc,e,0,Math.max(0,n[n.length-1].from-1)),o=!0}else{if(o&&n.some(l=>l.from==a.value.from))continue;if(i){let l=r.wordAt(a.value.from);if(!l||l.from!=a.value.from||l.to!=a.value.to)continue}return a.value}}const CP=({state:r,dispatch:e})=>{let{ranges:t}=r.selection;if(t.some(i=>i.from===i.to))return SP({state:r,dispatch:e});let n=r.sliceDoc(t[0].from,t[0].to);if(r.selection.ranges.some(i=>r.sliceDoc(i.from,i.to)!=n))return!1;let s=$P(r,n);return s?(e(r.update({selection:r.selection.addRange(re.range(s.from,s.to),!1),effects:Se.scrollIntoView(s.to)})),!0):!1},si=Ce.define({combine(r){return sn(r,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new IP(e),scrollToMatch:e=>Se.scrollIntoView(e)})}});class CO{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||pP(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(t,n)=>n=="n"?`
|
|
22
|
+
`:n=="r"?"\r":n=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new _P(this):new TP(this)}getCursor(e,t=0,n){let s=e.doc?e:tt.create({doc:e});return n==null&&(n=s.doc.length),this.regexp?Cs(this,s,t,n):$s(this,s,t,n)}}class QO{constructor(e){this.spec=e}}function QP(r,e,t){return(n,s,i,o)=>{if(t&&!t(n,s,i,o))return!1;let a=n>=o&&s<=o+i.length?i.slice(n-o,s-o):e.doc.sliceString(n,s);return r(a,e,n,s)}}function $s(r,e,t,n){let s;return r.wholeWord&&(s=PP(e.doc,e.charCategorizer(e.selection.main.head))),r.test&&(s=QP(r.test,e,s)),new Us(e.doc,r.unquoted,t,n,r.caseSensitive?void 0:i=>i.toLowerCase(),s)}function PP(r,e){return(t,n,s,i)=>((i>t||i+s.length<n)&&(i=Math.max(0,t-2),s=r.sliceString(i,Math.min(r.length,n+2))),(e(qa(s,t-i))!=mt.Word||e(Ya(s,t-i))!=mt.Word)&&(e(Ya(s,n-i))!=mt.Word||e(qa(s,n-i))!=mt.Word))}class TP extends QO{constructor(e){super(e)}nextMatch(e,t,n){let s=$s(this.spec,e,n,e.doc.length).nextOverlapping();if(s.done){let i=Math.min(e.doc.length,t+this.spec.unquoted.length);s=$s(this.spec,e,0,i).nextOverlapping()}return s.done||s.value.from==t&&s.value.to==n?null:s.value}prevMatchInRange(e,t,n){for(let s=n;;){let i=Math.max(t,s-1e4-this.spec.unquoted.length),o=$s(this.spec,e,i,s),a=null;for(;!o.nextOverlapping().done;)a=o.value;if(a)return a;if(i==t)return null;s-=1e4}}prevMatch(e,t,n){let s=this.prevMatchInRange(e,0,t);return s||(s=this.prevMatchInRange(e,Math.max(0,n-this.spec.unquoted.length),e.doc.length)),s&&(s.from!=t||s.to!=n)?s:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let n=$s(this.spec,e,0,e.doc.length),s=[];for(;!n.next().done;){if(s.length>=t)return null;s.push(n.value)}return s}highlight(e,t,n,s){let i=$s(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}function MP(r,e,t){return(n,s,i)=>(!t||t(n,s,i))&&r(i[0],e,n,s)}function Cs(r,e,t,n){let s;return r.wholeWord&&(s=AP(e.charCategorizer(e.selection.main.head))),r.test&&(s=MP(r.test,e,s)),new SO(e.doc,r.search,{ignoreCase:!r.caseSensitive,test:s},t,n)}function qa(r,e){return r.slice(Mt(r,e,!1),e)}function Ya(r,e){return r.slice(e,Mt(r,e))}function AP(r){return(e,t,n)=>!n[0].length||(r(qa(n.input,n.index))!=mt.Word||r(Ya(n.input,n.index))!=mt.Word)&&(r(Ya(n.input,n.index+n[0].length))!=mt.Word||r(qa(n.input,n.index+n[0].length))!=mt.Word)}class _P extends QO{nextMatch(e,t,n){let s=Cs(this.spec,e,n,e.doc.length).next();return s.done&&(s=Cs(this.spec,e,0,t).next()),s.done?null:s.value}prevMatchInRange(e,t,n){for(let s=1;;s++){let i=Math.max(t,n-s*1e4),o=Cs(this.spec,e,i,n),a=null;for(;!o.next().done;)a=o.value;if(a&&(i==t||a.from>i+10))return a;if(i==t)return null}}prevMatch(e,t,n){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let s=n.length;s>0;s--){let i=+n.slice(0,s);if(i>0&&i<e.match.length)return e.match[i]+n.slice(s)}return t})}matchAll(e,t){let n=Cs(this.spec,e,0,e.doc.length),s=[];for(;!n.next().done;){if(s.length>=t)return null;s.push(n.value)}return s}highlight(e,t,n,s){let i=Cs(this.spec,e,Math.max(0,t-250),Math.min(n+250,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}const so=je.define(),ah=je.define(),En=_t.define({create(r){return new Ul(lu(r).create(),null)},update(r,e){for(let t of e.effects)t.is(so)?r=new Ul(t.value.create(),r.panel):t.is(ah)&&(r=new Ul(r.query,t.value?lh:null));return r},provide:r=>Ki.from(r,e=>e.panel)});class Ul{constructor(e,t){this.query=e,this.panel=t}}const RP=Le.mark({class:"cm-searchMatch"}),BP=Le.mark({class:"cm-searchMatch cm-searchMatch-selected"}),ZP=bt.fromClass(class{constructor(r){this.view=r,this.decorations=this.highlight(r.state.field(En))}update(r){let e=r.state.field(En);(e!=r.startState.field(En)||r.docChanged||r.selectionSet||r.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:r,panel:e}){if(!e||!r.spec.valid)return Le.none;let{view:t}=this,n=new xn;for(let s=0,i=t.visibleRanges,o=i.length;s<o;s++){let{from:a,to:l}=i[s];for(;s<o-1&&l>i[s+1].from-500;)l=i[++s].to;r.highlight(t.state,a,l,(c,u)=>{let h=t.state.selection.ranges.some(p=>p.from==c&&p.to==u);n.add(c,u,h?BP:RP)})}return n.finish()}},{decorations:r=>r.decorations});function Mo(r){return e=>{let t=e.state.field(En,!1);return t&&t.query.spec.valid?r(e,t):MO(e)}}const Fa=Mo((r,{query:e})=>{let{to:t}=r.state.selection.main,n=e.nextMatch(r.state,t,t);if(!n)return!1;let s=re.single(n.from,n.to),i=r.state.facet(si);return r.dispatch({selection:s,effects:[ch(r,n),i.scrollToMatch(s.main,r)],userEvent:"select.search"}),TO(r),!0}),Ua=Mo((r,{query:e})=>{let{state:t}=r,{from:n}=t.selection.main,s=e.prevMatch(t,n,n);if(!s)return!1;let i=re.single(s.from,s.to),o=r.state.facet(si);return r.dispatch({selection:i,effects:[ch(r,s),o.scrollToMatch(i.main,r)],userEvent:"select.search"}),TO(r),!0}),EP=Mo((r,{query:e})=>{let t=e.matchAll(r.state,1e3);return!t||!t.length?!1:(r.dispatch({selection:re.create(t.map(n=>re.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),DP=({state:r,dispatch:e})=>{let t=r.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:n,to:s}=t.main,i=[],o=0;for(let a=new Us(r.doc,r.sliceDoc(n,s));!a.next().done;){if(i.length>1e3)return!1;a.value.from==n&&(o=i.length),i.push(re.range(a.value.from,a.value.to))}return e(r.update({selection:re.create(i,o),userEvent:"select.search.matches"})),!0},yf=Mo((r,{query:e})=>{let{state:t}=r,{from:n,to:s}=t.selection.main;if(t.readOnly)return!1;let i=e.nextMatch(t,n,n);if(!i)return!1;let o=i,a=[],l,c,u=[];o.from==n&&o.to==s&&(c=t.toText(e.getReplacement(o)),a.push({from:o.from,to:o.to,insert:c}),o=e.nextMatch(t,o.from,o.to),u.push(Se.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(n).number)+".")));let h=r.state.changes(a);return o&&(l=re.single(o.from,o.to).map(h),u.push(ch(r,o)),u.push(t.facet(si).scrollToMatch(l.main,r))),r.dispatch({changes:h,selection:l,effects:u,userEvent:"input.replace"}),!0}),LP=Mo((r,{query:e})=>{if(r.state.readOnly)return!1;let t=e.matchAll(r.state,1e9).map(s=>{let{from:i,to:o}=s;return{from:i,to:o,insert:e.getReplacement(s)}});if(!t.length)return!1;let n=r.state.phrase("replaced $ matches",t.length)+".";return r.dispatch({changes:t,effects:Se.announce.of(n),userEvent:"input.replace.all"}),!0});function lh(r){return r.state.facet(si).createPanel(r)}function lu(r,e){var t,n,s,i,o;let a=r.selection.main,l=a.empty||a.to>a.from+100?"":r.sliceDoc(a.from,a.to);if(e&&!l)return e;let c=r.facet(si);return new CO({search:((t=e?.literal)!==null&&t!==void 0?t:c.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:(n=e?.caseSensitive)!==null&&n!==void 0?n:c.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:c.literal,regexp:(i=e?.regexp)!==null&&i!==void 0?i:c.regexp,wholeWord:(o=e?.wholeWord)!==null&&o!==void 0?o:c.wholeWord})}function PO(r){let e=Fu(r,lh);return e&&e.dom.querySelector("[main-field]")}function TO(r){let e=PO(r);e&&e==r.root.activeElement&&e.select()}const MO=r=>{let e=r.state.field(En,!1);if(e&&e.panel){let t=PO(r);if(t&&t!=r.root.activeElement){let n=lu(r.state,e.query.spec);n.valid&&r.dispatch({effects:so.of(n)}),t.focus(),t.select()}}else r.dispatch({effects:[ah.of(!0),e?so.of(lu(r.state,e.query.spec)):je.appendConfig.of(zP)]});return!0},AO=r=>{let e=r.state.field(En,!1);if(!e||!e.panel)return!1;let t=Fu(r,lh);return t&&t.dom.contains(r.root.activeElement)&&r.focus(),r.dispatch({effects:ah.of(!1)}),!0},XP=[{key:"Mod-f",run:MO,scope:"editor search-panel"},{key:"F3",run:Fa,shift:Ua,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Fa,shift:Ua,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:AO,scope:"editor search-panel"},{key:"Mod-Shift-l",run:DP},{key:"Mod-Alt-g",run:mP},{key:"Mod-d",run:CP,preventDefault:!0}];class IP{constructor(e){this.view=e;let t=this.query=e.state.field(En).query.spec;this.commit=this.commit.bind(this),this.searchField=ct("input",{value:t.search,placeholder:ar(e,"Find"),"aria-label":ar(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=ct("input",{value:t.replace,placeholder:ar(e,"Replace"),"aria-label":ar(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=ct("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=ct("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=ct("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function n(s,i,o){return ct("button",{class:"cm-button",name:s,onclick:i,type:"button"},o)}this.dom=ct("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,n("next",()=>Fa(e),[ar(e,"next")]),n("prev",()=>Ua(e),[ar(e,"previous")]),n("select",()=>EP(e),[ar(e,"all")]),ct("label",null,[this.caseField,ar(e,"match case")]),ct("label",null,[this.reField,ar(e,"regexp")]),ct("label",null,[this.wordField,ar(e,"by word")]),...e.state.readOnly?[]:[ct("br"),this.replaceField,n("replace",()=>yf(e),[ar(e,"replace")]),n("replaceAll",()=>LP(e),[ar(e,"replace all")])],ct("button",{name:"close",onclick:()=>AO(e),"aria-label":ar(e,"close"),type:"button"},["×"])])}commit(){let e=new CO({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:so.of(e)}))}keydown(e){N$(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Ua:Fa)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),yf(this.view))}update(e){for(let t of e.transactions)for(let n of t.effects)n.is(so)&&!n.value.eq(this.query)&&this.setQuery(n.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(si).top}}function ar(r,e){return r.state.phrase(e)}const ta=30,ra=/[\s\.,:;?!]/;function ch(r,{from:e,to:t}){let n=r.state.doc.lineAt(e),s=r.state.doc.lineAt(t).to,i=Math.max(n.from,e-ta),o=Math.min(s,t+ta),a=r.state.sliceDoc(i,o);if(i!=n.from){for(let l=0;l<ta;l++)if(!ra.test(a[l+1])&&ra.test(a[l])){a=a.slice(l);break}}if(o!=s){for(let l=a.length-1;l>a.length-ta;l--)if(!ra.test(a[l-1])&&ra.test(a[l])){a=a.slice(0,l);break}}return Se.announce.of(`${r.state.phrase("current match")}. ${a} ${r.state.phrase("on line")} ${n.number}.`)}const VP=Se.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),zP=[En,wn.low(ZP),VP];class uh{constructor(e,t,n,s){this.state=e,this.pos=t,this.explicit=n,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=ft(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),n=Math.max(t.from,this.pos-250),s=t.text.slice(n-t.from,this.pos-t.from),i=s.search(RO(e,!1));return i<0?null:{from:n+i,to:this.pos,text:s.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,n){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),n&&n.onDocChange&&(this.abortOnDocChange=!0))}}function kf(r){let e=Object.keys(r).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function NP(r){let e=Object.create(null),t=Object.create(null);for(let{label:s}of r){e[s[0]]=!0;for(let i=1;i<s.length;i++)t[s[i]]=!0}let n=kf(e)+kf(t)+"*$";return[new RegExp("^"+n),new RegExp(n)]}function _O(r){let e=r.map(s=>typeof s=="string"?{label:s}:s),[t,n]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:NP(e);return s=>{let i=s.matchBefore(n);return i||s.explicit?{from:i?i.from:s.pos,options:e,validFor:t}:null}}function WP(r,e){return t=>{for(let n=ft(t.state).resolveInner(t.pos,-1);n;n=n.parent){if(r.indexOf(n.name)>-1)return null;if(n.type.isTop)break}return e(t)}}class wf{constructor(e,t,n,s){this.completion=e,this.source=t,this.match=n,this.score=s}}function hs(r){return r.selection.main.from}function RO(r,e){var t;let{source:n}=r,s=e&&n[0]!="^",i=n[n.length-1]!="$";return!s&&!i?r:new RegExp(`${s?"^":""}(?:${n})${i?"$":""}`,(t=r.flags)!==null&&t!==void 0?t:r.ignoreCase?"i":"")}const hh=Sn.define();function jP(r,e,t,n){let{main:s}=r.selection,i=t-s.from,o=n-s.from;return{...r.changeByRange(a=>{if(a!=s&&t!=n&&r.sliceDoc(a.from+i,a.from+o)!=r.sliceDoc(t,n))return{range:a};let l=r.toText(e);return{changes:{from:a.from+i,to:n==s.from?a.to:a.from+o,insert:l},range:re.cursor(a.from+i+l.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const Sf=new WeakMap;function qP(r){if(!Array.isArray(r))return r;let e=Sf.get(r);return e||Sf.set(r,e=_O(r)),e}const Ga=je.define(),io=je.define();class YP{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let t=0;t<e.length;){let n=Ht(e,t),s=Gr(n);this.chars.push(n);let i=e.slice(t,t+s),o=i.toUpperCase();this.folded.push(Ht(o==i?i.toLowerCase():o,0)),t+=s}this.astral=e.length!=this.chars.length}ret(e,t){return this.score=e,this.matched=t,this}match(e){if(this.pattern.length==0)return this.ret(-100,[]);if(e.length<this.pattern.length)return null;let{chars:t,folded:n,any:s,precise:i,byWord:o}=this;if(t.length==1){let w=Ht(e,0),Q=Gr(w),P=Q==e.length?0:-100;if(w!=t[0])if(w==n[0])P+=-200;else return null;return this.ret(P,[0,Q])}let a=e.indexOf(this.pattern);if(a==0)return this.ret(e.length==this.pattern.length?0:-100,[0,this.pattern.length]);let l=t.length,c=0;if(a<0){for(let w=0,Q=Math.min(e.length,200);w<Q&&c<l;){let P=Ht(e,w);(P==t[c]||P==n[c])&&(s[c++]=w),w+=Gr(P)}if(c<l)return null}let u=0,h=0,p=!1,f=0,g=-1,O=-1,x=/[a-z]/.test(e),b=!0;for(let w=0,Q=Math.min(e.length,200),P=0;w<Q&&h<l;){let E=Ht(e,w);a<0&&(u<l&&E==t[u]&&(i[u++]=w),f<l&&(E==t[f]||E==n[f]?(f==0&&(g=w),O=w+1,f++):f=0));let j,z=E<255?E>=48&&E<=57||E>=97&&E<=122?2:E>=65&&E<=90?1:0:(j=Mu(E))!=j.toLowerCase()?1:j!=j.toUpperCase()?2:0;(!w||z==1&&x||P==0&&z!=0)&&(t[h]==E||n[h]==E&&(p=!0)?o[h++]=w:o.length&&(b=!1)),P=z,w+=Gr(E)}return h==l&&o[0]==0&&b?this.result(-100+(p?-200:0),o,e):f==l&&g==0?this.ret(-200-e.length+(O==e.length?0:-100),[0,O]):a>-1?this.ret(-700-e.length,[a,a+this.pattern.length]):f==l?this.ret(-900-e.length,[g,O]):h==l?this.result(-100+(p?-200:0)+-700+(b?0:-1100),o,e):t.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,t,n){let s=[],i=0;for(let o of t){let a=o+(this.astral?Gr(Ht(n,o)):1);i&&s[i-1]==o?s[i-1]=a:(s[i++]=o,s[i++]=a)}return this.ret(e-n.length,s)}}class FP{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length<this.pattern.length)return null;let t=e.slice(0,this.pattern.length),n=t==this.pattern?0:t.toLowerCase()==this.folded?-200:null;return n==null?null:(this.matched=[0,t.length],this.score=n+(e.length==this.pattern.length?0:-100),this)}}const Tt=Ce.define({combine(r){return sn(r,{activateOnTyping:!0,activateOnCompletion:()=>!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:UP,filterStrict:!1,compareCompletions:(e,t)=>(e.sortText||e.label).localeCompare(t.sortText||t.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,tooltipClass:(e,t)=>n=>$f(e(n),t(n)),optionClass:(e,t)=>n=>$f(e(n),t(n)),addToOptions:(e,t)=>e.concat(t),filterStrict:(e,t)=>e||t})}});function $f(r,e){return r?e?r+" "+e:r:e}function UP(r,e,t,n,s,i){let o=r.textDirection==dt.RTL,a=o,l=!1,c="top",u,h,p=e.left-s.left,f=s.right-e.right,g=n.right-n.left,O=n.bottom-n.top;if(a&&p<Math.min(g,f)?a=!1:!a&&f<Math.min(g,p)&&(a=!0),g<=(a?p:f))u=Math.max(s.top,Math.min(t.top,s.bottom-O))-e.top,h=Math.min(400,a?p:f);else{l=!0,h=Math.min(400,(o?e.right:s.right-e.left)-30);let w=s.bottom-e.bottom;w>=O||w>e.top?u=t.bottom-e.top:(c="bottom",u=e.bottom-t.top)}let x=(e.bottom-e.top)/i.offsetHeight,b=(e.right-e.left)/i.offsetWidth;return{style:`${c}: ${u/x}px; max-width: ${h/b}px`,class:"cm-completionInfo-"+(l?o?"left-narrow":"right-narrow":a?"left":"right")}}function GP(r){let e=r.addToOptions.slice();return r.icons&&e.push({render(t){let n=document.createElement("div");return n.classList.add("cm-completionIcon"),t.type&&n.classList.add(...t.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),n.setAttribute("aria-hidden","true"),n},position:20}),e.push({render(t,n,s,i){let o=document.createElement("span");o.className="cm-completionLabel";let a=t.displayLabel||t.label,l=0;for(let c=0;c<i.length;){let u=i[c++],h=i[c++];u>l&&o.appendChild(document.createTextNode(a.slice(l,u)));let p=o.appendChild(document.createElement("span"));p.appendChild(document.createTextNode(a.slice(u,h))),p.className="cm-completionMatchedText",l=h}return l<a.length&&o.appendChild(document.createTextNode(a.slice(l))),o},position:50},{render(t){if(!t.detail)return null;let n=document.createElement("span");return n.className="cm-completionDetail",n.textContent=t.detail,n},position:80}),e.sort((t,n)=>t.position-n.position).map(t=>t.render)}function Gl(r,e,t){if(r<=t)return{from:0,to:r};if(e<0&&(e=0),e<=r>>1){let s=Math.floor(e/t);return{from:s*t,to:(s+1)*t}}let n=Math.floor((r-e)/t);return{from:r-(n+1)*t,to:r-n*t}}class HP{constructor(e,t,n){this.view=e,this.stateField=t,this.applyCompletion=n,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:l=>this.placeInfo(l),key:this},this.space=null,this.currentClass="";let s=e.state.field(t),{options:i,selected:o}=s.open,a=e.state.facet(Tt);this.optionContent=GP(a),this.optionClass=a.optionClass,this.tooltipClass=a.tooltipClass,this.range=Gl(i.length,o,a.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",l=>{let{options:c}=e.state.field(t).open;for(let u=l.target,h;u&&u!=this.dom;u=u.parentNode)if(u.nodeName=="LI"&&(h=/-(\d+)$/.exec(u.id))&&+h[1]<c.length){this.applyCompletion(e,c[+h[1]]),l.preventDefault();return}}),this.dom.addEventListener("focusout",l=>{let c=e.state.field(this.stateField,!1);c&&c.tooltip&&e.state.facet(Tt).closeOnBlur&&l.relatedTarget!=e.contentDOM&&e.dispatch({effects:io.of(null)})}),this.showOptions(i,s.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var t;let n=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),n!=s){let{options:i,selected:o,disabled:a}=n.open;(!s.open||s.open.options!=i)&&(this.range=Gl(i.length,o,e.state.facet(Tt).maxRenderedOptions),this.showOptions(i,n.id)),this.updateSel(),a!=((t=s.open)===null||t===void 0?void 0:t.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!a)}}updateTooltipClass(e){let t=this.tooltipClass(e);if(t!=this.currentClass){for(let n of this.currentClass.split(" "))n&&this.dom.classList.remove(n);for(let n of t.split(" "))n&&this.dom.classList.add(n);this.currentClass=t}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),t=e.open;(t.selected>-1&&t.selected<this.range.from||t.selected>=this.range.to)&&(this.range=Gl(t.options.length,t.selected,this.view.state.facet(Tt).maxRenderedOptions),this.showOptions(t.options,e.id));let n=this.updateSelectedOption(t.selected);if(n){this.destroyInfo();let{completion:s}=t.options[t.selected],{info:i}=s;if(!i)return;let o=typeof i=="string"?document.createTextNode(i):i(s);if(!o)return;"then"in o?o.then(a=>{a&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(a,s)}).catch(a=>tr(this.view.state,a,"completion info")):(this.addInfoPane(o,s),n.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,t){this.destroyInfo();let n=this.info=document.createElement("div");if(n.className="cm-tooltip cm-completionInfo",n.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)n.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:i}=e;n.appendChild(s),this.infoDestroy=i||null}this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let n=this.list.firstChild,s=this.range.from;n;n=n.nextSibling,s++)n.nodeName!="LI"||!n.id?s--:s==e?n.hasAttribute("aria-selected")||(n.setAttribute("aria-selected","true"),t=n):n.hasAttribute("aria-selected")&&(n.removeAttribute("aria-selected"),n.removeAttribute("aria-describedby"));return t&&JP(this.list,t),t}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let t=this.dom.getBoundingClientRect(),n=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),i=this.space;if(!i){let o=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return s.top>Math.min(i.bottom,t.bottom)-10||s.bottom<Math.max(i.top,t.top)+10?null:this.view.state.facet(Tt).positionInfo(this.view,t,s,n,i,this.dom)}placeInfo(e){this.info&&(e?(e.style&&(this.info.style.cssText=e.style),this.info.className="cm-tooltip cm-completionInfo "+(e.class||"")):this.info.style.cssText="top: -1e6px")}createListBox(e,t,n){const s=document.createElement("ul");s.id=t,s.setAttribute("role","listbox"),s.setAttribute("aria-expanded","true"),s.setAttribute("aria-label",this.view.state.phrase("Completions")),s.addEventListener("mousedown",o=>{o.target==s&&o.preventDefault()});let i=null;for(let o=n.from;o<n.to;o++){let{completion:a,match:l}=e[o],{section:c}=a;if(c){let p=typeof c=="string"?c:c.name;if(p!=i&&(o>n.from||n.from==0))if(i=p,typeof c!="string"&&c.header)s.appendChild(c.header(c));else{let f=s.appendChild(document.createElement("completion-section"));f.textContent=p}}const u=s.appendChild(document.createElement("li"));u.id=t+"-"+o,u.setAttribute("role","option");let h=this.optionClass(a);h&&(u.className=h);for(let p of this.optionContent){let f=p(a,this.view.state,this.view,l);f&&u.appendChild(f)}}return n.from&&s.classList.add("cm-completionListIncompleteTop"),n.to<e.length&&s.classList.add("cm-completionListIncompleteBottom"),s}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}}function KP(r,e){return t=>new HP(t,r,e)}function JP(r,e){let t=r.getBoundingClientRect(),n=e.getBoundingClientRect(),s=t.height/r.offsetHeight;n.top<t.top?r.scrollTop-=(t.top-n.top)/s:n.bottom>t.bottom&&(r.scrollTop+=(n.bottom-t.bottom)/s)}function Cf(r){return(r.boost||0)*100+(r.apply?10:0)+(r.info?5:0)+(r.type?1:0)}function e3(r,e){let t=[],n=null,s=null,i=u=>{t.push(u);let{section:h}=u.completion;if(h){n||(n=[]);let p=typeof h=="string"?h:h.name;n.some(f=>f.name==p)||n.push(typeof h=="string"?{name:p}:h)}},o=e.facet(Tt);for(let u of r)if(u.hasResult()){let h=u.result.getMatch;if(u.result.filter===!1)for(let p of u.result.options)i(new wf(p,u.source,h?h(p):[],1e9-t.length));else{let p=e.sliceDoc(u.from,u.to),f,g=o.filterStrict?new FP(p):new YP(p);for(let O of u.result.options)if(f=g.match(O.label)){let x=O.displayLabel?h?h(O,f.matched):[]:f.matched,b=f.score+(O.boost||0);if(i(new wf(O,u.source,x,b)),typeof O.section=="object"&&O.section.rank==="dynamic"){let{name:w}=O.section;s||(s=Object.create(null)),s[w]=Math.max(b,s[w]||-1e9)}}}}if(n){let u=Object.create(null),h=0,p=(f,g)=>(f.rank==="dynamic"&&g.rank==="dynamic"?s[g.name]-s[f.name]:0)||(typeof f.rank=="number"?f.rank:1e9)-(typeof g.rank=="number"?g.rank:1e9)||(f.name<g.name?-1:1);for(let f of n.sort(p))h-=1e5,u[f.name]=h;for(let f of t){let{section:g}=f.completion;g&&(f.score+=u[typeof g=="string"?g:g.name])}}let a=[],l=null,c=o.compareCompletions;for(let u of t.sort((h,p)=>p.score-h.score||c(h.completion,p.completion))){let h=u.completion;!l||l.label!=h.label||l.detail!=h.detail||l.type!=null&&h.type!=null&&l.type!=h.type||l.apply!=h.apply||l.boost!=h.boost?a.push(u):Cf(u.completion)>Cf(l)&&(a[a.length-1]=u),l=u.completion}return a}class Ms{constructor(e,t,n,s,i,o){this.options=e,this.attrs=t,this.tooltip=n,this.timestamp=s,this.selected=i,this.disabled=o}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new Ms(this.options,Qf(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,n,s,i,o){if(s&&!o&&e.some(c=>c.isPending))return s.setDisabled();let a=e3(e,t);if(!a.length)return s&&e.some(c=>c.isPending)?s.setDisabled():null;let l=t.facet(Tt).selectOnOpen?0:-1;if(s&&s.selected!=l&&s.selected!=-1){let c=s.options[s.selected].completion;for(let u=0;u<a.length;u++)if(a[u].completion==c){l=u;break}}return new Ms(a,Qf(n,l),{pos:e.reduce((c,u)=>u.hasResult()?Math.min(c,u.from):c,1e8),create:o3,above:i.aboveCursor},s?s.timestamp:Date.now(),l,!1)}map(e){return new Ms(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Ms(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class Ha{constructor(e,t,n){this.active=e,this.id=t,this.open=n}static start(){return new Ha(s3,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:t}=e,n=t.facet(Tt),i=(n.override||t.languageDataAt("autocomplete",hs(t)).map(qP)).map(l=>(this.active.find(u=>u.source==l)||new wr(l,this.active.some(u=>u.state!=0)?1:0)).update(e,n));i.length==this.active.length&&i.every((l,c)=>l==this.active[c])&&(i=this.active);let o=this.open,a=e.effects.some(l=>l.is(dh));o&&e.docChanged&&(o=o.map(e.changes)),e.selection||i.some(l=>l.hasResult()&&e.changes.touchesRange(l.from,l.to))||!t3(i,this.active)||a?o=Ms.build(i,t,this.id,o,n,a):o&&o.disabled&&!i.some(l=>l.isPending)&&(o=null),!o&&i.every(l=>!l.isPending)&&i.some(l=>l.hasResult())&&(i=i.map(l=>l.hasResult()?new wr(l.source,0):l));for(let l of e.effects)l.is(ZO)&&(o=o&&o.setSelected(l.value,this.id));return i==this.active&&o==this.open?this:new Ha(i,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?r3:n3}}function t3(r,e){if(r==e)return!0;for(let t=0,n=0;;){for(;t<r.length&&!r[t].hasResult();)t++;for(;n<e.length&&!e[n].hasResult();)n++;let s=t==r.length,i=n==e.length;if(s||i)return s==i;if(r[t++].result!=e[n++].result)return!1}}const r3={"aria-autocomplete":"list"},n3={};function Qf(r,e){let t={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":r};return e>-1&&(t["aria-activedescendant"]=r+"-"+e),t}const s3=[];function BO(r,e){if(r.isUserEvent("input.complete")){let n=r.annotation(hh);if(n&&e.activateOnCompletion(n))return 12}let t=r.isUserEvent("input.type");return t&&e.activateOnTyping?5:t?1:r.isUserEvent("delete.backward")?2:r.selection?8:r.docChanged?16:0}class wr{constructor(e,t,n=!1){this.source=e,this.state=t,this.explicit=n}hasResult(){return!1}get isPending(){return this.state==1}update(e,t){let n=BO(e,t),s=this;(n&8||n&16&&this.touches(e))&&(s=new wr(s.source,0)),n&4&&s.state==0&&(s=new wr(this.source,1)),s=s.updateFor(e,n);for(let i of e.effects)if(i.is(Ga))s=new wr(s.source,1,i.value);else if(i.is(io))s=new wr(s.source,0);else if(i.is(dh))for(let o of i.value)o.source==s.source&&(s=o);return s}updateFor(e,t){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(hs(e.state))}}class Ds extends wr{constructor(e,t,n,s,i,o){super(e,3,t),this.limit=n,this.result=s,this.from=i,this.to=o}hasResult(){return!0}updateFor(e,t){var n;if(!(t&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let i=e.changes.mapPos(this.from),o=e.changes.mapPos(this.to,1),a=hs(e.state);if(a>o||!s||t&2&&(hs(e.startState)==this.from||a<this.limit))return new wr(this.source,t&4?1:0);let l=e.changes.mapPos(this.limit);return i3(s.validFor,e.state,i,o)?new Ds(this.source,this.explicit,l,s,i,o):s.update&&(s=s.update(s,i,o,new uh(e.state,a,!1)))?new Ds(this.source,this.explicit,l,s,s.from,(n=s.to)!==null&&n!==void 0?n:hs(e.state)):new wr(this.source,1,this.explicit)}map(e){return e.empty?this:(this.result.map?this.result.map(this.result,e):this.result)?new Ds(this.source,this.explicit,e.mapPos(this.limit),this.result,e.mapPos(this.from),e.mapPos(this.to,1)):new wr(this.source,0)}touches(e){return e.changes.touchesRange(this.from,this.to)}}function i3(r,e,t,n){if(!r)return!1;let s=e.sliceDoc(t,n);return typeof r=="function"?r(s,t,n,e):RO(r,!0).test(s)}const dh=je.define({map(r,e){return r.map(t=>t.map(e))}}),ZO=je.define(),Kt=_t.define({create(){return Ha.start()},update(r,e){return r.update(e)},provide:r=>[Yu.from(r,e=>e.tooltip),Se.contentAttributes.from(r,e=>e.attrs)]});function fh(r,e){const t=e.completion.apply||e.completion.label;let n=r.state.field(Kt).active.find(s=>s.source==e.source);return n instanceof Ds?(typeof t=="string"?r.dispatch({...jP(r.state,t,n.from,n.to),annotations:hh.of(e.completion)}):t(r,e.completion,n.from,n.to),!0):!1}const o3=KP(Kt,fh);function na(r,e="option"){return t=>{let n=t.state.field(Kt,!1);if(!n||!n.open||n.open.disabled||Date.now()-n.open.timestamp<t.state.facet(Tt).interactionDelay)return!1;let s=1,i;e=="page"&&(i=pg(t,n.open.tooltip))&&(s=Math.max(2,Math.floor(i.dom.offsetHeight/i.dom.querySelector("li").offsetHeight)-1));let{length:o}=n.open.options,a=n.open.selected>-1?n.open.selected+s*(r?1:-1):r?0:o-1;return a<0?a=e=="page"?0:o-1:a>=o&&(a=e=="page"?o-1:0),t.dispatch({effects:ZO.of(a)}),!0}}const a3=r=>{let e=r.state.field(Kt,!1);return r.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestamp<r.state.facet(Tt).interactionDelay?!1:fh(r,e.open.options[e.open.selected])},Hl=r=>r.state.field(Kt,!1)?(r.dispatch({effects:Ga.of(!0)}),!0):!1,l3=r=>{let e=r.state.field(Kt,!1);return!e||!e.active.some(t=>t.state!=0)?!1:(r.dispatch({effects:io.of(null)}),!0)};class c3{constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}}const u3=50,h3=1e3,d3=bt.fromClass(class{constructor(r){this.view=r,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of r.state.field(Kt).active)e.isPending&&this.startQuery(e)}update(r){let e=r.state.field(Kt),t=r.state.facet(Tt);if(!r.selectionSet&&!r.docChanged&&r.startState.field(Kt)==e)return;let n=r.transactions.some(i=>{let o=BO(i,t);return o&8||(i.selection||i.docChanged)&&!(o&3)});for(let i=0;i<this.running.length;i++){let o=this.running[i];if(n||o.context.abortOnDocChange&&r.docChanged||o.updates.length+r.transactions.length>u3&&Date.now()-o.time>h3){for(let a of o.context.abortListeners)try{a()}catch(l){tr(this.view.state,l)}o.context.abortListeners=null,this.running.splice(i--,1)}else o.updates.push(...r.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),r.transactions.some(i=>i.effects.some(o=>o.is(Ga)))&&(this.pendingStart=!0);let s=this.pendingStart?50:t.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(i=>i.isPending&&!this.running.some(o=>o.active.source==i.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let i of r.transactions)i.isUserEvent("input.type")?this.composing=2:this.composing==2&&i.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:r}=this.view,e=r.field(Kt);for(let t of e.active)t.isPending&&!this.running.some(n=>n.active.source==t.source)&&this.startQuery(t);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Tt).updateSyncTime))}startQuery(r){let{state:e}=this.view,t=hs(e),n=new uh(e,t,r.explicit,this.view),s=new c3(r,n);this.running.push(s),Promise.resolve(r.source(n)).then(i=>{s.context.aborted||(s.done=i||null,this.scheduleAccept())},i=>{this.view.dispatch({effects:io.of(null)}),tr(this.view.state,i)})}scheduleAccept(){this.running.every(r=>r.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Tt).updateSyncTime))}accept(){var r;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],t=this.view.state.facet(Tt),n=this.view.state.field(Kt);for(let s=0;s<this.running.length;s++){let i=this.running[s];if(i.done===void 0)continue;if(this.running.splice(s--,1),i.done){let a=hs(i.updates.length?i.updates[0].startState:this.view.state),l=Math.min(a,i.done.from+(i.active.explicit?0:1)),c=new Ds(i.active.source,i.active.explicit,l,i.done,i.done.from,(r=i.done.to)!==null&&r!==void 0?r:a);for(let u of i.updates)c=c.update(u,t);if(c.hasResult()){e.push(c);continue}}let o=n.active.find(a=>a.source==i.active.source);if(o&&o.isPending)if(i.done==null){let a=new wr(i.active.source,0);for(let l of i.updates)a=a.update(l,t);a.isPending||e.push(a)}else this.startQuery(o)}(e.length||n.open&&n.open.disabled)&&this.view.dispatch({effects:dh.of(e)})}},{eventHandlers:{blur(r){let e=this.view.state.field(Kt,!1);if(e&&e.tooltip&&this.view.state.facet(Tt).closeOnBlur){let t=e.open&&pg(this.view,e.open.tooltip);(!t||!t.dom.contains(r.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:io.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:Ga.of(!1)}),20),this.composing=0}}}),f3=typeof navigator=="object"&&/Win/.test(navigator.platform),p3=wn.highest(Se.domEventHandlers({keydown(r,e){let t=e.state.field(Kt,!1);if(!t||!t.open||t.open.disabled||t.open.selected<0||r.key.length>1||r.ctrlKey&&!(f3&&r.altKey)||r.metaKey)return!1;let n=t.open.options[t.open.selected],s=t.active.find(o=>o.source==n.source),i=n.completion.commitCharacters||s.result.commitCharacters;return i&&i.indexOf(r.key)>-1&&fh(e,n),!1}})),EO=Se.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class m3{constructor(e,t,n,s){this.field=e,this.line=t,this.from=n,this.to=s}}class ph{constructor(e,t,n){this.field=e,this.from=t,this.to=n}map(e){let t=e.mapPos(this.from,-1,Dt.TrackDel),n=e.mapPos(this.to,1,Dt.TrackDel);return t==null||n==null?null:new ph(this.field,t,n)}}class mh{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let n=[],s=[t],i=e.doc.lineAt(t),o=/^\s*/.exec(i.text)[0];for(let l of this.lines){if(n.length){let c=o,u=/^\t*/.exec(l)[0].length;for(let h=0;h<u;h++)c+=e.facet($o);s.push(t+c.length-u),l=c+l.slice(u)}n.push(l),t+=l.length+1}let a=this.fieldPositions.map(l=>new ph(l.field,s[l.line]+l.from,s[l.line]+l.to));return{text:n,ranges:a}}static parse(e){let t=[],n=[],s=[],i;for(let o of e.split(/\r\n?|\n/)){for(;i=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let a=i[1]?+i[1]:null,l=i[2]||i[3]||"",c=-1,u=l.replace(/\\[{}]/g,h=>h[1]);for(let h=0;h<t.length;h++)(a!=null?t[h].seq==a:u&&t[h].name==u)&&(c=h);if(c<0){let h=0;for(;h<t.length&&(a==null||t[h].seq!=null&&t[h].seq<a);)h++;t.splice(h,0,{seq:a,name:u}),c=h;for(let p of s)p.field>=c&&p.field++}for(let h of s)if(h.line==n.length&&h.from>i.index){let p=i[2]?3+(i[1]||"").length:2;h.from-=p,h.to-=p}s.push(new m3(c,n.length,i.index,i.index+u.length)),o=o.slice(0,i.index)+l+o.slice(i.index+i[0].length)}o=o.replace(/\\([{}])/g,(a,l,c)=>{for(let u of s)u.line==n.length&&u.from>c&&(u.from--,u.to--);return l}),n.push(o)}return new mh(n,s)}}let g3=Le.widget({widget:new class extends on{toDOM(){let r=document.createElement("span");return r.className="cm-snippetFieldPosition",r}ignoreEvent(){return!1}}}),O3=Le.mark({class:"cm-snippetField"});class ii{constructor(e,t){this.ranges=e,this.active=t,this.deco=Le.set(e.map(n=>(n.from==n.to?g3:O3).range(n.from,n.to)),!0)}map(e){let t=[];for(let n of this.ranges){let s=n.map(e);if(!s)return null;t.push(s)}return new ii(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(n=>n.field==this.active&&n.from<=t.from&&n.to>=t.to))}}const Ao=je.define({map(r,e){return r&&r.map(e)}}),v3=je.define(),oo=_t.define({create(){return null},update(r,e){for(let t of e.effects){if(t.is(Ao))return t.value;if(t.is(v3)&&r)return new ii(r.ranges,t.value)}return r&&e.docChanged&&(r=r.map(e.changes)),r&&e.selection&&!r.selectionInsideField(e.selection)&&(r=null),r},provide:r=>Se.decorations.from(r,e=>e?e.deco:Le.none)});function gh(r,e){return re.create(r.filter(t=>t.field==e).map(t=>re.range(t.from,t.to)))}function b3(r){let e=mh.parse(r);return(t,n,s,i)=>{let{text:o,ranges:a}=e.instantiate(t.state,s),{main:l}=t.state.selection,c={changes:{from:s,to:i==l.from?l.to:i,insert:st.of(o)},scrollIntoView:!0,annotations:n?[hh.of(n),kt.userEvent.of("input.complete")]:void 0};if(a.length&&(c.selection=gh(a,0)),a.some(u=>u.field>0)){let u=new ii(a,0),h=c.effects=[Ao.of(u)];t.state.field(oo,!1)===void 0&&h.push(je.appendConfig.of([oo,S3,$3,EO]))}t.dispatch(t.state.update(c))}}function DO(r){return({state:e,dispatch:t})=>{let n=e.field(oo,!1);if(!n||r<0&&n.active==0)return!1;let s=n.active+r,i=r>0&&!n.ranges.some(o=>o.field==s+r);return t(e.update({selection:gh(n.ranges,s),effects:Ao.of(i?null:new ii(n.ranges,s)),scrollIntoView:!0})),!0}}const x3=({state:r,dispatch:e})=>r.field(oo,!1)?(e(r.update({effects:Ao.of(null)})),!0):!1,y3=DO(1),k3=DO(-1),w3=[{key:"Tab",run:y3,shift:k3},{key:"Escape",run:x3}],Pf=Ce.define({combine(r){return r.length?r[0]:w3}}),S3=wn.highest(ko.compute([Pf],r=>r.facet(Pf)));function Gt(r,e){return{...e,apply:b3(r)}}const $3=Se.domEventHandlers({mousedown(r,e){let t=e.state.field(oo,!1),n;if(!t||(n=e.posAtCoords({x:r.clientX,y:r.clientY}))==null)return!1;let s=t.ranges.find(i=>i.from<=n&&i.to>=n);return!s||s.field==t.active?!1:(e.dispatch({selection:gh(t.ranges,s.field),effects:Ao.of(t.ranges.some(i=>i.field>s.field)?new ii(t.ranges,s.field):null),scrollIntoView:!0}),!0)}}),ao={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},as=je.define({map(r,e){let t=e.mapPos(r,-1,Dt.TrackAfter);return t??void 0}}),Oh=new class extends Dn{};Oh.startSide=1;Oh.endSide=-1;const LO=_t.define({create(){return et.empty},update(r,e){if(r=r.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);r=r.update({filter:n=>n>=t.from&&n<=t.to})}for(let t of e.effects)t.is(as)&&(r=r.update({add:[Oh.range(t.value,t.value+1)]}));return r}});function C3(){return[P3,LO]}const Kl="()[]{}<>«»»«[]{}";function XO(r){for(let e=0;e<Kl.length;e+=2)if(Kl.charCodeAt(e)==r)return Kl.charAt(e+1);return Mu(r<128?r:r+1)}function IO(r,e){return r.languageDataAt("closeBrackets",e)[0]||ao}const Q3=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),P3=Se.inputHandler.of((r,e,t,n)=>{if((Q3?r.composing:r.compositionStarted)||r.state.readOnly)return!1;let s=r.state.selection.main;if(n.length>2||n.length==2&&Gr(Ht(n,0))==1||e!=s.from||t!=s.to)return!1;let i=A3(r.state,n);return i?(r.dispatch(i),!0):!1}),T3=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let n=IO(r,r.selection.main.head).brackets||ao.brackets,s=null,i=r.changeByRange(o=>{if(o.empty){let a=_3(r.doc,o.head);for(let l of n)if(l==a&&kl(r.doc,o.head)==XO(Ht(l,0)))return{changes:{from:o.head-l.length,to:o.head+l.length},range:re.cursor(o.head-l.length)}}return{range:s=o}});return s||e(r.update(i,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},M3=[{key:"Backspace",run:T3}];function A3(r,e){let t=IO(r,r.selection.main.head),n=t.brackets||ao.brackets;for(let s of n){let i=XO(Ht(s,0));if(e==s)return i==s?Z3(r,s,n.indexOf(s+s+s)>-1,t):R3(r,s,i,t.before||ao.before);if(e==i&&VO(r,r.selection.main.from))return B3(r,s,i)}return null}function VO(r,e){let t=!1;return r.field(LO).between(0,r.doc.length,n=>{n==e&&(t=!0)}),t}function kl(r,e){let t=r.sliceString(e,e+2);return t.slice(0,Gr(Ht(t,0)))}function _3(r,e){let t=r.sliceString(e-2,e);return Gr(Ht(t,0))==t.length?t:t.slice(1)}function R3(r,e,t,n){let s=null,i=r.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:as.of(o.to+e.length),range:re.range(o.anchor+e.length,o.head+e.length)};let a=kl(r.doc,o.head);return!a||/\s/.test(a)||n.indexOf(a)>-1?{changes:{insert:e+t,from:o.head},effects:as.of(o.head+e.length),range:re.cursor(o.head+e.length)}:{range:s=o}});return s?null:r.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function B3(r,e,t){let n=null,s=r.changeByRange(i=>i.empty&&kl(r.doc,i.head)==t?{changes:{from:i.head,to:i.head+t.length,insert:t},range:re.cursor(i.head+t.length)}:n={range:i});return n?null:r.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function Z3(r,e,t,n){let s=n.stringPrefixes||ao.stringPrefixes,i=null,o=r.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:e,from:a.to}],effects:as.of(a.to+e.length),range:re.range(a.anchor+e.length,a.head+e.length)};let l=a.head,c=kl(r.doc,l),u;if(c==e){if(Tf(r,l))return{changes:{insert:e+e,from:l},effects:as.of(l+e.length),range:re.cursor(l+e.length)};if(VO(r,l)){let p=t&&r.sliceDoc(l,l+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:l,to:l+p.length,insert:p},range:re.cursor(l+p.length)}}}else{if(t&&r.sliceDoc(l-2*e.length,l)==e+e&&(u=Mf(r,l-2*e.length,s))>-1&&Tf(r,u))return{changes:{insert:e+e+e+e,from:l},effects:as.of(l+e.length),range:re.cursor(l+e.length)};if(r.charCategorizer(l)(c)!=mt.Word&&Mf(r,l,s)>-1&&!E3(r,l,e,s))return{changes:{insert:e+e,from:l},effects:as.of(l+e.length),range:re.cursor(l+e.length)}}return{range:i=a}});return i?null:r.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function Tf(r,e){let t=ft(r).resolveInner(e+1);return t.parent&&t.from==e}function E3(r,e,t,n){let s=ft(r).resolveInner(e,-1),i=n.reduce((o,a)=>Math.max(o,a.length),0);for(let o=0;o<5;o++){let a=r.sliceDoc(s.from,Math.min(s.to,s.from+t.length+i)),l=a.indexOf(t);if(!l||l>-1&&n.indexOf(a.slice(0,l))>-1){let u=s.firstChild;for(;u&&u.from==s.from&&u.to-u.from>t.length+l;){if(r.sliceDoc(u.to-t.length,u.to)==t)return!1;u=u.firstChild}return!0}let c=s.to==e&&s.parent;if(!c)break;s=c}return!1}function Mf(r,e,t){let n=r.charCategorizer(e);if(n(r.sliceDoc(e-1,e))!=mt.Word)return e;for(let s of t){let i=e-s.length;if(r.sliceDoc(i,e)==s&&n(r.sliceDoc(i-1,i))!=mt.Word)return i}return-1}function D3(r={}){return[p3,Kt,Tt.of(r),d3,L3,EO]}const zO=[{key:"Ctrl-Space",run:Hl},{mac:"Alt-`",run:Hl},{mac:"Alt-i",run:Hl},{key:"Escape",run:l3},{key:"ArrowDown",run:na(!0)},{key:"ArrowUp",run:na(!1)},{key:"PageDown",run:na(!0,"page")},{key:"PageUp",run:na(!1,"page")},{key:"Enter",run:a3}],L3=wn.highest(ko.computeN([Tt],r=>r.facet(Tt).defaultKeymap?[zO]:[]));class Af{constructor(e,t,n){this.from=e,this.to=t,this.diagnostic=n}}class rs{constructor(e,t,n){this.diagnostics=e,this.panel=t,this.selected=n}static init(e,t,n){let s=n.facet(lo).markerFilter;s&&(e=s(e,n));let i=e.slice().sort((f,g)=>f.from-g.from||f.to-g.to),o=new xn,a=[],l=0,c=n.doc.iter(),u=0,h=n.doc.length;for(let f=0;;){let g=f==i.length?null:i[f];if(!g&&!a.length)break;let O,x;if(a.length)O=l,x=a.reduce((Q,P)=>Math.min(Q,P.to),g&&g.from>O?g.from:1e8);else{if(O=g.from,O>h)break;x=g.to,a.push(g),f++}for(;f<i.length;){let Q=i[f];if(Q.from==O&&(Q.to>Q.from||Q.to==O))a.push(Q),f++,x=Math.min(Q.to,x);else{x=Math.min(Q.from,x);break}}x=Math.min(x,h);let b=!1;if(a.some(Q=>Q.from==O&&(Q.to==x||x==h))&&(b=O==x,!b&&x-O<10)){let Q=O-(u+c.value.length);Q>0&&(c.next(Q),u=O);for(let P=O;;){if(P>=x){b=!0;break}if(!c.lineBreak&&u+c.value.length>P)break;P=u+c.value.length,u+=c.value.length,c.next()}}let w=H3(a);if(b)o.add(O,O,Le.widget({widget:new Y3(w),diagnostics:a.slice()}));else{let Q=a.reduce((P,E)=>E.markClass?P+" "+E.markClass:P,"");o.add(O,x,Le.mark({class:"cm-lintRange cm-lintRange-"+w+Q,diagnostics:a.slice(),inclusiveEnd:a.some(P=>P.to>x)}))}if(l=x,l==h)break;for(let Q=0;Q<a.length;Q++)a[Q].to<=l&&a.splice(Q--,1)}let p=o.finish();return new rs(p,t,Nn(p))}}function Nn(r,e=null,t=0){let n=null;return r.between(t,1e9,(s,i,{spec:o})=>{if(!(e&&o.diagnostics.indexOf(e)<0))if(!n)n=new Af(s,i,e||o.diagnostics[0]);else{if(o.diagnostics.indexOf(n.diagnostic)<0)return!1;n=new Af(n.from,i,n.diagnostic)}}),n}function X3(r,e){let t=e.pos,n=e.end||t,s=r.state.facet(lo).hideOn(r,t,n);if(s!=null)return s;let i=r.startState.doc.lineAt(e.pos);return!!(r.effects.some(o=>o.is(NO))||r.changes.touchesRange(i.from,Math.max(i.to,n)))}function I3(r,e){return r.field(pr,!1)?e:e.concat(je.appendConfig.of(K3))}const NO=je.define(),vh=je.define(),WO=je.define(),pr=_t.define({create(){return new rs(Le.none,null,null)},update(r,e){if(e.docChanged&&r.diagnostics.size){let t=r.diagnostics.map(e.changes),n=null,s=r.panel;if(r.selected){let i=e.changes.mapPos(r.selected.from,1);n=Nn(t,r.selected.diagnostic,i)||Nn(t,null,i)}!t.size&&s&&e.state.facet(lo).autoPanel&&(s=null),r=new rs(t,s,n)}for(let t of e.effects)if(t.is(NO)){let n=e.state.facet(lo).autoPanel?t.value.length?co.open:null:r.panel;r=rs.init(t.value,n,e.state)}else t.is(vh)?r=new rs(r.diagnostics,t.value?co.open:null,r.selected):t.is(WO)&&(r=new rs(r.diagnostics,r.panel,t.value));return r},provide:r=>[Ki.from(r,e=>e.panel),Se.decorations.from(r,e=>e.diagnostics)]}),V3=Le.mark({class:"cm-lintRange cm-lintRange-active"});function z3(r,e,t){let{diagnostics:n}=r.state.field(pr),s,i=-1,o=-1;n.between(e-(t<0?1:0),e+(t>0?1:0),(l,c,{spec:u})=>{if(e>=l&&e<=c&&(l==c||(e>l||t>0)&&(e<c||t<0)))return s=u.diagnostics,i=l,o=c,!1});let a=r.state.facet(lo).tooltipFilter;return s&&a&&(s=a(s,r.state)),s?{pos:i,end:o,above:r.state.doc.lineAt(i).to<o,create(){return{dom:N3(r,s)}}}:null}function N3(r,e){return ct("ul",{class:"cm-tooltip-lint"},e.map(t=>qO(r,t,!1)))}const W3=r=>{let e=r.state.field(pr,!1);(!e||!e.panel)&&r.dispatch({effects:I3(r.state,[vh.of(!0)])});let t=Fu(r,co.open);return t&&t.dom.querySelector(".cm-panel-lint ul").focus(),!0},_f=r=>{let e=r.state.field(pr,!1);return!e||!e.panel?!1:(r.dispatch({effects:vh.of(!1)}),!0)},j3=r=>{let e=r.state.field(pr,!1);if(!e)return!1;let t=r.state.selection.main,n=Nn(e.diagnostics,null,t.to+1);return!n&&(n=Nn(e.diagnostics,null,0),!n||n.from==t.from&&n.to==t.to)?!1:(r.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0}),!0)},q3=[{key:"Mod-Shift-m",run:W3,preventDefault:!0},{key:"F8",run:j3}],lo=Ce.define({combine(r){return{sources:r.map(e=>e.source).filter(e=>e!=null),...sn(r.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:Rf,tooltipFilter:Rf,needsRefresh:(e,t)=>e?t?n=>e(n)||t(n):e:t,hideOn:(e,t)=>e?t?(n,s,i)=>e(n,s,i)||t(n,s,i):e:t,autoPanel:(e,t)=>e||t})}}});function Rf(r,e){return r?e?(t,n)=>e(r(t,n),n):r:e}function jO(r){let e=[];if(r)e:for(let{name:t}of r){for(let n=0;n<t.length;n++){let s=t[n];if(/[a-zA-Z]/.test(s)&&!e.some(i=>i.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function qO(r,e,t){var n;let s=t?jO(e.actions):[];return ct("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},ct("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(r):e.message),(n=e.actions)===null||n===void 0?void 0:n.map((i,o)=>{let a=!1,l=f=>{if(f.preventDefault(),a)return;a=!0;let g=Nn(r.state.field(pr).diagnostics,e);g&&i.apply(r,g.from,g.to)},{name:c}=i,u=s[o]?c.indexOf(s[o]):-1,h=u<0?c:[c.slice(0,u),ct("u",c.slice(u,u+1)),c.slice(u+1)],p=i.markClass?" "+i.markClass:"";return ct("button",{type:"button",class:"cm-diagnosticAction"+p,onclick:l,onmousedown:l,"aria-label":` Action: ${c}${u<0?"":` (access key "${s[o]})"`}.`},h)}),e.source&&ct("div",{class:"cm-diagnosticSource"},e.source))}class Y3 extends on{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return ct("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class Bf{constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=qO(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class co{constructor(e){this.view=e,this.items=[];let t=s=>{if(!(s.ctrlKey||s.altKey||s.metaKey)){if(s.keyCode==27)_f(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:i}=this.items[this.selectedIndex],o=jO(i.actions);for(let a=0;a<o.length;a++)if(o[a].toUpperCase().charCodeAt(0)==s.keyCode){let l=Nn(this.view.state.field(pr).diagnostics,i);l&&i.actions[a].apply(e,l.from,l.to)}}else return;s.preventDefault()}},n=s=>{for(let i=0;i<this.items.length;i++)this.items[i].dom.contains(s.target)&&this.moveSelection(i)};this.list=ct("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:t,onclick:n}),this.dom=ct("div",{class:"cm-panel-lint"},this.list,ct("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>_f(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(pr).selected;if(!e)return-1;for(let t=0;t<this.items.length;t++)if(this.items[t].diagnostic==e.diagnostic)return t;return-1}update(){let{diagnostics:e,selected:t}=this.view.state.field(pr),n=0,s=!1,i=null,o=new Set;for(e.between(0,this.view.state.doc.length,(a,l,{spec:c})=>{for(let u of c.diagnostics){if(o.has(u))continue;o.add(u);let h=-1,p;for(let f=n;f<this.items.length;f++)if(this.items[f].diagnostic==u){h=f;break}h<0?(p=new Bf(this.view,u),this.items.splice(n,0,p),s=!0):(p=this.items[h],h>n&&(this.items.splice(n,h-n),s=!0)),t&&p.diagnostic==t.diagnostic?p.dom.hasAttribute("aria-selected")||(p.dom.setAttribute("aria-selected","true"),i=p):p.dom.hasAttribute("aria-selected")&&p.dom.removeAttribute("aria-selected"),n++}});n<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)s=!0,this.items.pop();this.items.length==0&&(this.items.push(new Bf(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),s=!0),i?(this.list.setAttribute("aria-activedescendant",i.id),this.view.requestMeasure({key:this,read:()=>({sel:i.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:a,panel:l})=>{let c=l.height/this.list.offsetHeight;a.top<l.top?this.list.scrollTop-=(l.top-a.top)/c:a.bottom>l.bottom&&(this.list.scrollTop+=(a.bottom-l.bottom)/c)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function t(){let n=e;e=n.nextSibling,n.remove()}for(let n of this.items)if(n.dom.parentNode==this.list){for(;e!=n.dom;)t();e=n.dom.nextSibling}else this.list.insertBefore(n.dom,e);for(;e;)t()}moveSelection(e){if(this.selectedIndex<0)return;let t=this.view.state.field(pr),n=Nn(t.diagnostics,this.items[e].diagnostic);n&&this.view.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0,effects:WO.of(n)})}static open(e){return new co(e)}}function F3(r,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${e}>${encodeURIComponent(r)}</svg>')`}function sa(r){return F3(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${r}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}const U3=Se.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:sa("#d11")},".cm-lintRange-warning":{backgroundImage:sa("orange")},".cm-lintRange-info":{backgroundImage:sa("#999")},".cm-lintRange-hint":{backgroundImage:sa("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function G3(r){return r=="error"?4:r=="warning"?3:r=="info"?2:1}function H3(r){let e="hint",t=1;for(let n of r){let s=G3(n.severity);s>t&&(t=s,e=n.severity)}return e}const K3=[pr,Se.decorations.compute([pr],r=>{let{selected:e,panel:t}=r.field(pr);return!e||!t||e.from==e.to?Le.none:Le.set([V3.range(e.from,e.to)])}),T5(z3,{hideOn:X3}),U3],J3=[z5(),j5(),o5(),cQ(),DC(),U$(),e5(),tt.allowMultipleSelections.of(!0),$C(),Vg(VC,{fallback:!0}),FC(),C3(),D3(),v5(),y5(),d5(),vP(),ko.of([...M3,...fP,...XP,...vQ,...RC,...zO,...q3])];class Ka{static create(e,t,n,s,i){let o=s+(s<<8)+e+(t<<4)|0;return new Ka(e,t,n,o,i,[],[])}constructor(e,t,n,s,i,o,a){this.type=e,this.value=t,this.from=n,this.hash=s,this.end=i,this.children=o,this.positions=a,this.hashProp=[[Ye.contextHash,s]]}addChild(e,t){e.prop(Ye.contextHash)!=this.hash&&(e=new ot(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(t)}toTree(e,t=this.end){let n=this.children.length-1;return n>=0&&(t=Math.max(t,this.positions[n]+this.children[n].length+this.from)),new ot(e.types[this.type],this.children,this.positions,t-this.from).balance({makeTree:(s,i,o)=>new ot(Pt.none,s,i,o,this.hashProp)})}}var ge;(function(r){r[r.Document=1]="Document",r[r.CodeBlock=2]="CodeBlock",r[r.FencedCode=3]="FencedCode",r[r.Blockquote=4]="Blockquote",r[r.HorizontalRule=5]="HorizontalRule",r[r.BulletList=6]="BulletList",r[r.OrderedList=7]="OrderedList",r[r.ListItem=8]="ListItem",r[r.ATXHeading1=9]="ATXHeading1",r[r.ATXHeading2=10]="ATXHeading2",r[r.ATXHeading3=11]="ATXHeading3",r[r.ATXHeading4=12]="ATXHeading4",r[r.ATXHeading5=13]="ATXHeading5",r[r.ATXHeading6=14]="ATXHeading6",r[r.SetextHeading1=15]="SetextHeading1",r[r.SetextHeading2=16]="SetextHeading2",r[r.HTMLBlock=17]="HTMLBlock",r[r.LinkReference=18]="LinkReference",r[r.Paragraph=19]="Paragraph",r[r.CommentBlock=20]="CommentBlock",r[r.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",r[r.Escape=22]="Escape",r[r.Entity=23]="Entity",r[r.HardBreak=24]="HardBreak",r[r.Emphasis=25]="Emphasis",r[r.StrongEmphasis=26]="StrongEmphasis",r[r.Link=27]="Link",r[r.Image=28]="Image",r[r.InlineCode=29]="InlineCode",r[r.HTMLTag=30]="HTMLTag",r[r.Comment=31]="Comment",r[r.ProcessingInstruction=32]="ProcessingInstruction",r[r.Autolink=33]="Autolink",r[r.HeaderMark=34]="HeaderMark",r[r.QuoteMark=35]="QuoteMark",r[r.ListMark=36]="ListMark",r[r.LinkMark=37]="LinkMark",r[r.EmphasisMark=38]="EmphasisMark",r[r.CodeMark=39]="CodeMark",r[r.CodeText=40]="CodeText",r[r.CodeInfo=41]="CodeInfo",r[r.LinkTitle=42]="LinkTitle",r[r.LinkLabel=43]="LinkLabel",r[r.URL=44]="URL"})(ge||(ge={}));class eT{constructor(e,t){this.start=e,this.content=t,this.marks=[],this.parsers=[]}}class tT{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return Ni(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,t=0,n=0){for(let s=t;s<e;s++)n+=this.text.charCodeAt(s)==9?4-n%4:1;return n}findColumn(e){let t=0;for(let n=0;t<this.text.length&&n<e;t++)n+=this.text.charCodeAt(t)==9?4-n%4:1;return t}scrub(){if(!this.baseIndent)return this.text;let e="";for(let t=0;t<this.basePos;t++)e+=" ";return e+this.text.slice(this.basePos)}}function Zf(r,e,t){if(t.pos==t.text.length||r!=e.block&&t.indent>=e.stack[t.depth+1].value+t.baseIndent)return!0;if(t.indent>=t.baseIndent+4)return!1;let n=(r.type==ge.OrderedList?yh:xh)(t,e,!1);return n>0&&(r.type!=ge.BulletList||bh(t,e,!1)<0)&&t.text.charCodeAt(t.pos+n-1)==r.value}const YO={[ge.Blockquote](r,e,t){return t.next!=62?!1:(t.markers.push(rt(ge.QuoteMark,e.lineStart+t.pos,e.lineStart+t.pos+1)),t.moveBase(t.pos+(Qr(t.text.charCodeAt(t.pos+1))?2:1)),r.end=e.lineStart+t.text.length,!0)},[ge.ListItem](r,e,t){return t.indent<t.baseIndent+r.value&&t.next>-1?!1:(t.moveBaseColumn(t.baseIndent+r.value),!0)},[ge.OrderedList]:Zf,[ge.BulletList]:Zf,[ge.Document](){return!0}};function Qr(r){return r==32||r==9||r==10||r==13}function Ni(r,e=0){for(;e<r.length&&Qr(r.charCodeAt(e));)e++;return e}function Ef(r,e,t){for(;e>t&&Qr(r.charCodeAt(e-1));)e--;return e}function FO(r){if(r.next!=96&&r.next!=126)return-1;let e=r.pos+1;for(;e<r.text.length&&r.text.charCodeAt(e)==r.next;)e++;if(e<r.pos+3)return-1;if(r.next==96){for(let t=e;t<r.text.length;t++)if(r.text.charCodeAt(t)==96)return-1}return e}function UO(r){return r.next!=62?-1:r.text.charCodeAt(r.pos+1)==32?2:1}function bh(r,e,t){if(r.next!=42&&r.next!=45&&r.next!=95)return-1;let n=1;for(let s=r.pos+1;s<r.text.length;s++){let i=r.text.charCodeAt(s);if(i==r.next)n++;else if(!Qr(i))return-1}return t&&r.next==45&&KO(r)>-1&&r.depth==e.stack.length&&e.parser.leafBlockParsers.indexOf(r0.SetextHeading)>-1||n<3?-1:1}function GO(r,e){for(let t=r.stack.length-1;t>=0;t--)if(r.stack[t].type==e)return!0;return!1}function xh(r,e,t){return(r.next==45||r.next==43||r.next==42)&&(r.pos==r.text.length-1||Qr(r.text.charCodeAt(r.pos+1)))&&(!t||GO(e,ge.BulletList)||r.skipSpace(r.pos+2)<r.text.length)?1:-1}function yh(r,e,t){let n=r.pos,s=r.next;for(;s>=48&&s<=57;){n++;if(n==r.text.length)return-1;s=r.text.charCodeAt(n)}return n==r.pos||n>r.pos+9||s!=46&&s!=41||n<r.text.length-1&&!Qr(r.text.charCodeAt(n+1))||t&&!GO(e,ge.OrderedList)&&(r.skipSpace(n+1)==r.text.length||n>r.pos+1||r.next!=49)?-1:n+1-r.pos}function HO(r){if(r.next!=35)return-1;let e=r.pos+1;for(;e<r.text.length&&r.text.charCodeAt(e)==35;)e++;if(e<r.text.length&&r.text.charCodeAt(e)!=32)return-1;let t=e-r.pos;return t>6?-1:t}function KO(r){if(r.next!=45&&r.next!=61||r.indent>=r.baseIndent+4)return-1;let e=r.pos+1;for(;e<r.text.length&&r.text.charCodeAt(e)==r.next;)e++;let t=e;for(;e<r.text.length&&Qr(r.text.charCodeAt(e));)e++;return e==r.text.length?t:-1}const cu=/^[ \t]*$/,JO=/-->/,e0=/\?>/,uu=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*<!--/,JO],[/^\s*<\?/,e0],[/^\s*<![A-Z]/,/>/],[/^\s*<!\[CDATA\[/,/\]\]>/],[/^\s*<\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|\/?>|$)/i,cu],[/^\s*(?:<\/[a-z][\w-]*\s*>|<[a-z][\w-]*(\s+[a-z:_][\w-.]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*>)\s*$/i,cu]];function t0(r,e,t){if(r.next!=60)return-1;let n=r.text.slice(r.pos);for(let s=0,i=uu.length-(t?1:0);s<i;s++)if(uu[s][0].test(n))return s;return-1}function Df(r,e){let t=r.countIndent(e,r.pos,r.indent),n=r.countIndent(r.skipSpace(e),e,t);return n>=t+5?t+1:n}function Tn(r,e,t){let n=r.length-1;n>=0&&r[n].to==e&&r[n].type==ge.CodeText?r[n].to=t:r.push(rt(ge.CodeText,e,t))}const ia={LinkReference:void 0,IndentedCode(r,e){let t=e.baseIndent+4;if(e.indent<t)return!1;let n=e.findColumn(t),s=r.lineStart+n,i=r.lineStart+e.text.length,o=[],a=[];for(Tn(o,s,i);r.nextLine()&&e.depth>=r.stack.length;)if(e.pos==e.text.length){Tn(a,r.lineStart-1,r.lineStart);for(let l of e.markers)a.push(l)}else{if(e.indent<t)break;{if(a.length){for(let c of a)c.type==ge.CodeText?Tn(o,c.from,c.to):o.push(c);a=[]}Tn(o,r.lineStart-1,r.lineStart);for(let c of e.markers)o.push(c);i=r.lineStart+e.text.length;let l=r.lineStart+e.findColumn(e.baseIndent+4);l<i&&Tn(o,l,i)}}return a.length&&(a=a.filter(l=>l.type!=ge.CodeText),a.length&&(e.markers=a.concat(e.markers))),r.addNode(r.buffer.writeElements(o,-s).finish(ge.CodeBlock,i-s),s),!0},FencedCode(r,e){let t=FO(e);if(t<0)return!1;let n=r.lineStart+e.pos,s=e.next,i=t-e.pos,o=e.skipSpace(t),a=Ef(e.text,e.text.length,o),l=[rt(ge.CodeMark,n,n+i)];o<a&&l.push(rt(ge.CodeInfo,r.lineStart+o,r.lineStart+a));for(let c=!0,u=!0,h=!1;r.nextLine()&&e.depth>=r.stack.length;c=!1){let p=e.pos;if(e.indent-e.baseIndent<4)for(;p<e.text.length&&e.text.charCodeAt(p)==s;)p++;if(p-e.pos>=i&&e.skipSpace(p)==e.text.length){for(let f of e.markers)l.push(f);u&&h&&Tn(l,r.lineStart-1,r.lineStart),l.push(rt(ge.CodeMark,r.lineStart+e.pos,r.lineStart+p)),r.nextLine();break}else{h=!0,c||(Tn(l,r.lineStart-1,r.lineStart),u=!1);for(let O of e.markers)l.push(O);let f=r.lineStart+e.basePos,g=r.lineStart+e.text.length;f<g&&(Tn(l,f,g),u=!1)}}return r.addNode(r.buffer.writeElements(l,-n).finish(ge.FencedCode,r.prevLineEnd()-n),n),!0},Blockquote(r,e){let t=UO(e);return t<0?!1:(r.startContext(ge.Blockquote,e.pos),r.addNode(ge.QuoteMark,r.lineStart+e.pos,r.lineStart+e.pos+1),e.moveBase(e.pos+t),null)},HorizontalRule(r,e){if(bh(e,r,!1)<0)return!1;let t=r.lineStart+e.pos;return r.nextLine(),r.addNode(ge.HorizontalRule,t),!0},BulletList(r,e){let t=xh(e,r,!1);if(t<0)return!1;r.block.type!=ge.BulletList&&r.startContext(ge.BulletList,e.basePos,e.next);let n=Df(e,e.pos+1);return r.startContext(ge.ListItem,e.basePos,n-e.baseIndent),r.addNode(ge.ListMark,r.lineStart+e.pos,r.lineStart+e.pos+t),e.moveBaseColumn(n),null},OrderedList(r,e){let t=yh(e,r,!1);if(t<0)return!1;r.block.type!=ge.OrderedList&&r.startContext(ge.OrderedList,e.basePos,e.text.charCodeAt(e.pos+t-1));let n=Df(e,e.pos+t);return r.startContext(ge.ListItem,e.basePos,n-e.baseIndent),r.addNode(ge.ListMark,r.lineStart+e.pos,r.lineStart+e.pos+t),e.moveBaseColumn(n),null},ATXHeading(r,e){let t=HO(e);if(t<0)return!1;let n=e.pos,s=r.lineStart+n,i=Ef(e.text,e.text.length,n),o=i;for(;o>n&&e.text.charCodeAt(o-1)==e.next;)o--;(o==i||o==n||!Qr(e.text.charCodeAt(o-1)))&&(o=e.text.length);let a=r.buffer.write(ge.HeaderMark,0,t).writeElements(r.parser.parseInline(e.text.slice(n+t+1,o),s+t+1),-s);o<e.text.length&&a.write(ge.HeaderMark,o-n,i-n);let l=a.finish(ge.ATXHeading1-1+t,e.text.length-n);return r.nextLine(),r.addNode(l,s),!0},HTMLBlock(r,e){let t=t0(e,r,!1);if(t<0)return!1;let n=r.lineStart+e.pos,s=uu[t][1],i=[],o=s!=cu;for(;!s.test(e.text)&&r.nextLine();){if(e.depth<r.stack.length){o=!1;break}for(let c of e.markers)i.push(c)}o&&r.nextLine();let a=s==JO?ge.CommentBlock:s==e0?ge.ProcessingInstructionBlock:ge.HTMLBlock,l=r.prevLineEnd();return r.addNode(r.buffer.writeElements(i,-n).finish(a,l-n),n),!0},SetextHeading:void 0};class rT{constructor(e){this.stage=0,this.elts=[],this.pos=0,this.start=e.start,this.advance(e.content)}nextLine(e,t,n){if(this.stage==-1)return!1;let s=n.content+`
|
|
23
|
+
`+t.scrub(),i=this.advance(s);return i>-1&&i<s.length?this.complete(e,n,i):!1}finish(e,t){return(this.stage==2||this.stage==3)&&Ni(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,n){return e.addLeafElement(t,rt(ge.LinkReference,this.start,this.start+n,this.elts)),!0}nextStage(e){return e?(this.pos=e.to-this.start,this.elts.push(e),this.stage++,!0):(e===!1&&(this.stage=-1),!1)}advance(e){for(;;){if(this.stage==-1)return-1;if(this.stage==0){if(!this.nextStage(h0(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(rt(ge.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(c0(e,Ni(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=Ni(e,this.pos),n=0;if(t>this.pos){let s=u0(e,t,this.start);if(s){let i=Jl(e,s.to-this.start);i>0&&(this.nextStage(s),n=i)}}return n||(n=Jl(e,this.pos)),n>0&&n<e.length?n:-1}else return Jl(e,this.pos)}}}function Jl(r,e){for(;e<r.length;e++){let t=r.charCodeAt(e);if(t==10)break;if(!Qr(t))return-1}return e}class nT{nextLine(e,t,n){let s=t.depth<e.stack.length?-1:KO(t),i=t.next;if(s<0)return!1;let o=rt(ge.HeaderMark,e.lineStart+t.pos,e.lineStart+s);return e.nextLine(),e.addLeafElement(n,rt(i==61?ge.SetextHeading1:ge.SetextHeading2,n.start,e.prevLineEnd(),[...e.parser.parseInline(n.content,n.start),o])),!0}finish(){return!1}}const r0={LinkReference(r,e){return e.content.charCodeAt(0)==91?new rT(e):null},SetextHeading(){return new nT}},sT=[(r,e)=>HO(e)>=0,(r,e)=>FO(e)>=0,(r,e)=>UO(e)>=0,(r,e)=>xh(e,r,!0)>=0,(r,e)=>yh(e,r,!0)>=0,(r,e)=>bh(e,r,!0)>=0,(r,e)=>t0(e,r,!0)>=0],iT={text:"",end:0};class oT{constructor(e,t,n,s){this.parser=e,this.input=t,this.ranges=s,this.line=new tT,this.atEnd=!1,this.reusePlaceholders=new Map,this.stoppedAt=null,this.rangeI=0,this.to=s[s.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=s[0].from,this.block=Ka.create(ge.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=n.length?new cT(n,t):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(this.stoppedAt!=null&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line:e}=this;for(;;){for(let n=0;;){let s=e.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;n<e.markers.length&&(!s||e.markers[n].from<s.end);){let i=e.markers[n++];this.addNode(i.type,i.from,i.to)}if(!s)break;this.finishContext()}if(e.pos<e.text.length)break;if(!this.nextLine())return this.finish()}if(this.fragments&&this.reuseFragment(e.basePos))return null;e:for(;;){for(let n of this.parser.blockParsers)if(n){let s=n(this,e);if(s!=!1){if(s==!0)return null;e.forward();continue e}}break}let t=new eT(this.lineStart+e.pos,e.text.slice(e.pos));for(let n of this.parser.leafBlockParsers)if(n){let s=n(this,t);s&&t.parsers.push(s)}e:for(;this.nextLine()&&e.pos!=e.text.length;){if(e.indent<e.baseIndent+4){for(let n of this.parser.endLeafBlock)if(n(this,e,t))break e}for(let n of t.parsers)if(n.nextLine(this,e,t))return null;t.content+=`
|
|
24
|
+
`+e.scrub();for(let n of e.markers)t.marks.push(n)}return this.finishLeaf(t),null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}reuseFragment(e){if(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let t=this.fragments.takeNodes(this);return t?(this.absoluteLineStart+=t,this.lineStart=d0(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0):!1}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){let t=iT;if(t.end=e,e>=this.to)t.text="";else if(t.text=this.lineChunkAt(e),t.end+=t.text.length,this.ranges.length>1){let n=this.absoluteLineStart,s=this.rangeI;for(;this.ranges[s].to<t.end;){s++;let i=this.ranges[s].from,o=this.lineChunkAt(i);t.end=i+o.length,t.text=t.text.slice(0,this.ranges[s-1].to-n)+o,n=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:n}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=n,e.reset(t);e.depth<this.stack.length;e.depth++){let s=this.stack[e.depth],i=this.parser.skipContextMarkup[s.type];if(!i)throw new Error("Unhandled block context "+ge[s.type]);let o=this.line.markers.length;if(!i(s,this,e)){this.line.markers.length>o&&(s.end=this.line.markers[this.line.markers.length-1].to),e.forward();break}e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),n;if(this.input.lineChunks)n=t==`
|
|
25
|
+
`?"":t;else{let s=t.indexOf(`
|
|
26
|
+
`);n=s<0?t:t.slice(0,s)}return e+n.length>this.to?n.slice(0,this.to-e):n}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,n=0){this.block=Ka.create(e,n,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,n=0){this.startContext(this.parser.getNodeType(e),t,n)}addNode(e,t,n){typeof e=="number"&&(e=new ot(this.parser.nodeSet.types[e],Gs,Gs,(n??this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(du(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){let e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return this.ranges.length>1?n0(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let n of e.parsers)if(n.finish(this,e))return;let t=du(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(ge.Paragraph,e.content.length),e.start)}elt(e,t,n,s){return typeof e=="string"?rt(this.parser.getNodeType(e),t,n,s):new o0(e,t)}get buffer(){return new i0(this.parser.nodeSet)}}function n0(r,e,t,n,s){let i=r[e].to,o=[],a=[],l=t.from+n;function c(u,h){for(;h?u>=i:u>i;){let p=r[e+1].from-i;n+=p,u+=p,e++,i=r[e].to}}for(let u=t.firstChild;u;u=u.nextSibling){c(u.from+n,!0);let h=u.from+n,p,f=s.get(u.tree);f?p=f:u.to+n>i?(p=n0(r,e,u,n,s),c(u.to+n,!1)):p=u.toTree(),o.push(p),a.push(h-l)}return c(t.to+n,!1),new ot(t.type,o,a,t.to+n-l,t.tree?t.tree.propValues:void 0)}class wl extends Ku{constructor(e,t,n,s,i,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=n,this.blockNames=s,this.endLeafBlock=i,this.skipContextMarkup=o,this.inlineParsers=a,this.inlineNames=l,this.wrappers=c,this.nodeTypes=Object.create(null);for(let u of e.types)this.nodeTypes[u.name]=u.id}createParse(e,t,n){let s=new oT(this,e,t,n);for(let i of this.wrappers)s=i(s,e,t,n);return s}configure(e){let t=hu(e);if(!t)return this;let{nodeSet:n,skipContextMarkup:s}=this,i=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),a=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),u=this.endLeafBlock.slice(),h=this.wrappers;if(Ti(t.defineNodes)){s=Object.assign({},s);let p=n.types.slice(),f;for(let g of t.defineNodes){let{name:O,block:x,composite:b,style:w}=typeof g=="string"?{name:g}:g;if(p.some(E=>E.name==O))continue;b&&(s[p.length]=(E,j,z)=>b(j,z,E.value));let Q=p.length,P=b?["Block","BlockContext"]:x?Q>=ge.ATXHeading1&&Q<=ge.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;p.push(Pt.define({id:Q,name:O,props:P&&[[Ye.group,P]]})),w&&(f||(f={}),Array.isArray(w)||w instanceof fr?f[O]=w:Object.assign(f,w))}n=new So(p),f&&(n=n.extend(ti(f)))}if(Ti(t.props)&&(n=n.extend(...t.props)),Ti(t.remove))for(let p of t.remove){let f=this.blockNames.indexOf(p),g=this.inlineNames.indexOf(p);f>-1&&(i[f]=o[f]=void 0),g>-1&&(l[g]=void 0)}if(Ti(t.parseBlock))for(let p of t.parseBlock){let f=a.indexOf(p.name);if(f>-1)i[f]=p.parse,o[f]=p.leaf;else{let g=p.before?oa(a,p.before):p.after?oa(a,p.after)+1:a.length-1;i.splice(g,0,p.parse),o.splice(g,0,p.leaf),a.splice(g,0,p.name)}p.endLeaf&&u.push(p.endLeaf)}if(Ti(t.parseInline))for(let p of t.parseInline){let f=c.indexOf(p.name);if(f>-1)l[f]=p.parse;else{let g=p.before?oa(c,p.before):p.after?oa(c,p.after)+1:c.length-1;l.splice(g,0,p.parse),c.splice(g,0,p.name)}}return t.wrap&&(h=h.concat(t.wrap)),new wl(n,i,o,a,u,s,l,c,h)}getNodeType(e){let t=this.nodeTypes[e];if(t==null)throw new RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){let n=new kh(this,e,t);e:for(let s=t;s<n.end;){let i=n.char(s);for(let o of this.inlineParsers)if(o){let a=o(n,i,s);if(a>=0){s=a;continue e}}s++}return n.resolveMarkers(0)}}function Ti(r){return r!=null&&r.length>0}function hu(r){if(!Array.isArray(r))return r;if(r.length==0)return null;let e=hu(r[0]);if(r.length==1)return e;let t=hu(r.slice(1));if(!t||!e)return e||t;let n=(o,a)=>(o||Gs).concat(a||Gs),s=e.wrap,i=t.wrap;return{props:n(e.props,t.props),defineNodes:n(e.defineNodes,t.defineNodes),parseBlock:n(e.parseBlock,t.parseBlock),parseInline:n(e.parseInline,t.parseInline),remove:n(e.remove,t.remove),wrap:s?i?(o,a,l,c)=>s(i(o,a,l,c),a,l,c):s:i}}function oa(r,e){let t=r.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}let s0=[Pt.none];for(let r=1,e;e=ge[r];r++)s0[r]=Pt.define({id:r,name:e,props:r>=ge.Escape?[]:[[Ye.group,r in YO?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});const Gs=[];class i0{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,n,s=0){return this.content.push(e,t,n,4+s*4),this}writeElements(e,t=0){for(let n of e)n.writeTo(this,t);return this}finish(e,t){return ot.build({buffer:this.content,nodeSet:this.nodeSet,reused:this.nodes,topID:e,length:t})}}let uo=class{constructor(e,t,n,s=Gs){this.type=e,this.from=t,this.to=n,this.children=s}writeTo(e,t){let n=e.content.length;e.writeElements(this.children,t),e.content.push(this.type,this.from+t,this.to+t,e.content.length+4-n)}toTree(e){return new i0(e).writeElements(this.children,-this.from).finish(this.type,this.to-this.from)}};class o0{constructor(e,t){this.tree=e,this.from=t}get to(){return this.from+this.tree.length}get type(){return this.tree.type.id}get children(){return Gs}writeTo(e,t){e.nodes.push(this.tree),e.content.push(e.nodes.length-1,this.from+t,this.to+t,-1)}toTree(){return this.tree}}function rt(r,e,t,n){return new uo(r,e,t,n)}const a0={resolve:"Emphasis",mark:"EmphasisMark"},l0={resolve:"Emphasis",mark:"EmphasisMark"},ns={},Ja={};class dr{constructor(e,t,n,s){this.type=e,this.from=t,this.to=n,this.side=s}}const Lf="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";let ho=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\u2010-\u2027]/;try{ho=new RegExp("[\\p{S}|\\p{P}]","u")}catch{}const ec={Escape(r,e,t){if(e!=92||t==r.end-1)return-1;let n=r.char(t+1);for(let s=0;s<Lf.length;s++)if(Lf.charCodeAt(s)==n)return r.append(rt(ge.Escape,t,t+2));return-1},Entity(r,e,t){if(e!=38)return-1;let n=/^(?:#\d+|#x[a-f\d]+|\w+);/i.exec(r.slice(t+1,t+31));return n?r.append(rt(ge.Entity,t,t+1+n[0].length)):-1},InlineCode(r,e,t){if(e!=96||t&&r.char(t-1)==96)return-1;let n=t+1;for(;n<r.end&&r.char(n)==96;)n++;let s=n-t,i=0;for(;n<r.end;n++)if(r.char(n)==96){if(i++,i==s&&r.char(n+1)!=96)return r.append(rt(ge.InlineCode,t,n+1,[rt(ge.CodeMark,t,t+s),rt(ge.CodeMark,n+1-s,n+1)]))}else i=0;return-1},HTMLTag(r,e,t){if(e!=60||t==r.end-1)return-1;let n=r.slice(t+1,r.end),s=/^(?:[a-z][-\w+.]+:[^\s>]+|[a-z\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?(?:\.[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?)*)>/i.exec(n);if(s)return r.append(rt(ge.Autolink,t,t+1+s[0].length,[rt(ge.LinkMark,t,t+1),rt(ge.URL,t+1,t+s[0].length),rt(ge.LinkMark,t+s[0].length,t+1+s[0].length)]));let i=/^!--[^>](?:-[^-]|[^-])*?-->/i.exec(n);if(i)return r.append(rt(ge.Comment,t,t+1+i[0].length));let o=/^\?[^]*?\?>/.exec(n);if(o)return r.append(rt(ge.ProcessingInstruction,t,t+1+o[0].length));let a=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(n);return a?r.append(rt(ge.HTMLTag,t,t+1+a[0].length)):-1},Emphasis(r,e,t){if(e!=95&&e!=42)return-1;let n=t+1;for(;r.char(n)==e;)n++;let s=r.slice(t-1,t),i=r.slice(n,n+1),o=ho.test(s),a=ho.test(i),l=/\s|^$/.test(s),c=/\s|^$/.test(i),u=!c&&(!a||l||o),h=!l&&(!o||c||a),p=u&&(e==42||!h||o),f=h&&(e==42||!u||a);return r.append(new dr(e==95?a0:l0,t,n,(p?1:0)|(f?2:0)))},HardBreak(r,e,t){if(e==92&&r.char(t+1)==10)return r.append(rt(ge.HardBreak,t,t+2));if(e==32){let n=t+1;for(;r.char(n)==32;)n++;if(r.char(n)==10&&n>=t+2)return r.append(rt(ge.HardBreak,t,n+1))}return-1},Link(r,e,t){return e==91?r.append(new dr(ns,t,t+1,1)):-1},Image(r,e,t){return e==33&&r.char(t+1)==91?r.append(new dr(Ja,t,t+2,1)):-1},LinkEnd(r,e,t){if(e!=93)return-1;for(let n=r.parts.length-1;n>=0;n--){let s=r.parts[n];if(s instanceof dr&&(s.type==ns||s.type==Ja)){if(!s.side||r.skipSpace(s.to)==t&&!/[(\[]/.test(r.slice(t+1,t+2)))return r.parts[n]=null,-1;let i=r.takeContent(n),o=r.parts[n]=aT(r,i,s.type==ns?ge.Link:ge.Image,s.from,t+1);if(s.type==ns)for(let a=0;a<n;a++){let l=r.parts[a];l instanceof dr&&l.type==ns&&(l.side=0)}return o.to}}return-1}};function aT(r,e,t,n,s){let{text:i}=r,o=r.char(s),a=s;if(e.unshift(rt(ge.LinkMark,n,n+(t==ge.Image?2:1))),e.push(rt(ge.LinkMark,s-1,s)),o==40){let l=r.skipSpace(s+1),c=c0(i,l-r.offset,r.offset),u;c&&(l=r.skipSpace(c.to),l!=c.to&&(u=u0(i,l-r.offset,r.offset),u&&(l=r.skipSpace(u.to)))),r.char(l)==41&&(e.push(rt(ge.LinkMark,s,s+1)),a=l+1,c&&e.push(c),u&&e.push(u),e.push(rt(ge.LinkMark,l,a)))}else if(o==91){let l=h0(i,s-r.offset,r.offset,!1);l&&(e.push(l),a=l.to)}return rt(t,n,a,e)}function c0(r,e,t){if(r.charCodeAt(e)==60){for(let s=e+1;s<r.length;s++){let i=r.charCodeAt(s);if(i==62)return rt(ge.URL,e+t,s+1+t);if(i==60||i==10)return!1}return null}else{let s=0,i=e;for(let o=!1;i<r.length;i++){let a=r.charCodeAt(i);if(Qr(a))break;if(o)o=!1;else if(a==40)s++;else if(a==41){if(!s)break;s--}else a==92&&(o=!0)}return i>e?rt(ge.URL,e+t,i+t):i==r.length?null:!1}}function u0(r,e,t){let n=r.charCodeAt(e);if(n!=39&&n!=34&&n!=40)return!1;let s=n==40?41:n;for(let i=e+1,o=!1;i<r.length;i++){let a=r.charCodeAt(i);if(o)o=!1;else{if(a==s)return rt(ge.LinkTitle,e+t,i+1+t);a==92&&(o=!0)}}return null}function h0(r,e,t,n){for(let s=!1,i=e+1,o=Math.min(r.length,i+999);i<o;i++){let a=r.charCodeAt(i);if(s)s=!1;else{if(a==93)return n?!1:rt(ge.LinkLabel,e+t,i+1+t);if(n&&!Qr(a)&&(n=!1),a==91)return!1;a==92&&(s=!0)}}return null}class kh{constructor(e,t,n){this.parser=e,this.text=t,this.offset=n,this.parts=[]}char(e){return e>=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,t){return this.text.slice(e-this.offset,t-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,t,n,s,i){return this.append(new dr(e,t,n,(s?1:0)|(i?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let t=this.parts[e];if(t instanceof dr&&(t.type==ns||t.type==Ja))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let n=e;n<this.parts.length;n++){let s=this.parts[n];if(!(s instanceof dr&&s.type.resolve&&s.side&2))continue;let i=s.type==a0||s.type==l0,o=s.to-s.from,a,l=n-1;for(;l>=e;l--){let O=this.parts[l];if(O instanceof dr&&O.side&1&&O.type==s.type&&!(i&&(s.side&1||O.side&2)&&(O.to-O.from+o)%3==0&&((O.to-O.from)%3||o%3))){a=O;break}}if(!a)continue;let c=s.type.resolve,u=[],h=a.from,p=s.to;if(i){let O=Math.min(2,a.to-a.from,o);h=a.to-O,p=s.from+O,c=O==1?"Emphasis":"StrongEmphasis"}a.type.mark&&u.push(this.elt(a.type.mark,h,a.to));for(let O=l+1;O<n;O++)this.parts[O]instanceof uo&&u.push(this.parts[O]),this.parts[O]=null;s.type.mark&&u.push(this.elt(s.type.mark,s.from,p));let f=this.elt(c,h,p,u);this.parts[l]=i&&a.from!=h?new dr(a.type,a.from,h,a.side):null,(this.parts[n]=i&&s.to!=p?new dr(s.type,p,s.to,s.side):null)?this.parts.splice(n,0,f):this.parts[n]=f}let t=[];for(let n=e;n<this.parts.length;n++){let s=this.parts[n];s instanceof uo&&t.push(s)}return t}findOpeningDelimiter(e){for(let t=this.parts.length-1;t>=0;t--){let n=this.parts[t];if(n instanceof dr&&n.type==e&&n.side&1)return t}return null}takeContent(e){let t=this.resolveMarkers(e);return this.parts.length=e,t}getDelimiterAt(e){let t=this.parts[e];return t instanceof dr?t:null}skipSpace(e){return Ni(this.text,e-this.offset)+this.offset}elt(e,t,n,s){return typeof e=="string"?rt(this.parser.getNodeType(e),t,n,s):new o0(e,t)}}kh.linkStart=ns;kh.imageStart=Ja;function du(r,e){if(!e.length)return r;if(!r.length)return e;let t=r.slice(),n=0;for(let s of e){for(;n<t.length&&t[n].to<s.to;)n++;if(n<t.length&&t[n].from<s.from){let i=t[n];i instanceof uo&&(t[n]=new uo(i.type,i.from,i.to,du(i.children,[s])))}else t.splice(n++,0,s)}return t}const lT=[ge.CodeBlock,ge.ListItem,ge.OrderedList,ge.BulletList];let cT=class{constructor(e,t){this.fragments=e,this.input=t,this.i=0,this.fragment=null,this.fragmentEnd=-1,this.cursor=null,e.length&&(this.fragment=e[this.i++])}nextFragment(){this.fragment=this.i<this.fragments.length?this.fragments[this.i++]:null,this.cursor=null,this.fragmentEnd=-1}moveTo(e,t){for(;this.fragment&&this.fragment.to<=e;)this.nextFragment();if(!this.fragment||this.fragment.from>(e?e-1:0))return!1;if(this.fragmentEnd<0){let i=this.fragment.to;for(;i>0&&this.input.read(i-1,i)!=`
|
|
27
|
+
`;)i--;this.fragmentEnd=i?i-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let s=e+this.fragment.offset;for(;n.to<=s;)if(!n.parent())return!1;for(;;){if(n.from>=s)return this.fragment.from<=t;if(!n.childAfter(s))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(Ye.contextHash)==e}takeNodes(e){let t=this.cursor,n=this.fragment.offset,s=this.fragmentEnd-(this.fragment.openEnd?1:0),i=e.absoluteLineStart,o=i,a=e.block.children.length,l=o,c=a;for(;;){if(t.to-n>s){if(t.type.isAnonymous&&t.firstChild())continue;break}let u=d0(t.from-n,e.ranges);if(t.to-n<=e.ranges[e.rangeI].to)e.addNode(t.tree,u);else{let h=new ot(e.parser.nodeSet.types[ge.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(h,t.tree),e.addNode(h,u)}if(t.type.is("Block")&&(lT.indexOf(t.type.id)<0?(o=t.to-n,a=e.block.children.length):(o=l,a=c),l=t.to-n,c=e.block.children.length),!t.nextSibling())break}for(;e.block.children.length>a;)e.block.children.pop(),e.block.positions.pop();return o-i}};function d0(r,e){let t=r;for(let n=1;n<e.length;n++){let s=e[n-1].to,i=e[n].from;s<r&&(t-=i-s)}return t}const uT=ti({"Blockquote/...":$.quote,HorizontalRule:$.contentSeparator,"ATXHeading1/... SetextHeading1/...":$.heading1,"ATXHeading2/... SetextHeading2/...":$.heading2,"ATXHeading3/...":$.heading3,"ATXHeading4/...":$.heading4,"ATXHeading5/...":$.heading5,"ATXHeading6/...":$.heading6,"Comment CommentBlock":$.comment,Escape:$.escape,Entity:$.character,"Emphasis/...":$.emphasis,"StrongEmphasis/...":$.strong,"Link/... Image/...":$.link,"OrderedList/... BulletList/...":$.list,"BlockQuote/...":$.quote,"InlineCode CodeText":$.monospace,"URL Autolink":$.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":$.processingInstruction,"CodeInfo LinkLabel":$.labelName,LinkTitle:$.string,Paragraph:$.content}),hT=new wl(new So(s0).extend(uT),Object.keys(ia).map(r=>ia[r]),Object.keys(ia).map(r=>r0[r]),Object.keys(ia),sT,YO,Object.keys(ec).map(r=>ec[r]),Object.keys(ec),[]);function dT(r,e,t){let n=[];for(let s=r.firstChild,i=e;;s=s.nextSibling){let o=s?s.from:t;if(o>i&&n.push({from:i,to:o}),!s)break;i=s.to}return n}function fT(r){let{codeParser:e,htmlParser:t}=r;return{wrap:$g((s,i)=>{let o=s.type.id;if(e&&(o==ge.CodeBlock||o==ge.FencedCode)){let a="";if(o==ge.FencedCode){let c=s.node.getChild(ge.CodeInfo);c&&(a=i.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==ge.CodeText,bracketed:o==ge.FencedCode}}else if(t&&(o==ge.HTMLBlock||o==ge.HTMLTag||o==ge.CommentBlock))return{parser:t,overlay:dT(s.node,s.from,s.to)};return null})}}const pT={resolve:"Strikethrough",mark:"StrikethroughMark"},mT={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":$.strikethrough}},{name:"StrikethroughMark",style:$.processingInstruction}],parseInline:[{name:"Strikethrough",parse(r,e,t){if(e!=126||r.char(t+1)!=126||r.char(t+2)==126)return-1;let n=r.slice(t-1,t),s=r.slice(t+2,t+3),i=/\s|^$/.test(n),o=/\s|^$/.test(s),a=ho.test(n),l=ho.test(s);return r.addDelimiter(pT,t,t+2,!o&&(!l||i||a),!i&&(!a||o||l))},after:"Emphasis"}]};function Wi(r,e,t=0,n,s=0){let i=0,o=!0,a=-1,l=-1,c=!1,u=()=>{n.push(r.elt("TableCell",s+a,s+l,r.parser.parseInline(e.slice(a,l),s+a)))};for(let h=t;h<e.length;h++){let p=e.charCodeAt(h);p==124&&!c?((!o||a>-1)&&i++,o=!1,n&&(a>-1&&u(),n.push(r.elt("TableDelimiter",h+s,h+s+1))),a=l=-1):(c||p!=32&&p!=9)&&(a<0&&(a=h),l=h+1),c=!c&&p==92}return a>-1&&(i++,n&&u()),i}function Xf(r,e){for(let t=e;t<r.length;t++){let n=r.charCodeAt(t);if(n==124)return!0;n==92&&t++}return!1}const f0=/^\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/;class If{constructor(){this.rows=null}nextLine(e,t,n){if(this.rows==null){this.rows=!1;let s;if((t.next==45||t.next==58||t.next==124)&&f0.test(s=t.text.slice(t.pos))){let i=[];Wi(e,n.content,0,i,n.start)==Wi(e,s,t.pos)&&(this.rows=[e.elt("TableHeader",n.start,n.start+n.content.length,i),e.elt("TableDelimiter",e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let s=[];Wi(e,t.text,t.pos,s,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+t.pos,e.lineStart+t.text.length,s))}return!1}finish(e,t){return this.rows?(e.addLeafElement(t,e.elt("Table",t.start,t.start+t.content.length,this.rows)),!0):!1}}const gT={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":$.heading}},"TableRow",{name:"TableCell",style:$.content},{name:"TableDelimiter",style:$.processingInstruction}],parseBlock:[{name:"Table",leaf(r,e){return Xf(e.content,0)?new If:null},endLeaf(r,e,t){if(t.parsers.some(s=>s instanceof If)||!Xf(e.text,e.basePos))return!1;let n=r.peekLine();return f0.test(n)&&Wi(r,e.text,e.basePos)==Wi(r,n,e.basePos)},before:"SetextHeading"}]};class OT{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt("Task",t.start,t.start+t.content.length,[e.elt("TaskMarker",t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}}const vT={defineNodes:[{name:"Task",block:!0,style:$.list},{name:"TaskMarker",style:$.atom}],parseBlock:[{name:"TaskList",leaf(r,e){return/^\[[ xX]\][ \t]/.test(e.content)&&r.parentType().name=="ListItem"?new OT:null},after:"SetextHeading"}]},Vf=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,zf=/[\w-]+(\.[\w-]+)+(\/[^\s<]*)?/gy,bT=/[\w-]+\.[\w-]+($|\/)/,Nf=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,Wf=/\/[a-zA-Z\d@.]+/gy;function jf(r,e,t,n){let s=0;for(let i=e;i<t;i++)r[i]==n&&s++;return s}function xT(r,e){zf.lastIndex=e;let t=zf.exec(r);if(!t||bT.exec(t[0])[0].indexOf("_")>-1)return-1;let n=e+t[0].length;for(;;){let s=r[n-1],i;if(/[?!.,:*_~]/.test(s)||s==")"&&jf(r,e,n,")")>jf(r,e,n,"("))n--;else if(s==";"&&(i=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(r.slice(e,n))))n=e+i.index;else break}return n}function qf(r,e){Nf.lastIndex=e;let t=Nf.exec(r);if(!t)return-1;let n=t[0][t[0].length-1];return n=="_"||n=="-"?-1:e+t[0].length-(n=="."?1:0)}const yT={parseInline:[{name:"Autolink",parse(r,e,t){let n=t-r.offset;if(n&&/\w/.test(r.text[n-1]))return-1;Vf.lastIndex=n;let s=Vf.exec(r.text),i=-1;if(!s)return-1;if(s[1]||s[2]){if(i=xT(r.text,n+s[0].length),i>-1&&r.hasOpenLink){let o=/([^\[\]]|\[[^\]]*\])*/.exec(r.text.slice(n,i));i=n+o[0].length}}else s[3]?i=qf(r.text,n):(i=qf(r.text,n+s[0].length),i>-1&&s[0]=="xmpp:"&&(Wf.lastIndex=i,s=Wf.exec(r.text),s&&(i=s.index+s[0].length)));return i<0?-1:(r.addElement(r.elt("URL",t,i+r.offset)),i+r.offset)}}]},kT=[gT,vT,mT,yT];function p0(r,e,t){return(n,s,i)=>{if(s!=r||n.char(i+1)==r)return-1;let o=[n.elt(t,i,i+1)];for(let a=i+1;a<n.end;a++){let l=n.char(a);if(l==r)return n.addElement(n.elt(e,i,a+1,o.concat(n.elt(t,a,a+1))));if(l==92&&o.push(n.elt("Escape",a,a+++2)),Qr(l))break}return-1}}const wT={defineNodes:[{name:"Superscript",style:$.special($.content)},{name:"SuperscriptMark",style:$.processingInstruction}],parseInline:[{name:"Superscript",parse:p0(94,"Superscript","SuperscriptMark")}]},ST={defineNodes:[{name:"Subscript",style:$.special($.content)},{name:"SubscriptMark",style:$.processingInstruction}],parseInline:[{name:"Subscript",parse:p0(126,"Subscript","SubscriptMark")}]},$T={defineNodes:[{name:"Emoji",style:$.character}],parseInline:[{name:"Emoji",parse(r,e,t){let n;return e!=58||!(n=/^[a-zA-Z_0-9]+:/.exec(r.slice(t+1,r.end)))?-1:r.addElement(r.elt("Emoji",t,t+1+n[0].length))}}]};var Yf={};class el{constructor(e,t,n,s,i,o,a,l,c,u=0,h){this.p=e,this.stack=t,this.state=n,this.reducePos=s,this.pos=i,this.score=o,this.buffer=a,this.bufferBase=l,this.curContext=c,this.lookAhead=u,this.parent=h}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,n=0){let s=e.parser.context;return new el(e,[],t,n,n,0,[],0,s?new Ff(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let n=e>>19,s=e&65535,{parser:i}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),a=i.dynamicPrecedence(s);if(a&&(this.score+=a),n==0){this.pushState(i.getGoto(this.state,s,!0),this.reducePos),s<i.minRepeatTerm&&this.storeNode(s,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(s,this.reducePos);return}let l=this.stack.length-(n-1)*3-(e&262144?6:0),c=l?this.stack[l-2]:this.p.ranges[0].from,u=this.reducePos-c;u>=2e3&&!(!((t=this.p.parser.nodeSet.types[s])===null||t===void 0)&&t.isAnonymous)&&(c==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=u):this.p.lastBigReductionSize<u&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=c,this.p.lastBigReductionSize=u));let h=l?this.stack[l-1]:0,p=this.bufferBase+this.buffer.length-h;if(s<i.minRepeatTerm||e&131072){let f=i.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(s,c,f,p+4,!0)}if(e&262144)this.state=this.stack[l];else{let f=this.stack[l-3];this.state=i.getGoto(f,s,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(s,c)}storeNode(e,t,n,s=4,i=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this,a=this.buffer.length;if(a==0&&o.parent&&(a=o.bufferBase-o.parent.bufferBase,o=o.parent),a>0&&o.buffer[a-4]==0&&o.buffer[a-1]>-1){if(t==n)return;if(o.buffer[a-2]>=t){o.buffer[a-2]=n;return}}}if(!i||this.pos==n)this.buffer.push(e,t,n,s);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let a=!1;for(let l=o;l>0&&this.buffer[l-2]>n;l-=4)if(this.buffer[l-1]>=0){a=!0;break}if(a)for(;o>0&&this.buffer[o-2]>n;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,s>4&&(s-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=n,this.buffer[o+3]=s}}shift(e,t,n,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let i=e,{parser:o}=this.p;this.pos=s;let a=o.stateFlag(i,1);!a&&(s>n||t<=o.maxNode)&&(this.reducePos=s),this.pushState(i,a?n:Math.min(n,this.reducePos)),this.shiftContext(t,n),t<=o.maxNode&&this.buffer.push(t,n,s,4)}else this.pos=s,this.shiftContext(t,n),t<=this.p.parser.maxNode&&this.buffer.push(t,n,s,4)}apply(e,t,n,s){e&65536?this.reduce(e):this.shift(e,t,n,s)}useNode(e,t){let n=this.p.reused.length-1;(n<0||this.p.reused[n]!=e)&&(this.p.reused.push(e),n++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(t,s),this.buffer.push(n,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let n=e.buffer.slice(t),s=e.bufferBase+t;for(;e&&s==e.bufferBase;)e=e.parent;return new el(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,n,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let n=e<=this.p.parser.maxNode;n&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,n?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new CT(this);;){let n=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(n==0)return!1;if((n&65536)==0)return!0;t.reduce(n)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>8||this.stack.length>=120){let s=[];for(let i=0,o;i<t.length;i+=2)(o=t[i+1])!=this.state&&this.p.parser.hasAction(o,e)&&s.push(t[i],o);if(this.stack.length<120)for(let i=0;s.length<8&&i<t.length;i+=2){let o=t[i+1];s.some((a,l)=>l&1&&a==o)||s.push(t[i],o)}t=s}let n=[];for(let s=0;s<t.length&&n.length<4;s+=2){let i=t[s+1];if(i==this.state)continue;let o=this.split();o.pushState(i,this.pos),o.storeNode(0,o.pos,o.pos,4,!0),o.shiftContext(t[s],this.pos),o.reducePos=this.pos,o.score-=200,n.push(o)}return n}forceReduce(){let{parser:e}=this.p,t=e.stateSlot(this.state,5);if((t&65536)==0)return!1;if(!e.validAction(this.state,t)){let n=t>>19,s=t&65535,i=this.stack.length-n*3;if(i<0||e.getGoto(this.stack[i],s,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;t=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let{parser:e}=this.p,t=[],n=(s,i)=>{if(!t.includes(s))return t.push(s),e.allActions(s,o=>{if(!(o&393216))if(o&65536){let a=(o>>19)-i;if(a>1){let l=o&65535,c=this.stack.length-a*3;if(c>=0&&e.getGoto(this.stack[c],l,!1)>=0)return a<<19|65536|l}}else{let a=n(o,i+1);if(a!=null)return a}})};return n(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t<this.stack.length;t+=3)if(this.stack[t]!=e.stack[t])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){if(e!=this.curContext.context){let t=new Ff(this.curContext.tracker,e);t.hash!=this.curContext.hash&&this.emitContext(),this.curContext=t}}setLookAhead(e){return e<=this.lookAhead?!1:(this.emitLookAhead(),this.lookAhead=e,!0)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class Ff{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}}class CT{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,n=e>>19;n==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(n-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=s}}class tl{constructor(e,t,n){this.stack=e,this.pos=t,this.index=n,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new tl(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new tl(this.stack,this.pos,this.index)}}function Ei(r,e=Uint16Array){if(typeof r!="string")return r;let t=null;for(let n=0,s=0;n<r.length;){let i=0;for(;;){let o=r.charCodeAt(n++),a=!1;if(o==126){i=65535;break}o>=92&&o--,o>=34&&o--;let l=o-32;if(l>=46&&(l-=46,a=!0),i+=l,a)break;i*=46}t?t[s++]=i:t=new e(i)}return t}class ba{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const Uf=new ba;class QT{constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=Uf,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let n=this.range,s=this.rangeIndex,i=this.pos+e;for(;i<n.from;){if(!s)return null;let o=this.ranges[--s];i-=n.from-o.to,n=o}for(;t<0?i>n.to:i>=n.to;){if(s==this.ranges.length-1)return null;let o=this.ranges[++s];i+=o.from-n.to,n=o}return i}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,n,s;if(t>=0&&t<this.chunk.length)n=this.pos+e,s=this.chunk.charCodeAt(t);else{let i=this.resolveOffset(e,1);if(i==null)return-1;if(n=i,n>=this.chunk2Pos&&n<this.chunk2Pos+this.chunk2.length)s=this.chunk2.charCodeAt(n-this.chunk2Pos);else{let o=this.rangeIndex,a=this.range;for(;a.to<=n;)a=this.ranges[++o];this.chunk2=this.input.chunk(this.chunk2Pos=n),n+this.chunk2.length>a.to&&(this.chunk2=this.chunk2.slice(0,a.to-n)),s=this.chunk2.charCodeAt(0)}}return n>=this.token.lookAhead&&(this.token.lookAhead=n+1),s}acceptToken(e,t=0){let n=t?this.resolveOffset(t,-1):this.pos;if(n==null||n<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=n}acceptTokenTo(e,t){this.token.value=e,this.token.end=t}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:t}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),t=this.pos+e.length;this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=Uf,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let n="";for(let s of this.ranges){if(s.from>=t)break;s.to>e&&(n+=this.input.read(Math.max(s.from,e),Math.min(s.to,t)))}return n}}class Ls{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:n}=t.p;m0(this.data,e,t,this.id,n.data,n.tokenPrecTable)}}Ls.prototype.contextual=Ls.prototype.fallback=Ls.prototype.extend=!1;class rl{constructor(e,t,n){this.precTable=t,this.elseToken=n,this.data=typeof e=="string"?Ei(e):e}token(e,t){let n=e.pos,s=0;for(;;){let i=e.next<0,o=e.resolveOffset(1,1);if(m0(this.data,e,t,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(i||s++,o==null)break;e.reset(o,e.token)}s&&(e.reset(n,e.token),e.acceptToken(this.elseToken,s))}}rl.prototype.contextual=Ls.prototype.fallback=Ls.prototype.extend=!1;class Or{constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}}function m0(r,e,t,n,s,i){let o=0,a=1<<n,{dialect:l}=t.p.parser;e:for(;(a&r[o])!=0;){let c=r[o+1];for(let f=o+3;f<c;f+=2)if((r[f+1]&a)>0){let g=r[f];if(l.allows(g)&&(e.token.value==-1||e.token.value==g||PT(g,e.token.value,s,i))){e.acceptToken(g);break}}let u=e.next,h=0,p=r[o+2];if(e.next<0&&p>h&&r[c+p*3-3]==65535){o=r[c+p*3-1];continue e}for(;h<p;){let f=h+p>>1,g=c+f+(f<<1),O=r[g],x=r[g+1]||65536;if(u<O)p=f;else if(u>=x)h=f+1;else{o=r[g+2],e.advance();continue e}}break}}function Gf(r,e,t){for(let n=e,s;(s=r[n])!=65535;n++)if(s==t)return n-e;return-1}function PT(r,e,t,n){let s=Gf(t,n,e);return s<0||Gf(t,n,r)<s}const lr=typeof process<"u"&&Yf&&/\bparse\b/.test(Yf.LOG);let tc=null;function Hf(r,e,t){let n=r.cursor(at.IncludeAnonymous);for(n.moveTo(e);;)if(!(t<0?n.childBefore(e):n.childAfter(e)))for(;;){if((t<0?n.to<e:n.from>e)&&!n.type.isError)return t<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(r.length,Math.max(n.from+1,e+25));if(t<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return t<0?0:r.length}}class TT{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?Hf(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?Hf(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let t=this.trees.length-1;if(t<0)return this.nextFragment(),null;let n=this.trees[t],s=this.index[t];if(s==n.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let i=n.children[s],o=this.start[t]+n.positions[s];if(o>e)return this.nextStart=o,null;if(i instanceof ot){if(o==e){if(o<this.safeFrom)return null;let a=o+i.length;if(a<=this.safeTo){let l=i.prop(Ye.lookAhead);if(!l||a+l<this.fragment.to)return i}}this.index[t]++,o+i.length>=Math.max(this.safeFrom,e)&&(this.trees.push(i),this.start.push(o),this.index.push(0))}else this.index[t]++,this.nextStart=o+i.length}}}class MT{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(n=>new ba)}getActions(e){let t=0,n=null,{parser:s}=e.p,{tokenizers:i}=s,o=s.stateSlot(e.state,3),a=e.curContext?e.curContext.hash:0,l=0;for(let c=0;c<i.length;c++){if((1<<c&o)==0)continue;let u=i[c],h=this.tokens[c];if(!(n&&!u.fallback)&&((u.contextual||h.start!=e.pos||h.mask!=o||h.context!=a)&&(this.updateCachedToken(h,u,e),h.mask=o,h.context=a),h.lookAhead>h.end+25&&(l=Math.max(h.lookAhead,l)),h.value!=0)){let p=t;if(h.extended>-1&&(t=this.addActions(e,h.extended,h.end,t)),t=this.addActions(e,h.value,h.end,t),!u.extend&&(n=h,t>p))break}}for(;this.actions.length>t;)this.actions.pop();return l&&e.setLookAhead(l),!n&&e.pos==this.stream.end&&(n=new ba,n.value=e.p.parser.eofTerm,n.start=n.end=e.pos,t=this.addActions(e,n.value,n.end,t)),this.mainToken=n,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new ba,{pos:n,p:s}=e;return t.start=n,t.end=Math.min(n+1,s.stream.end),t.value=n==s.stream.end?s.parser.eofTerm:0,t}updateCachedToken(e,t,n){let s=this.stream.clipPos(n.pos);if(t.token(this.stream.reset(s,e),n),e.value>-1){let{parser:i}=n.p;for(let o=0;o<i.specialized.length;o++)if(i.specialized[o]==e.value){let a=i.specializers[o](this.stream.read(e.start,e.end),n);if(a>=0&&n.p.parser.dialect.allows(a>>1)){(a&1)==0?e.value=a>>1:e.extended=a>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,t,n,s){for(let i=0;i<s;i+=3)if(this.actions[i]==e)return s;return this.actions[s++]=e,this.actions[s++]=t,this.actions[s++]=n,s}addActions(e,t,n,s){let{state:i}=e,{parser:o}=e.p,{data:a}=o;for(let l=0;l<2;l++)for(let c=o.stateSlot(i,l?2:1);;c+=3){if(a[c]==65535)if(a[c+1]==1)c=pn(a,c+2);else{s==0&&a[c+1]==2&&(s=this.putAction(pn(a,c+2),t,n,s));break}a[c]==t&&(s=this.putAction(pn(a,c+1),t,n,s))}return s}}class AT{constructor(e,t,n,s){this.parser=e,this.input=t,this.ranges=s,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new QT(t,s),this.tokens=new MT(e,this.stream),this.topTerm=e.top[1];let{from:i}=s[0];this.stacks=[el.start(this,e.top[0],i)],this.fragments=n.length&&this.stream.end-i>e.bufferLength*4?new TT(n,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,n=this.stacks=[],s,i;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;o<e.length;o++){let a=e[o];for(;;){if(this.tokens.mainToken=null,a.pos>t)n.push(a);else{if(this.advanceStack(a,n,e))continue;{s||(s=[],i=[]),s.push(a);let l=this.tokens.getMainToken(a);i.push(l.value,l.end)}}break}}if(!n.length){let o=s&&RT(s);if(o)return lr&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw lr&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&s){let o=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,i,n);if(o)return lr&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(n.length>o)for(n.sort((a,l)=>l.score-a.score);n.length>o;)n.pop();n.some(a=>a.reducePos>t)&&this.recovering--}else if(n.length>1){e:for(let o=0;o<n.length-1;o++){let a=n[o];for(let l=o+1;l<n.length;l++){let c=n[l];if(a.sameState(c)||a.buffer.length>500&&c.buffer.length>500)if((a.score-c.score||a.buffer.length-c.buffer.length)>0)n.splice(l--,1);else{n.splice(o--,1);continue e}}}n.length>12&&(n.sort((o,a)=>a.score-o.score),n.splice(12,n.length-12))}this.minStackPos=n[0].pos;for(let o=1;o<n.length;o++)n[o].pos<this.minStackPos&&(this.minStackPos=n[o].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,t,n){let s=e.pos,{parser:i}=this,o=lr?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let c=e.curContext&&e.curContext.tracker.strict,u=c?e.curContext.hash:0;for(let h=this.fragments.nodeAt(s);h;){let p=this.parser.nodeSet.types[h.type.id]==h.type?i.getGoto(e.state,h.type.id):-1;if(p>-1&&h.length&&(!c||(h.prop(Ye.contextHash)||0)==u))return e.useNode(h,p),lr&&console.log(o+this.stackID(e)+` (via reuse of ${i.getName(h.type.id)})`),!0;if(!(h instanceof ot)||h.children.length==0||h.positions[0]>0)break;let f=h.children[0];if(f instanceof ot&&h.positions[0]==0)h=f;else break}}let a=i.stateSlot(e.state,4);if(a>0)return e.reduce(a),lr&&console.log(o+this.stackID(e)+` (via always-reduce ${i.getName(a&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let l=this.tokens.getActions(e);for(let c=0;c<l.length;){let u=l[c++],h=l[c++],p=l[c++],f=c==l.length||!n,g=f?e:e.split(),O=this.tokens.mainToken;if(g.apply(u,h,O?O.start:g.pos,p),lr&&console.log(o+this.stackID(g)+` (via ${(u&65536)==0?"shift":`reduce of ${i.getName(u&65535)}`} for ${i.getName(h)} @ ${s}${g==e?"":", split"})`),f)return!0;g.pos>s?t.push(g):n.push(g)}return!1}advanceFully(e,t){let n=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>n)return Kf(e,t),!0}}runRecovery(e,t,n){let s=null,i=!1;for(let o=0;o<e.length;o++){let a=e[o],l=t[o<<1],c=t[(o<<1)+1],u=lr?this.stackID(a)+" -> ":"";if(a.deadEnd&&(i||(i=!0,a.restart(),lr&&console.log(u+this.stackID(a)+" (restarted)"),this.advanceFully(a,n))))continue;let h=a.split(),p=u;for(let f=0;f<10&&h.forceReduce()&&(lr&&console.log(p+this.stackID(h)+" (via force-reduce)"),!this.advanceFully(h,n));f++)lr&&(p=this.stackID(h)+" -> ");for(let f of a.recoverByInsert(l))lr&&console.log(u+this.stackID(f)+" (via recover-insert)"),this.advanceFully(f,n);this.stream.end>a.pos?(c==a.pos&&(c++,l=0),a.recoverByDelete(l,c),lr&&console.log(u+this.stackID(a)+` (via recover-delete ${this.parser.getName(l)})`),Kf(a,n)):(!s||s.score<h.score)&&(s=h)}return s}stackToTree(e){return e.close(),ot.build({buffer:tl.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(tc||(tc=new WeakMap)).get(e);return t||tc.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}}function Kf(r,e){for(let t=0;t<e.length;t++){let n=e[t];if(n.pos==r.pos&&n.sameState(r)){e[t].score<r.score&&(e[t]=r);return}}e.push(r)}class _T{constructor(e,t,n){this.source=e,this.flags=t,this.disabled=n}allows(e){return!this.disabled||this.disabled[e]==0}}const rc=r=>r;class g0{constructor(e){this.start=e.start,this.shift=e.shift||rc,this.reduce=e.reduce||rc,this.reuse=e.reuse||rc,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class Hs extends Ku{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let a=0;a<e.repeatNodeCount;a++)t.push("");let n=Object.keys(e.topRules).map(a=>e.topRules[a][1]),s=[];for(let a=0;a<t.length;a++)s.push([]);function i(a,l,c){s[a].push([l,l.deserialize(String(c))])}if(e.nodeProps)for(let a of e.nodeProps){let l=a[0];typeof l=="string"&&(l=Ye[l]);for(let c=1;c<a.length;){let u=a[c++];if(u>=0)i(u,l,a[c++]);else{let h=a[c+-u];for(let p=-u;p>0;p--)i(a[c++],l,h);c++}}}this.nodeSet=new So(t.map((a,l)=>Pt.define({name:l>=this.minRepeatTerm?void 0:a,id:l,props:s[l],top:n.indexOf(l)>-1,error:l==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(l)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=xg;let o=Ei(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let a=0;a<this.specializerSpecs.length;a++)this.specialized[a]=this.specializerSpecs[a].term;this.specializers=this.specializerSpecs.map(Jf),this.states=Ei(e.states,Uint32Array),this.data=Ei(e.stateData),this.goto=Ei(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(a=>typeof a=="number"?new Ls(o,a):a),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,n){let s=new AT(this,e,t,n);for(let i of this.wrappers)s=i(s,e,t,n);return s}getGoto(e,t,n=!1){let s=this.goto;if(t>=s[0])return-1;for(let i=s[t+1];;){let o=s[i++],a=o&1,l=s[i++];if(a&&n)return l;for(let c=i+(o>>1);i<c;i++)if(s[i]==e)return l;if(a)return-1}}hasAction(e,t){let n=this.data;for(let s=0;s<2;s++)for(let i=this.stateSlot(e,s?2:1),o;;i+=3){if((o=n[i])==65535)if(n[i+1]==1)o=n[i=pn(n,i+2)];else{if(n[i+1]==2)return pn(n,i+2);break}if(o==t||o==0)return pn(n,i+1)}return 0}stateSlot(e,t){return this.states[e*6+t]}stateFlag(e,t){return(this.stateSlot(e,0)&t)>0}validAction(e,t){return!!this.allActions(e,n=>n==t?!0:null)}allActions(e,t){let n=this.stateSlot(e,4),s=n?t(n):void 0;for(let i=this.stateSlot(e,1);s==null;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=pn(this.data,i+2);else break;s=t(pn(this.data,i+1))}return s}nextStates(e){let t=[];for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=pn(this.data,n+2);else break;if((this.data[n+2]&1)==0){let s=this.data[n+1];t.some((i,o)=>o&1&&i==s)||t.push(this.data[n],s)}}return t}configure(e){let t=Object.assign(Object.create(Hs.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let n=this.topRules[e.top];if(!n)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=n}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(n=>{let s=e.tokenizers.find(i=>i.from==n);return s?s.to:n})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((n,s)=>{let i=e.specializers.find(a=>a.from==n.external);if(!i)return n;let o=Object.assign(Object.assign({},n),{external:i.to});return t.specializers[s]=Jf(o),o})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),n=t.map(()=>!1);if(e)for(let i of e.split(" ")){let o=t.indexOf(i);o>=0&&(n[o]=!0)}let s=null;for(let i=0;i<t.length;i++)if(!n[i])for(let o=this.dialects[t[i]],a;(a=this.data[o++])!=65535;)(s||(s=new Uint8Array(this.maxTerm+1)))[a]=1;return new _T(e,n,s)}static deserialize(e){return new Hs(e)}}function pn(r,e){return r[e]|r[e+1]<<16}function RT(r){let e=null;for(let t of r){let n=t.p.stoppedAt;(t.pos==t.p.stream.end||n!=null&&t.pos>n)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.score<t.score)&&(e=t)}return e}function Jf(r){if(r.external){let e=r.extend?1:0;return(t,n)=>r.external(t,n)<<1|e}return r.get}const BT=55,ZT=1,ET=56,DT=2,LT=57,XT=3,ep=4,IT=5,wh=6,O0=7,v0=8,b0=9,x0=10,VT=11,zT=12,NT=13,nc=58,WT=14,jT=15,tp=59,y0=21,qT=23,k0=24,YT=25,fu=27,w0=28,FT=29,UT=32,GT=35,HT=37,KT=38,JT=0,eM=1,tM={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},rM={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},rp={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function nM(r){return r==45||r==46||r==58||r>=65&&r<=90||r==95||r>=97&&r<=122||r>=161}let np=null,sp=null,ip=0;function pu(r,e){let t=r.pos+e;if(ip==t&&sp==r)return np;let n=r.peek(e),s="";for(;nM(n);)s+=String.fromCharCode(n),n=r.peek(++e);return sp=r,ip=t,np=s?s.toLowerCase():n==sM||n==iM?void 0:null}const S0=60,nl=62,Sh=47,sM=63,iM=33,oM=45;function op(r,e){this.name=r,this.parent=e}const aM=[wh,x0,O0,v0,b0],lM=new g0({start:null,shift(r,e,t,n){return aM.indexOf(e)>-1?new op(pu(n,1)||"",r):r},reduce(r,e){return e==y0&&r?r.parent:r},reuse(r,e,t,n){let s=e.type.id;return s==wh||s==HT?new op(pu(n,1)||"",r):r},strict:!1}),cM=new Or((r,e)=>{if(r.next!=S0){r.next<0&&e.context&&r.acceptToken(nc);return}r.advance();let t=r.next==Sh;t&&r.advance();let n=pu(r,0);if(n===void 0)return;if(!n)return r.acceptToken(t?jT:WT);let s=e.context?e.context.name:null;if(t){if(n==s)return r.acceptToken(VT);if(s&&rM[s])return r.acceptToken(nc,-2);if(e.dialectEnabled(JT))return r.acceptToken(zT);for(let i=e.context;i;i=i.parent)if(i.name==n)return;r.acceptToken(NT)}else{if(n=="script")return r.acceptToken(O0);if(n=="style")return r.acceptToken(v0);if(n=="textarea")return r.acceptToken(b0);if(tM.hasOwnProperty(n))return r.acceptToken(x0);s&&rp[s]&&rp[s][n]?r.acceptToken(nc,-1):r.acceptToken(wh)}},{contextual:!0}),uM=new Or(r=>{for(let e=0,t=0;;t++){if(r.next<0){t&&r.acceptToken(tp);break}if(r.next==oM)e++;else if(r.next==nl&&e>=2){t>=3&&r.acceptToken(tp,-2);break}else e=0;r.advance()}});function hM(r){for(;r;r=r.parent)if(r.name=="svg"||r.name=="math")return!0;return!1}const dM=new Or((r,e)=>{if(r.next==Sh&&r.peek(1)==nl){let t=e.dialectEnabled(eM)||hM(e.context);r.acceptToken(t?IT:ep,2)}else r.next==nl&&r.acceptToken(ep,1)});function $h(r,e,t){let n=2+r.length;return new Or(s=>{for(let i=0,o=0,a=0;;a++){if(s.next<0){a&&s.acceptToken(e);break}if(i==0&&s.next==S0||i==1&&s.next==Sh||i>=2&&i<n&&s.next==r.charCodeAt(i-2))i++,o++;else if(i==n&&s.next==nl){a>o?s.acceptToken(e,-o):s.acceptToken(t,-(o-2));break}else if((s.next==10||s.next==13)&&a){s.acceptToken(e,1);break}else i=o=0;s.advance()}})}const fM=$h("script",BT,ZT),pM=$h("style",ET,DT),mM=$h("textarea",LT,XT),gM=ti({"Text RawText IncompleteTag IncompleteCloseTag":$.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":$.angleBracket,TagName:$.tagName,"MismatchedCloseTag/TagName":[$.tagName,$.invalid],AttributeName:$.attributeName,"AttributeValue UnquotedAttributeValue":$.attributeValue,Is:$.definitionOperator,"EntityReference CharacterReference":$.character,Comment:$.blockComment,ProcessingInst:$.processingInstruction,DoctypeDecl:$.documentMeta}),OM=Hs.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~",goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:68,context:lM,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,22,31,34,37,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,30,33,36,38,"OpenTag"],["group",-10,14,15,18,19,20,21,40,41,42,43,"Entity",17,"Entity TextContent",-3,29,32,35,"TextContent Entity"],["isolate",-11,22,30,31,33,34,36,37,38,39,42,43,"ltr",-3,27,28,40,""]],propSources:[gM],skippedNodes:[0],repeatNodeCount:9,tokenData:"!<p!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|caPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bXaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UVaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pTaPOv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!dpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({WaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!b`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!b`!dpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYlWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]`aP!b`!dp!_^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebiSlWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXiSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0mS1bP;=`<%l0m[1hP;=`<%l/^!V1vciSaP!b`!dpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R<%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`<%l1k!_3[P;=`<%l-_!Z3hV!ahaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_4WiiSlWd!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V<QciSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!<TXjSaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X",tokenizers:[fM,pM,mM,dM,cM,uM,0,1,2,3,4,5],topRules:{Document:[0,16]},dialects:{noMatch:0,selfClosing:515},tokenPrec:517});function $0(r,e){let t=Object.create(null);for(let n of r.getChildren(k0)){let s=n.getChild(YT),i=n.getChild(fu)||n.getChild(w0);s&&(t[e.read(s.from,s.to)]=i?i.type.id==fu?e.read(i.from+1,i.to-1):e.read(i.from,i.to):"")}return t}function ap(r,e){let t=r.getChild(qT);return t?e.read(t.from,t.to):" "}function sc(r,e,t){let n;for(let s of t)if(!s.attrs||s.attrs(n||(n=$0(r.node.parent.firstChild,e))))return{parser:s.parser,bracketed:!0};return null}function C0(r=[],e=[]){let t=[],n=[],s=[],i=[];for(let a of r)(a.tag=="script"?t:a.tag=="style"?n:a.tag=="textarea"?s:i).push(a);let o=e.length?Object.create(null):null;for(let a of e)(o[a.name]||(o[a.name]=[])).push(a);return $g((a,l)=>{let c=a.type.id;if(c==FT)return sc(a,l,t);if(c==UT)return sc(a,l,n);if(c==GT)return sc(a,l,s);if(c==y0&&i.length){let u=a.node,h=u.firstChild,p=h&&ap(h,l),f;if(p){for(let g of i)if(g.tag==p&&(!g.attrs||g.attrs(f||(f=$0(h,l))))){let O=u.lastChild,x=O.type.id==KT?O.from:u.to;if(x>h.to)return{parser:g.parser,overlay:[{from:h.to,to:x}]}}}}if(o&&c==k0){let u=a.node,h;if(h=u.firstChild){let p=o[l.read(h.from,h.to)];if(p)for(let f of p){if(f.tagName&&f.tagName!=ap(u.parent,l))continue;let g=u.lastChild;if(g.type.id==fu){let O=g.from+1,x=g.lastChild,b=g.to-(x&&x.isError?0:1);if(b>O)return{parser:f.parser,overlay:[{from:O,to:b}],bracketed:!0}}else if(g.type.id==w0)return{parser:f.parser,overlay:[{from:g.from,to:g.to}]}}}}return null})}const vM=122,lp=1,bM=123,xM=124,Q0=2,yM=125,kM=3,wM=4,P0=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],SM=58,$M=40,T0=95,CM=91,xa=45,QM=46,PM=35,TM=37,MM=38,AM=92,_M=10,RM=42;function fo(r){return r>=65&&r<=90||r>=97&&r<=122||r>=161}function Ch(r){return r>=48&&r<=57}function cp(r){return Ch(r)||r>=97&&r<=102||r>=65&&r<=70}const M0=(r,e,t)=>(n,s)=>{for(let i=!1,o=0,a=0;;a++){let{next:l}=n;if(fo(l)||l==xa||l==T0||i&&Ch(l))!i&&(l!=xa||a>0)&&(i=!0),o===a&&l==xa&&o++,n.advance();else if(l==AM&&n.peek(1)!=_M){if(n.advance(),cp(n.next)){do n.advance();while(cp(n.next));n.next==32&&n.advance()}else n.next>-1&&n.advance();i=!0}else{i&&n.acceptToken(o==2&&s.canShift(Q0)?e:l==$M?t:r);break}}},BM=new Or(M0(bM,Q0,xM)),ZM=new Or(M0(yM,kM,wM)),EM=new Or(r=>{if(P0.includes(r.peek(-1))){let{next:e}=r;(fo(e)||e==T0||e==PM||e==QM||e==RM||e==CM||e==SM&&fo(r.peek(1))||e==xa||e==MM)&&r.acceptToken(vM)}}),DM=new Or(r=>{if(!P0.includes(r.peek(-1))){let{next:e}=r;if(e==TM&&(r.advance(),r.acceptToken(lp)),fo(e)){do r.advance();while(fo(r.next)||Ch(r.next));r.acceptToken(lp)}}}),LM=ti({"AtKeyword import charset namespace keyframes media supports":$.definitionKeyword,"from to selector":$.keyword,NamespaceName:$.namespace,KeyframeName:$.labelName,KeyframeRangeName:$.operatorKeyword,TagName:$.tagName,ClassName:$.className,PseudoClassName:$.constant($.className),IdName:$.labelName,"FeatureName PropertyName":$.propertyName,AttributeName:$.attributeName,NumberLiteral:$.number,KeywordQuery:$.keyword,UnaryQueryOp:$.operatorKeyword,"CallTag ValueName":$.atom,VariableName:$.variableName,Callee:$.operatorKeyword,Unit:$.unit,"UniversalSelector NestingSelector":$.definitionOperator,"MatchOp CompareOp":$.compareOperator,"ChildOp SiblingOp, LogicOp":$.logicOperator,BinOp:$.arithmeticOperator,Important:$.modifier,Comment:$.blockComment,ColorLiteral:$.color,"ParenthesizedContent StringLiteral":$.string,":":$.punctuation,"PseudoOp #":$.derefOperator,"; ,":$.separator,"( )":$.paren,"[ ]":$.squareBracket,"{ }":$.brace}),XM={__proto__:null,lang:38,"nth-child":38,"nth-last-child":38,"nth-of-type":38,"nth-last-of-type":38,dir:38,"host-context":38,if:84,url:124,"url-prefix":124,domain:124,regexp:124},IM={__proto__:null,or:98,and:98,not:106,only:106,layer:170},VM={__proto__:null,selector:112,layer:166},zM={__proto__:null,"@import":162,"@media":174,"@charset":178,"@namespace":182,"@keyframes":188,"@supports":200,"@scope":204},NM={__proto__:null,to:207},WM=Hs.deserialize({version:14,states:"EbQYQdOOO#qQdOOP#xO`OOOOQP'#Cf'#CfOOQP'#Ce'#CeO#}QdO'#ChO$nQaO'#CcO$xQdO'#CkO%TQdO'#DpO%YQdO'#DrO%_QdO'#DuO%_QdO'#DxOOQP'#FV'#FVO&eQhO'#EhOOQS'#FU'#FUOOQS'#Ek'#EkQYQdOOO&lQdO'#EOO&PQhO'#EUO&lQdO'#EWO'aQdO'#EYO'lQdO'#E]O'tQhO'#EcO(VQdO'#EeO(bQaO'#CfO)VQ`O'#D{O)[Q`O'#F`O)gQdO'#F`QOQ`OOP)qO&jO'#CaPOOO)C@t)C@tOOQP'#Cj'#CjOOQP,59S,59SO#}QdO,59SO)|QdO,59VO%TQdO,5:[O%YQdO,5:^O%_QdO,5:aO%_QdO,5:cO%_QdO,5:dO%_QdO'#ErO*XQ`O,58}O*aQdO'#DzOOQS,58},58}OOQP'#Cn'#CnOOQO'#Dn'#DnOOQP,59V,59VO*hQ`O,59VO*mQ`O,59VOOQP'#Dq'#DqOOQP,5:[,5:[OOQO'#Ds'#DsO*rQpO,5:^O+]QaO,5:aO+sQaO,5:dOOQW'#DZ'#DZO,ZQhO'#DdO,xQhO'#FaO'tQhO'#DbO-WQ`O'#DhOOQW'#F['#F[O-]Q`O,5;SO-eQ`O'#DeOOQS-E8i-E8iOOQ['#Cs'#CsO-jQdO'#CtO.QQdO'#CzO.hQdO'#C}O/OQ!pO'#DPO1RQ!jO,5:jOOQO'#DU'#DUO*mQ`O'#DTO1cQ!nO'#FXO3`Q`O'#DVO3eQ`O'#DkOOQ['#FX'#FXO-`Q`O,5:pO3jQ!bO,5:rOOQS'#E['#E[O3rQ`O,5:tO3wQdO,5:tOOQO'#E_'#E_O4PQ`O,5:wO4UQhO,5:}O%_QdO'#DgOOQS,5;P,5;PO-eQ`O,5;PO4^QdO,5;PO4fQdO,5:gO4vQdO'#EtO5TQ`O,5;zO5TQ`O,5;zPOOO'#Ej'#EjP5`O&jO,58{POOO,58{,58{OOQP1G.n1G.nOOQP1G.q1G.qO*hQ`O1G.qO*mQ`O1G.qOOQP1G/v1G/vO5kQpO1G/xO5sQaO1G/{O6ZQaO1G/}O6qQaO1G0OO7XQaO,5;^OOQO-E8p-E8pOOQS1G.i1G.iO7cQ`O,5:fO7hQdO'#DoO7oQdO'#CrOOQP1G/x1G/xO&lQdO1G/xO7vQ!jO'#DZO8UQ!bO,59vO8^QhO,5:OOOQO'#F]'#F]O8XQ!bO,59zO'tQhO,59xO8fQhO'#EvO8sQ`O,5;{O9OQhO,59|O9uQhO'#DiOOQW,5:S,5:SOOQS1G0n1G0nOOQW,5:P,5:PO9|Q!fO'#FYOOQS'#FY'#FYOOQS'#Em'#EmO;^QdO,59`OOQ[,59`,59`O;tQdO,59fOOQ[,59f,59fO<[QdO,59iOOQ[,59i,59iOOQ[,59k,59kO&lQdO,59mO<rQhO'#EQOOQW'#EQ'#EQO=WQ`O1G0UO1[QhO1G0UOOQ[,59o,59oO'tQhO'#DXOOQ[,59q,59qO=]Q#tO,5:VOOQS1G0[1G0[OOQS1G0^1G0^OOQS1G0`1G0`O=hQ`O1G0`O=mQdO'#E`OOQS1G0c1G0cOOQS1G0i1G0iO=xQaO,5:RO-`Q`O1G0kOOQS1G0k1G0kO-eQ`O1G0kO>PQ!fO1G0ROOQO1G0R1G0ROOQO,5;`,5;`O>gQdO,5;`OOQO-E8r-E8rO>tQ`O1G1fPOOO-E8h-E8hPOOO1G.g1G.gOOQP7+$]7+$]OOQP7+%d7+%dO&lQdO7+%dOOQS1G0Q1G0QO?PQaO'#F_O?ZQ`O,5:ZO?`Q!fO'#ElO@^QdO'#FWO@hQ`O,59^O@mQ!bO7+%dO&lQdO1G/bO@uQhO1G/fOOQW1G/j1G/jOOQW1G/d1G/dOAWQhO,5;bOOQO-E8t-E8tOAfQhO'#DZOAtQhO'#F^OBPQ`O'#F^OBUQ`O,5:TOOQS-E8k-E8kOOQ[1G.z1G.zOOQ[1G/Q1G/QOOQ[1G/T1G/TOOQ[1G/X1G/XOBZQdO,5:lOOQS7+%p7+%pOB`Q`O7+%pOBeQhO'#DYOBmQ`O,59sO'tQhO,59sOOQ[1G/q1G/qOBuQ`O1G/qOOQS7+%z7+%zOBzQbO'#DPOOQO'#Eb'#EbOCYQ`O'#EaOOQO'#Ea'#EaOCeQ`O'#EwOCmQdO,5:zOOQS,5:z,5:zOOQ[1G/m1G/mOOQS7+&V7+&VO-`Q`O7+&VOCxQ!fO'#EsO&lQdO'#EsOEPQdO7+%mOOQO7+%m7+%mOOQO1G0z1G0zOEdQ!bO<<IOOElQdO'#EqOEvQ`O,5;yOOQP1G/u1G/uOOQS-E8j-E8jOFOQdO'#EpOFYQ`O,5;rOOQ]1G.x1G.xOOQP<<IO<<IOOFbQdO7+$|OOQO'#D]'#D]OFiQ!bO7+%QOFqQhO'#EoOF{Q`O,5;xO&lQdO,5;xOOQW1G/o1G/oOOQO'#ES'#ESOGTQ`O1G0WOOQS<<I[<<I[O&lQdO,59tOGnQhO1G/_OOQ[1G/_1G/_OGuQ`O1G/_OOQW-E8l-E8lOOQ[7+%]7+%]OOQO,5:{,5:{O=pQdO'#ExOCeQ`O,5;cOOQS,5;c,5;cOOQS-E8u-E8uOOQS1G0f1G0fOOQS<<Iq<<IqOG}Q!fO,5;_OOQS-E8q-E8qOOQO<<IX<<IXOOQPAN>jAN>jOIUQaO,5;]OOQO-E8o-E8oOI`QdO,5;[OOQO-E8n-E8nOOQW<<Hh<<HhOOQW<<Hl<<HlOIjQhO<<HlOI{QhO,5;ZOJWQ`O,5;ZOOQO-E8m-E8mOJ]QdO1G1dOBZQdO'#EuOJgQ`O7+%rOOQW7+%r7+%rOJoQ!bO1G/`OOQ[7+$y7+$yOJzQhO7+$yPKRQ`O'#EnOOQO,5;d,5;dOOQO-E8v-E8vOOQS1G0}1G0}OKWQ`OAN>WO&lQdO1G0uOK]Q`O7+'OOOQO,5;a,5;aOOQO-E8s-E8sOOQW<<I^<<I^OOQ[<<He<<HePOQW,5;Y,5;YOOQWG23rG23rOKeQdO7+&a",stateData:"Kx~O#sOS#tQQ~OW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#oRO~OQiOW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#ohO~O#m$SP~P!dO#tmO~O#ooO~O]qO`rOarOjsOmtO!juO!mwO#nvO~OpzO!^xO~P$SOc!QO#o|O#p}O~O#o!RO~O#o!TO~OW[OZ[O]TO`VOaVOjWOmXO!jYO!mZO#oRO~OS!]Oe!YO!V![O!Y!`O#q!XOp$TP~Ok$TP~P&POQ!jOe!cOm!dOp!eOr!mOt!mOz!kO!`!lO#o!bO#p!hO#}!fO~Ot!qO!`!lO#o!pO~Ot!sO#o!sO~OS!]Oe!YO!V![O!Y!`O#q!XO~Oe!vOpzO#Z!xO~O]YX`YX`!pXaYXjYXmYXpYX!^YX!jYX!mYX#nYX~O`!zO~Ok!{O#m$SXo$SX~O#m$SXo$SX~P!dO#u#OO#v#OO#w#QO~Oc#UO#o|O#p}O~OpzO!^xO~Oo$SP~P!dOe#`O~Oe#aO~Ol#bO!h#cO~O]qO`rOarOjsOmtO~Op!ia!^!ia!j!ia!m!ia#n!iad!ia~P*zOp!la!^!la!j!la!m!la#n!lad!la~P*zOR#gOS!]Oe!YOr#gOt#gO!V![O!Y!`O#q#dO#}!fO~O!R#iO!^#jOk$TXp$TX~Oe#mO~Ok#oOpzO~Oe!vO~O]#rO`#rOd#uOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl#wO~P&lO]#rO`#rOi#rOj#rOk#rOo#yO~P&lOP#zOSsXesXksXvsX!VsX!YsX!usX!wsX#qsX!TsXQsX]sX`sXdsXisXjsXmsXpsXrsXtsXzsX!`sX#osX#psX#}sXlsXosX!^sX!qsX#msX~Ov#{O!u#|O!w#}Ok$TP~P'tOe#aOS#{Xk#{Xv#{X!V#{X!Y#{X!u#{X!w#{X#q#{XQ#{X]#{X`#{Xd#{Xi#{Xj#{Xm#{Xp#{Xr#{Xt#{Xz#{X!`#{X#o#{X#p#{X#}#{Xl#{Xo#{X!^#{X!q#{X#m#{X~Oe$RO~Oe$TO~Ok$VOv#{O~Ok$WO~Ot$XO!`!lO~Op$YO~OpzO!R#iO~OpzO#Z$`O~O!q$bOk!oa#m!oao!oa~P&lOk#hX#m#hXo#hX~P!dOk!{O#m$Sao$Sa~O#u#OO#v#OO#w$hO~Ol$jO!h$kO~Op!ii!^!ii!j!ii!m!ii#n!iid!ii~P*zOp!ki!^!ki!j!ki!m!ki#n!kid!ki~P*zOp!li!^!li!j!li!m!li#n!lid!li~P*zOp#fa!^#fa~P$SOo$lO~Od$RP~P%_Od#zP~P&lO`!PXd}X!R}X!T!PX~O`$sO!T$tO~Od$uO!R#iO~Ok#jXp#jX!^#jX~P'tO!^#jOk$Tap$Ta~O!R#iOk!Uap!Ua!^!Uad!Ua`!Ua~OS!]Oe!YO!V![O!Y!`O#q$yO~Od$QP~P9dOv#{OQ#|X]#|X`#|Xd#|Xe#|Xi#|Xj#|Xk#|Xm#|Xp#|Xr#|Xt#|Xz#|X!`#|X#o#|X#p#|X#}#|Xl#|Xo#|X~O]#rO`#rOd%OOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl%PO~P&lO]#rO`#rOi#rOj#rOk#rOo%QO~P&lOe%SOS!tXk!tX!V!tX!Y!tX#q!tX~Ok%TO~Od%YOt%ZO!a%ZO~Ok%[O~Oo%cO#o%^O#}%]O~Od%dO~P$SOv#{O!^%hO!q%jOk!oi#m!oio!oi~P&lOk#ha#m#hao#ha~P!dOk!{O#m$Sio$Si~O!^%mOd$RX~P$SOd%oO~Ov#{OQ#`Xd#`Xe#`Xm#`Xp#`Xr#`Xt#`Xz#`X!^#`X!`#`X#o#`X#p#`X#}#`X~O!^%qOd#zX~P&lOd%sO~Ol%tOv#{O~OR#gOr#gOt#gO#q%vO#}!fO~O!R#iOk#jap#ja!^#ja~O`!PXd}X!R}X!^}X~O!R#iO!^%xOd$QX~O`%zO~Od%{O~O#o%|O~Ok&OO~O`&PO!R#iO~Od&ROk&QO~Od&UO~OP#zOpsX!^sXdsX~O#}%]Op#TX!^#TX~OpzO!^&WO~Oo&[O#o%^O#}%]O~Ov#{OQ#gXe#gXk#gXm#gXp#gXr#gXt#gXz#gX!^#gX!`#gX!q#gX#m#gX#o#gX#p#gX#}#gXo#gX~O!^%hO!q&`Ok!oq#m!oqo!oq~P&lOl&aOv#{O~Od#eX!^#eX~P%_O!^%mOd$Ra~Od#dX!^#dX~P&lO!^%qOd#za~Od&fO~P&lOd&gO!T&hO~Od#cX!^#cX~P9dO!^%xOd$Qa~O]&mOd&oO~OS#bae#ba!V#ba!Y#ba#q#ba~Od&qO~PG]Od&qOk&rO~Ov#{OQ#gae#gak#gam#gap#gar#gat#gaz#ga!^#ga!`#ga!q#ga#m#ga#o#ga#p#ga#}#gao#ga~Od#ea!^#ea~P$SOd#da!^#da~P&lOR#gOr#gOt#gO#q%vO#}%]O~O!R#iOd#ca!^#ca~O`&xO~O!^%xOd$Qi~P&lO]&mOd&|O~Ov#{Od|ik|i~Od&}O~PG]Ok'OO~Od'PO~O!^%xOd$Qq~Od#cq!^#cq~P&lO#s!a#t#}]#}v!m~",goto:"2h$UPPPPP$VP$YP$c$uP$cP%X$cPP%_PPP%e%o%oPPPPP%oPP%oP&]P%oP%o'W%oP't'w'}'}(^'}P'}P'}P'}'}P(m'}(yP(|PP)p)v$c)|$c*SP$cP$c$cP*Y*{+YP$YP+aP+dP$YP$YP$YP+j$YP+m+p+s+z$YP$YPP$YP,P,V,f,|-[-b-l-r-x.O.U.`.f.l.rPPPPPPPPPPP.x/R/w/z0|P1U1u2O2R2U2[RnQ_^OP`kz!{$dq[OPYZ`kuvwxz!v!{#`$d%mqSOPYZ`kuvwxz!v!{#`$d%mQpTR#RqQ!OVR#SrQ#S!QS$Q!i!jR$i#U!V!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'Q!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QU#g!Y$t&hU%`$Y%b&WR&V%_!V!iac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QR$S!kQ%W$RR&S%Xk!^]bf!Y![!g#i#j#m$P$R%X%xQ#e!YQ${#mQ%w$tQ&j%xR&w&hQ!ygQ#p!`Q$^!xR%f$`R#n!]!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QQ!qdR$X!rQ!PVR#TrQ#S!PR$i#TQ!SWR#VsQ!UXR#WtQ{UQ!wgQ#^yQ#o!_Q$U!nQ$[!uQ$_!yQ%e$^Q&Y%aQ&]%fR&v&XSjPzQ!}kQ$c!{R%k$dZiPkz!{$dR$P!gQ%}%SR&z&mR!rdR!teR$Z!tS%a$Y%bR&t&WV%_$Y%b&WQ#PmR$g#PQ`OSkPzU!a`k$dR$d!{Q$p#aY%p$p%u&d&l'QQ%u$sQ&d%qQ&l%zR'Q&xQ#t!cQ#v!dQ#x!eV$}#t#v#xQ%X$RR&T%XQ%y$zS&k%y&yR&y&lQ%r$pR&e%rQ%n$mR&c%nQyUR#]yQ%i$aR&_%iQ!|jS$e!|$fR$f!}Q&n%}R&{&nQ#k!ZR$x#kQ%b$YR&Z%bQ&X%aR&u&X__OP`kz!{$d^UOP`kz!{$dQ!VYQ!WZQ#XuQ#YvQ#ZwQ#[xQ$]!vQ$m#`R&b%mR$q#aQ!gaQ!oc[#q!c!d!e#t#v#xQ$a!zd$o#a$p$s%q%u%z&d&l&x'QQ$r#cQ%R#{S%g$a%iQ%l$kQ&^%hR&p&P]#s!c!d!e#t#v#xW!Z]b!g$PQ!ufQ#f!YQ#l![Q$v#iQ$w#jQ$z#mS%V$R%XR&i%xQ#h!YQ%w$tR&w&hR$|#mR$n#`QlPR#_zQ!_]Q!nbQ$O!gR%U$P",nodeNames:"⚠ Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to AtRule Styles",maxTerm:143,nodeProps:[["isolate",-2,5,36,""],["openedBy",20,"(",28,"[",31,"{"],["closedBy",21,")",29,"]",32,"}"]],propSources:[LM],skippedNodes:[0,5,106],repeatNodeCount:15,tokenData:"JQ~R!YOX$qX^%i^p$qpq%iqr({rs-ust/itu6Wuv$qvw7Qwx7cxy9Qyz9cz{9h{|:R|}>t}!O?V!O!P?t!P!Q@]!Q![AU![!]BP!]!^B{!^!_C^!_!`DY!`!aDm!a!b$q!b!cEn!c!}$q!}#OG{#O#P$q#P#QH^#Q#R6W#R#o$q#o#pHo#p#q6W#q#rIQ#r#sIc#s#y$q#y#z%i#z$f$q$f$g%i$g#BY$q#BY#BZ%i#BZ$IS$q$IS$I_%i$I_$I|$q$I|$JO%i$JO$JT$q$JT$JU%i$JU$KV$q$KV$KW%i$KW&FU$q&FU&FV%i&FV;'S$q;'S;=`Iz<%lO$q`$tSOy%Qz;'S%Q;'S;=`%c<%lO%Q`%VS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q`%fP;=`<%l%Q~%nh#s~OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Q~'ah#s~!a`OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Qj)OUOy%Qz#]%Q#]#^)b#^;'S%Q;'S;=`%c<%lO%Qj)gU!a`Oy%Qz#a%Q#a#b)y#b;'S%Q;'S;=`%c<%lO%Qj*OU!a`Oy%Qz#d%Q#d#e*b#e;'S%Q;'S;=`%c<%lO%Qj*gU!a`Oy%Qz#c%Q#c#d*y#d;'S%Q;'S;=`%c<%lO%Qj+OU!a`Oy%Qz#f%Q#f#g+b#g;'S%Q;'S;=`%c<%lO%Qj+gU!a`Oy%Qz#h%Q#h#i+y#i;'S%Q;'S;=`%c<%lO%Qj,OU!a`Oy%Qz#T%Q#T#U,b#U;'S%Q;'S;=`%c<%lO%Qj,gU!a`Oy%Qz#b%Q#b#c,y#c;'S%Q;'S;=`%c<%lO%Qj-OU!a`Oy%Qz#h%Q#h#i-b#i;'S%Q;'S;=`%c<%lO%Qj-iS!qY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q~-xWOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c<%lO-u~.gOt~~.jRO;'S-u;'S;=`.s;=`O-u~.vXOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c;=`<%l-u<%lO-u~/fP;=`<%l-uj/nYjYOy%Qz!Q%Q!Q![0^![!c%Q!c!i0^!i#T%Q#T#Z0^#Z;'S%Q;'S;=`%c<%lO%Qj0cY!a`Oy%Qz!Q%Q!Q![1R![!c%Q!c!i1R!i#T%Q#T#Z1R#Z;'S%Q;'S;=`%c<%lO%Qj1WY!a`Oy%Qz!Q%Q!Q![1v![!c%Q!c!i1v!i#T%Q#T#Z1v#Z;'S%Q;'S;=`%c<%lO%Qj1}YrY!a`Oy%Qz!Q%Q!Q![2m![!c%Q!c!i2m!i#T%Q#T#Z2m#Z;'S%Q;'S;=`%c<%lO%Qj2tYrY!a`Oy%Qz!Q%Q!Q![3d![!c%Q!c!i3d!i#T%Q#T#Z3d#Z;'S%Q;'S;=`%c<%lO%Qj3iY!a`Oy%Qz!Q%Q!Q![4X![!c%Q!c!i4X!i#T%Q#T#Z4X#Z;'S%Q;'S;=`%c<%lO%Qj4`YrY!a`Oy%Qz!Q%Q!Q![5O![!c%Q!c!i5O!i#T%Q#T#Z5O#Z;'S%Q;'S;=`%c<%lO%Qj5TY!a`Oy%Qz!Q%Q!Q![5s![!c%Q!c!i5s!i#T%Q#T#Z5s#Z;'S%Q;'S;=`%c<%lO%Qj5zSrY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qd6ZUOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qd6tS!hS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qb7VSZQOy%Qz;'S%Q;'S;=`%c<%lO%Q~7fWOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z<%lO7c~8RRO;'S7c;'S;=`8[;=`O7c~8_XOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z;=`<%l7c<%lO7c~8}P;=`<%l7cj9VSeYOy%Qz;'S%Q;'S;=`%c<%lO%Q~9hOd~n9oUWQvWOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qj:YWvW!mQOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj:wU!a`Oy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Qj;bY!a`#}YOy%Qz!Q%Q!Q![;Z![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj<VY!a`Oy%Qz{%Q{|<u|}%Q}!O<u!O!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj<zU!a`Oy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj=eU!a`#}YOy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj>O[!a`#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj>yS!^YOy%Qz;'S%Q;'S;=`%c<%lO%Qj?[WvWOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj?yU]YOy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Q~@bTvWOy%Qz{@q{;'S%Q;'S;=`%c<%lO%Q~@xS!a`#t~Oy%Qz;'S%Q;'S;=`%c<%lO%QjAZ[#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%QjBUU`YOy%Qz![%Q![!]Bh!];'S%Q;'S;=`%c<%lO%QbBoSaQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjCQSkYOy%Qz;'S%Q;'S;=`%c<%lO%QhCcU!TWOy%Qz!_%Q!_!`Cu!`;'S%Q;'S;=`%c<%lO%QhC|S!TW!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QlDaS!TW!hSOy%Qz;'S%Q;'S;=`%c<%lO%QjDtV!jQ!TWOy%Qz!_%Q!_!`Cu!`!aEZ!a;'S%Q;'S;=`%c<%lO%QbEbS!jQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjEqYOy%Qz}%Q}!OFa!O!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjFfW!a`Oy%Qz!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjGV[iY!a`Oy%Qz}%Q}!OGO!O!Q%Q!Q![GO![!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjHQSmYOy%Qz;'S%Q;'S;=`%c<%lO%QnHcSl^Oy%Qz;'S%Q;'S;=`%c<%lO%QjHtSpYOy%Qz;'S%Q;'S;=`%c<%lO%QjIVSoYOy%Qz;'S%Q;'S;=`%c<%lO%QfIhU!mQOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Q`I}P;=`<%l$q",tokenizers:[EM,DM,BM,ZM,1,2,3,4,new rl("m~RRYZ[z{a~~g~aO#v~~dP!P!Qg~lO#w~~",28,129)],topRules:{StyleSheet:[0,6],Styles:[1,105]},dynamicPrecedences:{76:1},specialized:[{term:124,get:r=>XM[r]||-1},{term:125,get:r=>IM[r]||-1},{term:4,get:r=>VM[r]||-1},{term:25,get:r=>zM[r]||-1},{term:123,get:r=>NM[r]||-1}],tokenPrec:1963});let ic=null;function oc(){if(!ic&&typeof document=="object"&&document.body){let{style:r}=document.body,e=[],t=new Set;for(let n in r)n!="cssText"&&n!="cssFloat"&&typeof r[n]=="string"&&(/[A-Z]/.test(n)&&(n=n.replace(/[A-Z]/g,s=>"-"+s.toLowerCase())),t.has(n)||(e.push(n),t.add(n)));ic=e.sort().map(n=>({type:"property",label:n,apply:n+": "}))}return ic||[]}const up=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(r=>({type:"class",label:r})),hp=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(r=>({type:"keyword",label:r})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(r=>({type:"constant",label:r}))),jM=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(r=>({type:"type",label:r})),qM=["@charset","@color-profile","@container","@counter-style","@font-face","@font-feature-values","@font-palette-values","@import","@keyframes","@layer","@media","@namespace","@page","@position-try","@property","@scope","@starting-style","@supports","@view-transition"].map(r=>({type:"keyword",label:r})),fn=/^(\w[\w-]*|-\w[\w-]*|)$/,YM=/^-(-[\w-]*)?$/;function FM(r,e){var t;if((r.name=="("||r.type.isError)&&(r=r.parent||r),r.name!="ArgList")return!1;let n=(t=r.parent)===null||t===void 0?void 0:t.firstChild;return n?.name!="Callee"?!1:e.sliceString(n.from,n.to)=="var"}const dp=new Sg,UM=["Declaration"];function GM(r){for(let e=r;;){if(e.type.isTop)return e;if(!(e=e.parent))return r}}function A0(r,e,t){if(e.to-e.from>4096){let n=dp.get(e);if(n)return n;let s=[],i=new Set,o=e.cursor(at.IncludeAnonymous);if(o.firstChild())do for(let a of A0(r,o.node,t))i.has(a.label)||(i.add(a.label),s.push(a));while(o.nextSibling());return dp.set(e,s),s}else{let n=[],s=new Set;return e.cursor().iterate(i=>{var o;if(t(i)&&i.matchContext(UM)&&((o=i.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let a=r.sliceString(i.from,i.to);s.has(a)||(s.add(a),n.push({label:a,type:"variable"}))}}),n}}const HM=r=>e=>{let{state:t,pos:n}=e,s=ft(t).resolveInner(n,-1),i=s.type.isError&&s.from==s.to-1&&t.doc.sliceString(s.from,s.to)=="-";if(s.name=="PropertyName"||(i||s.name=="TagName")&&/^(Block|Styles)$/.test(s.resolve(s.to).name))return{from:s.from,options:oc(),validFor:fn};if(s.name=="ValueName")return{from:s.from,options:hp,validFor:fn};if(s.name=="PseudoClassName")return{from:s.from,options:up,validFor:fn};if(r(s)||(e.explicit||i)&&FM(s,t.doc))return{from:r(s)||i?s.from:n,options:A0(t.doc,GM(s),r),validFor:YM};if(s.name=="TagName"){for(let{parent:l}=s;l;l=l.parent)if(l.name=="Block")return{from:s.from,options:oc(),validFor:fn};return{from:s.from,options:jM,validFor:fn}}if(s.name=="AtKeyword")return{from:s.from,options:qM,validFor:fn};if(!e.explicit)return null;let o=s.resolve(n),a=o.childBefore(n);return a&&a.name==":"&&o.name=="PseudoClassSelector"?{from:n,options:up,validFor:fn}:a&&a.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:n,options:hp,validFor:fn}:o.name=="Block"||o.name=="Styles"?{from:n,options:oc(),validFor:fn}:null},KM=HM(r=>r.name=="VariableName"),sl=Ys.define({name:"css",parser:WM.configure({props:[Co.add({Declaration:va()}),ri.add({"Block KeyframeList":_g})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function JM(){return new ro(sl,sl.data.of({autocomplete:KM}))}const e4=316,t4=317,fp=1,r4=2,n4=3,s4=4,i4=318,o4=320,a4=321,l4=5,c4=6,u4=0,mu=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],_0=125,h4=59,gu=47,d4=42,f4=43,p4=45,m4=60,g4=44,O4=63,v4=46,b4=91,x4=new g0({start:!1,shift(r,e){return e==l4||e==c4||e==o4?r:e==a4},strict:!1}),y4=new Or((r,e)=>{let{next:t}=r;(t==_0||t==-1||e.context)&&r.acceptToken(i4)},{contextual:!0,fallback:!0}),k4=new Or((r,e)=>{let{next:t}=r,n;mu.indexOf(t)>-1||t==gu&&((n=r.peek(1))==gu||n==d4)||t!=_0&&t!=h4&&t!=-1&&!e.context&&r.acceptToken(e4)},{contextual:!0}),w4=new Or((r,e)=>{r.next==b4&&!e.context&&r.acceptToken(t4)},{contextual:!0}),S4=new Or((r,e)=>{let{next:t}=r;if(t==f4||t==p4){if(r.advance(),t==r.next){r.advance();let n=!e.context&&e.canShift(fp);r.acceptToken(n?fp:r4)}}else t==O4&&r.peek(1)==v4&&(r.advance(),r.advance(),(r.next<48||r.next>57)&&r.acceptToken(n4))},{contextual:!0});function ac(r,e){return r>=65&&r<=90||r>=97&&r<=122||r==95||r>=192||!e&&r>=48&&r<=57}const $4=new Or((r,e)=>{if(r.next!=m4||!e.dialectEnabled(u4)||(r.advance(),r.next==gu))return;let t=0;for(;mu.indexOf(r.next)>-1;)r.advance(),t++;if(ac(r.next,!0)){for(r.advance(),t++;ac(r.next,!1);)r.advance(),t++;for(;mu.indexOf(r.next)>-1;)r.advance(),t++;if(r.next==g4)return;for(let n=0;;n++){if(n==7){if(!ac(r.next,!0))return;break}if(r.next!="extends".charCodeAt(n))break;r.advance(),t++}}r.acceptToken(s4,-t)}),C4=ti({"get set async static":$.modifier,"for while do if else switch try catch finally return throw break continue default case defer":$.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":$.operatorKeyword,"let var const using function class extends":$.definitionKeyword,"import export from":$.moduleKeyword,"with debugger new":$.keyword,TemplateString:$.special($.string),super:$.atom,BooleanLiteral:$.bool,this:$.self,null:$.null,Star:$.modifier,VariableName:$.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":$.function($.variableName),VariableDefinition:$.definition($.variableName),Label:$.labelName,PropertyName:$.propertyName,PrivatePropertyName:$.special($.propertyName),"CallExpression/MemberExpression/PropertyName":$.function($.propertyName),"FunctionDeclaration/VariableDefinition":$.function($.definition($.variableName)),"ClassDeclaration/VariableDefinition":$.definition($.className),"NewExpression/VariableName":$.className,PropertyDefinition:$.definition($.propertyName),PrivatePropertyDefinition:$.definition($.special($.propertyName)),UpdateOp:$.updateOperator,"LineComment Hashbang":$.lineComment,BlockComment:$.blockComment,Number:$.number,String:$.string,Escape:$.escape,ArithOp:$.arithmeticOperator,LogicOp:$.logicOperator,BitOp:$.bitwiseOperator,CompareOp:$.compareOperator,RegExp:$.regexp,Equals:$.definitionOperator,Arrow:$.function($.punctuation),": Spread":$.punctuation,"( )":$.paren,"[ ]":$.squareBracket,"{ }":$.brace,"InterpolationStart InterpolationEnd":$.special($.brace),".":$.derefOperator,", ;":$.separator,"@":$.meta,TypeName:$.typeName,TypeDefinition:$.definition($.typeName),"type enum interface implements namespace module declare":$.definitionKeyword,"abstract global Privacy readonly override":$.modifier,"is keyof unique infer asserts":$.operatorKeyword,JSXAttributeValue:$.attributeValue,JSXText:$.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":$.angleBracket,"JSXIdentifier JSXNameSpacedName":$.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":$.attributeName,"JSXBuiltin/JSXIdentifier":$.standard($.tagName)}),Q4={__proto__:null,export:20,as:25,from:33,default:36,async:41,function:42,in:52,out:55,const:56,extends:60,this:64,true:72,false:72,null:84,void:88,typeof:92,super:108,new:142,delete:154,yield:163,await:167,class:172,public:235,private:235,protected:235,readonly:237,instanceof:256,satisfies:259,import:292,keyof:349,unique:353,infer:359,asserts:395,is:397,abstract:417,implements:419,type:421,let:424,var:426,using:429,interface:435,enum:439,namespace:445,module:447,declare:451,global:455,defer:471,for:476,of:485,while:488,with:492,do:496,if:500,else:502,switch:506,case:512,try:518,catch:522,finally:526,return:530,throw:534,break:538,continue:542,debugger:546},P4={__proto__:null,async:129,get:131,set:133,declare:195,public:197,private:197,protected:197,static:199,abstract:201,override:203,readonly:209,accessor:211,new:401},T4={__proto__:null,"<":193},M4=Hs.deserialize({version:14,states:"$F|Q%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Il'#IlO1XQ`O'#GsO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JrO6[Q!0MxO'#JsO6uQ`O'#F]O6zQ,UO'#FtOOQ!0Lf'#Ff'#FfO7VO7dO'#FfO9XQMhO'#F|O9`Q`O'#F{OOQ!0Lf'#Js'#JsOOQ!0Lb'#Jr'#JrO9eQ`O'#GwOOQ['#K_'#K_O9pQ`O'#IYO9uQ!0LrO'#IZOOQ['#J`'#J`OOQ['#I_'#I_Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GsO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EyO;hQMhO'#FeO;xQ`O'#GsOOQO'#K`'#K`O;}Q`O'#K`O<]Q`O'#G{O<]Q`O'#G|O<]Q`O'#HOO9kQ`O'#HRO=SQ`O'#HUO>kQ`O'#CeO>{Q`O'#HcO?TQ`O'#HiO?TQ`O'#HkO`QlO'#HmO?TQ`O'#HoO?TQ`O'#HrO?YQ`O'#HxO?_Q!0LsO'#IOO%[QlO'#IQO?jQ!0LsO'#ISO?uQ!0LsO'#IUO9uQ!0LrO'#IWO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FeOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jv'#JvO%[QlO'#JvOOQO'#Jy'#JyOOQO'#Ih'#IhOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#J}'#J}OC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jx'#JxODlQpO'#JyOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CD})CD}OOOO'#I`'#I`OFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ia'#IaOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Ic'#IcOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IdOGyQ`O'#JtOIxQ!fO'#JtO+}QlO'#JtOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KTOKPQ`O'#KSOKPQ`O'#KSOKXQ`O,5;^OK^Q`O'#KROOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KQONtQ`O'#KPO9eQ`O'#KPO! YQ`O'#KPO! bQ`O,5;]O! gQ`O'#KPO!#lQ!fO'#JsOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#Jz'#JzOOQO-E<j-E<jO9kQ`O,5=_O!$rQ`O,5=_O!$wQlO,5;ZO!&zQMhO'#EkO!(eQ`O,5;ZO!(jQlO'#DyO!(tQpO,5;dO!(|QpO,5;dO%[QlO,5;dOOQ['#FT'#FTOOQ['#FV'#FVO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eOOQ['#FZ'#FZO!)[QlO,5;tOOQ!0Lf,5;y,5;yOOQ!0Lf,5;z,5;zOOQ!0Lf,5;|,5;|O%[QlO'#IpO!+_Q!0LrO,5<iO%[QlO,5;eO!&zQMhO,5;eO!+|QMhO,5;eO!-nQMhO'#E^O%[QlO,5;wOOQ!0Lf,5;{,5;{O!-uQ,UO'#FjO!.rQ,UO'#KXO!.^Q,UO'#KXO!.yQ,UO'#KXOOQO'#KX'#KXO!/_Q,UO,5<SOOOW,5<`,5<`O!/pQlO'#FvOOOW'#Io'#IoO7VO7dO,5<QO!/wQ,UO'#FxOOQ!0Lf,5<Q,5<QO!0hQ$IUO'#CyOOQ!0Lh'#C}'#C}O!0{O#@ItO'#DRO!1iQMjO,5<eO!1pQ`O,5<hO!3YQ(CWO'#GXO!3jQ`O'#GYO!3oQ`O'#GYO!5_Q(CWO'#G^O!6dQpO'#GbOOQO'#Gn'#GnO!,TQMhO'#GmOOQO'#Gp'#GpO!,TQMhO'#GoO!7VQ$IUO'#JlOOQ!0Lh'#Jl'#JlO!7aQ`O'#JkO!7oQ`O'#JjO!7wQ`O'#CuOOQ!0Lh'#C{'#C{O!8YQ`O'#C}OOQ!0Lh'#DV'#DVOOQ!0Lh'#DX'#DXO!8_Q`O,5<eO1SQ`O'#DZO!,TQMhO'#GPO!,TQMhO'#GRO!8gQ`O'#GTO!8lQ`O'#GUO!3oQ`O'#G[O!,TQMhO'#GaO<]Q`O'#JkO!8qQ`O'#EqO!9`Q`O,5<gOOQ!0Lb'#Cr'#CrO!9hQ`O'#ErO!:bQpO'#EsOOQ!0Lb'#KR'#KRO!:iQ!0LrO'#KaO9uQ!0LrO,5=cO`QlO,5>tOOQ['#Jh'#JhOOQ[,5>u,5>uOOQ[-E<]-E<]O!<hQ!0MxO,5:bO!:]QpO,5:`O!?RQ!0MxO,5:jO%[QlO,5:jO!AiQ!0MxO,5:lOOQO,5@z,5@zO!BYQMhO,5=_O!BhQ!0LrO'#JiO9`Q`O'#JiO!ByQ!0LrO,59ZO!CUQpO,59ZO!C^QMhO,59ZO:dQMhO,59ZO!CiQ`O,5;ZO!CqQ`O'#HbO!DVQ`O'#KdO%[QlO,5;}O!:]QpO,5<PO!D_Q`O,5=zO!DdQ`O,5=zO!DiQ`O,5=zO!DwQ`O,5=zO9uQ!0LrO,5=zO<]Q`O,5=jOOQO'#Cy'#CyO!EOQpO,5=gO!EWQMhO,5=hO!EcQ`O,5=jO!EhQ!bO,5=mO!EpQ`O'#K`O?YQ`O'#HWO9kQ`O'#HYO!EuQ`O'#HYO:dQMhO'#H[O!EzQ`O'#H[OOQ[,5=p,5=pO!FPQ`O'#H]O!FbQ`O'#CoO!FgQ`O,59PO!FqQ`O,59PO!HvQlO,59POOQ[,59P,59PO!IWQ!0LrO,59PO%[QlO,59PO!KcQlO'#HeOOQ['#Hf'#HfOOQ['#Hg'#HgO`QlO,5=}O!KyQ`O,5=}O`QlO,5>TO`QlO,5>VO!LOQ`O,5>XO`QlO,5>ZO!LTQ`O,5>^O!LYQlO,5>dOOQ[,5>j,5>jO%[QlO,5>jO9uQ!0LrO,5>lOOQ[,5>n,5>nO#!dQ`O,5>nOOQ[,5>p,5>pO#!dQ`O,5>pOOQ[,5>r,5>rO##QQpO'#D_O%[QlO'#JvO##sQpO'#JvO##}QpO'#DmO#$`QpO'#DmO#&qQlO'#DmO#&xQ`O'#JuO#'QQ`O,5:WO#'VQ`O'#EtO#'eQ`O'#KUO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CUQpO,5;YO!C^QMhO,5;YO:dQMhO,5;YO#(`Q`O,5@bO#(eQ07dO,5:sOOQO-E<f-E<fO#)kQ!0MSO,5;RODWQpO,5:rO#)uQpO,5:rODWQpO,5;RO!ByQ!0LrO,5:rOOQ!0Lb'#Ej'#EjOOQO,5;R,5;RO%[QlO,5;RO#*SQ!0LrO,5;RO#*_Q!0LrO,5;RO!CUQpO,5:rOOQO,5;X,5;XO#*mQ!0LrO,5;RPOOO'#I^'#I^P#+RO&2DjO,58|POOO,58|,58|OOOO-E<^-E<^OOQ!0Lh1G.p1G.pOOOO-E<_-E<_OOOO,59},59}O#+^Q!bO,59}OOOO-E<a-E<aOOQ!0Lf1G/g1G/gO#+cQ!fO,5?OO+}QlO,5?OOOQO,5?U,5?UO#+mQlO'#IdOOQO-E<b-E<bO#+zQ`O,5@`O#,SQ!fO,5@`O#,ZQ`O,5@nOOQ!0Lf1G/m1G/mO%[QlO,5@oO#,cQ`O'#IjOOQO-E<h-E<hO#,ZQ`O,5@nOOQ!0Lb1G0x1G0xOOQ!0Ln1G/x1G/xOOQ!0Ln1G0Y1G0YO%[QlO,5@lO#,wQ!0LrO,5@lO#-YQ!0LrO,5@lO#-aQ`O,5@kO9eQ`O,5@kO#-iQ`O,5@kO#-wQ`O'#ImO#-aQ`O,5@kOOQ!0Lb1G0w1G0wO!(tQpO,5:uO!)PQpO,5:uOOQS,5:w,5:wO#.iQdO,5:wO#.qQMhO1G2yO9kQ`O1G2yOOQ!0Lf1G0u1G0uO#/PQ!0MxO1G0uO#0UQ!0MvO,5;VOOQ!0Lh'#GW'#GWO#0rQ!0MzO'#JlO!$wQlO1G0uO#2}Q!fO'#JwO%[QlO'#JwO#3XQ`O,5:eOOQ!0Lh'#D_'#D_OOQ!0Lf1G1O1G1OO%[QlO1G1OOOQ!0Lf1G1f1G1fO#3^Q`O1G1OO#5rQ!0MxO1G1PO#5yQ!0MxO1G1PO#8aQ!0MxO1G1PO#8hQ!0MxO1G1PO#;OQ!0MxO1G1PO#=fQ!0MxO1G1PO#=mQ!0MxO1G1PO#=tQ!0MxO1G1PO#@[Q!0MxO1G1PO#@cQ!0MxO1G1PO#BpQ?MtO'#CiO#DkQ?MtO1G1`O#DrQ?MtO'#JsO#EVQ!0MxO,5?[OOQ!0Lb-E<n-E<nO#GdQ!0MxO1G1PO#HaQ!0MzO1G1POOQ!0Lf1G1P1G1PO#IdQMjO'#J|O#InQ`O,5:xO#IsQ!0MxO1G1cO#JgQ,UO,5<WO#JoQ,UO,5<XO#JwQ,UO'#FoO#K`Q`O'#FnOOQO'#KY'#KYOOQO'#In'#InO#KeQ,UO1G1nOOQ!0Lf1G1n1G1nOOOW1G1y1G1yO#KvQ?MtO'#JrO#LQQ`O,5<bO!)[QlO,5<bOOOW-E<m-E<mOOQ!0Lf1G1l1G1lO#LVQpO'#KXOOQ!0Lf,5<d,5<dO#L_QpO,5<dO#LdQMhO'#DTOOOO'#Ib'#IbO#LkO#@ItO,59mOOQ!0Lh,59m,59mO%[QlO1G2PO!8lQ`O'#IrO#LvQ`O,5<zOOQ!0Lh,5<w,5<wO!,TQMhO'#IuO#MdQMjO,5=XO!,TQMhO'#IwO#NVQMjO,5=ZO!&zQMhO,5=]OOQO1G2S1G2SO#NaQ!dO'#CrO#NtQ(CWO'#ErO$ |QpO'#GbO$!dQ!dO,5<sO$!kQ`O'#K[O9eQ`O'#K[O$!yQ`O,5<uO$#aQ!dO'#C{O!,TQMhO,5<tO$#kQ`O'#GZO$$PQ`O,5<tO$$UQ!dO'#GWO$$cQ!dO'#K]O$$mQ`O'#K]O!&zQMhO'#K]O$$rQ`O,5<xO$$wQlO'#JvO$%RQpO'#GcO#$`QpO'#GcO$%dQ`O'#GgO!3oQ`O'#GkO$%iQ!0LrO'#ItO$%tQpO,5<|OOQ!0Lp,5<|,5<|O$%{QpO'#GcO$&YQpO'#GdO$&kQpO'#GdO$&pQMjO,5=XO$'QQMjO,5=ZOOQ!0Lh,5=^,5=^O!,TQMhO,5@VO!,TQMhO,5@VO$'bQ`O'#IyO$'vQ`O,5@UO$(OQ`O,59aOOQ!0Lh,59i,59iO$(TQ`O,5@VO$)TQ$IYO,59uOOQ!0Lh'#Jp'#JpO$)vQMjO,5<kO$*iQMjO,5<mO@zQ`O,5<oOOQ!0Lh,5<p,5<pO$*sQ`O,5<vO$*xQMjO,5<{O$+YQ`O'#KPO!$wQlO1G2RO$+_Q`O1G2RO9eQ`O'#KSO9eQ`O'#EtO%[QlO'#EtO9eQ`O'#I{O$+dQ!0LrO,5@{OOQ[1G2}1G2}OOQ[1G4`1G4`OOQ!0Lf1G/|1G/|OOQ!0Lf1G/z1G/zO$-fQ!0MxO1G0UOOQ[1G2y1G2yO!&zQMhO1G2yO%[QlO1G2yO#.tQ`O1G2yO$/jQMhO'#EkOOQ!0Lb,5@T,5@TO$/wQ!0LrO,5@TOOQ[1G.u1G.uO!ByQ!0LrO1G.uO!CUQpO1G.uO!C^QMhO1G.uO$0YQ`O1G0uO$0_Q`O'#CiO$0jQ`O'#KeO$0rQ`O,5=|O$0wQ`O'#KeO$0|Q`O'#KeO$1[Q`O'#JRO$1jQ`O,5AOO$1rQ!fO1G1iOOQ!0Lf1G1k1G1kO9kQ`O1G3fO@zQ`O1G3fO$1yQ`O1G3fO$2OQ`O1G3fO!DiQ`O1G3fO9uQ!0LrO1G3fOOQ[1G3f1G3fO!EcQ`O1G3UO!&zQMhO1G3RO$2TQ`O1G3ROOQ[1G3S1G3SO!&zQMhO1G3SO$2YQ`O1G3SO$2bQpO'#HQOOQ[1G3U1G3UO!6_QpO'#I}O!EhQ!bO1G3XOOQ[1G3X1G3XOOQ[,5=r,5=rO$2jQMhO,5=tO9kQ`O,5=tO$%dQ`O,5=vO9`Q`O,5=vO!CUQpO,5=vO!C^QMhO,5=vO:dQMhO,5=vO$2xQ`O'#KcO$3TQ`O,5=wOOQ[1G.k1G.kO$3YQ!0LrO1G.kO@zQ`O1G.kO$3eQ`O1G.kO9uQ!0LrO1G.kO$5mQ!fO,5AQO$5zQ`O,5AQO9eQ`O,5AQO$6VQlO,5>PO$6^Q`O,5>POOQ[1G3i1G3iO`QlO1G3iOOQ[1G3o1G3oOOQ[1G3q1G3qO?TQ`O1G3sO$6cQlO1G3uO$:gQlO'#HtOOQ[1G3x1G3xO$:tQ`O'#HzO?YQ`O'#H|OOQ[1G4O1G4OO$:|QlO1G4OO9uQ!0LrO1G4UOOQ[1G4W1G4WOOQ!0Lb'#G_'#G_O9uQ!0LrO1G4YO9uQ!0LrO1G4[O$?TQ`O,5@bO!)[QlO,5;`O9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CUQpO,5:XO$?YQ?MtO,5:XOOQO,5;`,5;`O$?dQpO'#IeO$?zQ`O,5@aOOQ!0Lf1G/r1G/rO$@SQpO'#IkO$@^Q`O,5@pOOQ!0Lb1G0y1G0yO#$`QpO,5:XOOQO'#Ig'#IgO$@fQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CUQpO1G0tO!C^QMhO1G0tOOQ!0Lb1G5|1G5|O!ByQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@mQ!0LrO1G0mO$@xQ!0LrO1G0mO!CUQpO1G0^ODWQpO1G0^O$AWQ!0LrO1G0mOOQO1G0^1G0^O$AlQ!0MxO1G0mPOOO-E<[-E<[POOO1G.h1G.hOOOO1G/i1G/iO$AvQ!bO,5<iO$BOQ!fO1G4jOOQO1G4p1G4pO%[QlO,5?OO$BYQ`O1G5zO$BbQ`O1G6YO$BjQ!fO1G6ZO9eQ`O,5?UO$BtQ!0MxO1G6WO%[QlO1G6WO$CUQ!0LrO1G6WO$CgQ`O1G6VO$CgQ`O1G6VO9eQ`O1G6VO$CoQ`O,5?XO9eQ`O,5?XOOQO,5?X,5?XO$DTQ`O,5?XO$+YQ`O,5?XOOQO-E<k-E<kOOQS1G0a1G0aOOQS1G0c1G0cO#.lQ`O1G0cOOQ[7+(e7+(eO!&zQMhO7+(eO%[QlO7+(eO$DcQ`O7+(eO$DnQMhO7+(eO$D|Q!0MzO,5=XO$GXQ!0MzO,5=ZO$IdQ!0MzO,5=XO$KuQ!0MzO,5=ZO$NWQ!0MzO,59uO%!]Q!0MzO,5<kO%$hQ!0MzO,5<mO%&sQ!0MzO,5<{OOQ!0Lf7+&a7+&aO%)UQ!0MxO7+&aO%)xQlO'#IfO%*VQ`O,5@cO%*_Q!fO,5@cOOQ!0Lf1G0P1G0PO%*iQ`O7+&jOOQ!0Lf7+&j7+&jO%*nQ?MtO,5:fO%[QlO7+&zO%*xQ?MtO,5:bO%+VQ?MtO,5:jO%+aQ?MtO,5:lO%+kQMhO'#IiO%+uQ`O,5@hOOQ!0Lh1G0d1G0dOOQO1G1r1G1rOOQO1G1s1G1sO%+}Q!jO,5<ZO!)[QlO,5<YOOQO-E<l-E<lOOQ!0Lf7+'Y7+'YOOOW7+'e7+'eOOOW1G1|1G1|O%,YQ`O1G1|OOQ!0Lf1G2O1G2OOOOO,59o,59oO%,_Q!dO,59oOOOO-E<`-E<`OOQ!0Lh1G/X1G/XO%,fQ!0MxO7+'kOOQ!0Lh,5?^,5?^O%-YQMhO1G2fP%-aQ`O'#IrPOQ!0Lh-E<p-E<pO%-}QMjO,5?aOOQ!0Lh-E<s-E<sO%.pQMjO,5?cOOQ!0Lh-E<u-E<uO%.zQ!dO1G2wO%/RQ!dO'#CrO%/iQMhO'#KSO$$wQlO'#JvOOQ!0Lh1G2_1G2_O%/sQ`O'#IqO%0[Q`O,5@vO%0[Q`O,5@vO%0dQ`O,5@vO%0oQ`O,5@vOOQO1G2a1G2aO%0}QMjO1G2`O$+YQ`O'#K[O!,TQMhO1G2`O%1_Q(CWO'#IsO%1lQ`O,5@wO!&zQMhO,5@wO%1tQ!dO,5@wOOQ!0Lh1G2d1G2dO%4UQ!fO'#CiO%4`Q`O,5=POOQ!0Lb,5<},5<}O%4hQpO,5<}OOQ!0Lb,5=O,5=OOCwQ`O,5<}O%4sQpO,5<}OOQ!0Lb,5=R,5=RO$+YQ`O,5=VOOQO,5?`,5?`OOQO-E<r-E<rOOQ!0Lp1G2h1G2hO#$`QpO,5<}O$$wQlO,5=PO%5RQ`O,5=OO%5^QpO,5=OO!,TQMhO'#IuO%6WQMjO1G2sO!,TQMhO'#IwO%6yQMjO1G2uO%7TQMjO1G5qO%7_QMjO1G5qOOQO,5?e,5?eOOQO-E<w-E<wOOQO1G.{1G.{O!,TQMhO1G5qO!,TQMhO1G5qO!:]QpO,59wO%[QlO,59wOOQ!0Lh,5<j,5<jO%7lQ`O1G2ZO!,TQMhO1G2bO%7qQ!0MxO7+'mOOQ!0Lf7+'m7+'mO!$wQlO7+'mO%8eQ`O,5;`OOQ!0Lb,5?g,5?gOOQ!0Lb-E<y-E<yO%8jQ!dO'#K^O#(ZQ`O7+(eO4UQ!fO7+(eO$DfQ`O7+(eO%8tQ!0MvO'#CiO%9XQ!0MvO,5=SO%9lQ`O,5=SO%9tQ`O,5=SOOQ!0Lb1G5o1G5oOOQ[7+$a7+$aO!ByQ!0LrO7+$aO!CUQpO7+$aO!$wQlO7+&aO%9yQ`O'#JQO%:bQ`O,5APOOQO1G3h1G3hO9kQ`O,5APO%:bQ`O,5APO%:jQ`O,5APOOQO,5?m,5?mOOQO-E=P-E=POOQ!0Lf7+'T7+'TO%:oQ`O7+)QO9uQ!0LrO7+)QO9kQ`O7+)QO@zQ`O7+)QO%:tQ`O7+)QOOQ[7+)Q7+)QOOQ[7+(p7+(pO%:yQ!0MvO7+(mO!&zQMhO7+(mO!E^Q`O7+(nOOQ[7+(n7+(nO!&zQMhO7+(nO%;TQ`O'#KbO%;`Q`O,5=lOOQO,5?i,5?iOOQO-E<{-E<{OOQ[7+(s7+(sO%<rQpO'#HZOOQ[1G3`1G3`O!&zQMhO1G3`O%[QlO1G3`O%<yQ`O1G3`O%=UQMhO1G3`O9uQ!0LrO1G3bO$%dQ`O1G3bO9`Q`O1G3bO!CUQpO1G3bO!C^QMhO1G3bO%=dQ`O'#JPO%=xQ`O,5@}O%>QQpO,5@}OOQ!0Lb1G3c1G3cOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>]Q`O7+$VO%[QlO1G6lO%[QlO1G6mO%>bQ!0LrO1G6lO%>lQlO1G3kO%>sQ`O1G3kO%>xQlO1G3kOOQ[7+)T7+)TO9uQ!0LrO7+)_O`QlO7+)aOOQ['#Kh'#KhOOQ['#JS'#JSO%?PQlO,5>`OOQ[,5>`,5>`O%[QlO'#HuO%?^Q`O'#HwOOQ[,5>f,5>fO9eQ`O,5>fOOQ[,5>h,5>hOOQ[7+)j7+)jOOQ[7+)p7+)pOOQ[7+)t7+)tOOQ[7+)v7+)vO%?cQpO1G5|O%?}Q?MtO1G0zO%@XQ`O1G0zOOQO1G/s1G/sO%@dQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?P,5?POOQO-E<c-E<cOOQO,5?V,5?VOOQO-E<i-E<iO!CUQpO1G/sOOQO-E<e-E<eOOQ!0Ln1G0]1G0]OOQ!0Lf7+%u7+%uO#(ZQ`O7+%uOOQ!0Lf7+&`7+&`O?YQ`O7+&`O!CUQpO7+&`OOQO7+%x7+%xO$AlQ!0MxO7+&XOOQO7+&X7+&XO%[QlO7+&XO%@nQ!0LrO7+&XO!ByQ!0LrO7+%xO!CUQpO7+%xO%@yQ!0LrO7+&XO%AXQ!0MxO7++rO%[QlO7++rO%AiQ`O7++qO%AiQ`O7++qOOQO1G4s1G4sO9eQ`O1G4sO%AqQ`O1G4sOOQS7+%}7+%}O#(ZQ`O<<LPO4UQ!fO<<LPO%BPQ`O<<LPOOQ[<<LP<<LPO!&zQMhO<<LPO%[QlO<<LPO%BXQ`O<<LPO%BdQ!0MzO,5?aO%DoQ!0MzO,5?cO%FzQ!0MzO1G2`O%I]Q!0MzO1G2sO%KhQ!0MzO1G2uO%MsQ!fO,5?QO%[QlO,5?QOOQO-E<d-E<dO%M}Q`O1G5}OOQ!0Lf<<JU<<JUO%NVQ?MtO1G0uO&!^Q?MtO1G1PO&!eQ?MtO1G1PO&$fQ?MtO1G1PO&$mQ?MtO1G1PO&&nQ?MtO1G1PO&(oQ?MtO1G1PO&(vQ?MtO1G1PO&(}Q?MtO1G1PO&+OQ?MtO1G1PO&+VQ?MtO1G1PO&+^Q!0MxO<<JfO&-UQ?MtO1G1PO&.RQ?MvO1G1PO&/UQ?MvO'#JlO&1[Q?MtO1G1cO&1iQ?MtO1G0UO&1sQMjO,5?TOOQO-E<g-E<gO!)[QlO'#FqOOQO'#KZ'#KZOOQO1G1u1G1uO&1}Q`O1G1tO&2SQ?MtO,5?[OOOW7+'h7+'hOOOO1G/Z1G/ZO&2^Q!dO1G4xOOQ!0Lh7+(Q7+(QP!&zQMhO,5?^O!,TQMhO7+(cO&2eQ`O,5?]O9eQ`O,5?]O$+YQ`O,5?]OOQO-E<o-E<oO&2sQ`O1G6bO&2sQ`O1G6bO&2{Q`O1G6bO&3WQMjO7+'zO&3hQ!dO,5?_O&3rQ`O,5?_O!&zQMhO,5?_OOQO-E<q-E<qO&3wQ!dO1G6cO&4RQ`O1G6cO&4ZQ`O1G2kO!&zQMhO1G2kOOQ!0Lb1G2i1G2iOOQ!0Lb1G2j1G2jO%4hQpO1G2iO!CUQpO1G2iOCwQ`O1G2iOOQ!0Lb1G2q1G2qO&4`QpO1G2iO&4nQ`O1G2kO$+YQ`O1G2jOCwQ`O1G2jO$$wQlO1G2kO&4vQ`O1G2jO&5jQMjO,5?aOOQ!0Lh-E<t-E<tO&6]QMjO,5?cOOQ!0Lh-E<v-E<vO!,TQMhO7++]O&6gQMjO7++]O&6qQMjO7++]OOQ!0Lh1G/c1G/cO&7OQ`O1G/cOOQ!0Lh7+'u7+'uO&7TQMjO7+'|O&7eQ!0MxO<<KXOOQ!0Lf<<KX<<KXO&8XQ`O1G0zO!&zQMhO'#IzO&8^Q`O,5@xO&:`Q!fO<<LPO!&zQMhO1G2nO&:gQ!0LrO1G2nOOQ[<<G{<<G{O!ByQ!0LrO<<G{O&:xQ!0MxO<<I{OOQ!0Lf<<I{<<I{OOQO,5?l,5?lO&;lQ`O,5?lO&;qQ`O,5?lOOQO-E=O-E=OO&<PQ`O1G6kO&<PQ`O1G6kO9kQ`O1G6kO@zQ`O<<LlOOQ[<<Ll<<LlO&<XQ`O<<LlO9uQ!0LrO<<LlO9kQ`O<<LlOOQ[<<LX<<LXO%:yQ!0MvO<<LXOOQ[<<LY<<LYO!E^Q`O<<LYO&<^QpO'#I|O&<iQ`O,5@|O!)[QlO,5@|OOQ[1G3W1G3WOOQO'#JO'#JOO9uQ!0LrO'#JOO&<qQpO,5=uOOQ[,5=u,5=uO&<xQpO'#EgO&=PQpO'#GeO&=UQ`O7+(zO&=ZQ`O7+(zOOQ[7+(z7+(zO!&zQMhO7+(zO%[QlO7+(zO&=cQ`O7+(zOOQ[7+(|7+(|O9uQ!0LrO7+(|O$%dQ`O7+(|O9`Q`O7+(|O!CUQpO7+(|O&=nQ`O,5?kOOQO-E<}-E<}OOQO'#H^'#H^O&=yQ`O1G6iO9uQ!0LrO<<GqOOQ[<<Gq<<GqO@zQ`O<<GqO&>RQ`O7+,WO&>WQ`O7+,XO%[QlO7+,WO%[QlO7+,XOOQ[7+)V7+)VO&>]Q`O7+)VO&>bQlO7+)VO&>iQ`O7+)VOOQ[<<Ly<<LyOOQ[<<L{<<L{OOQ[-E=Q-E=QOOQ[1G3z1G3zO&>nQ`O,5>aOOQ[,5>c,5>cO&>sQ`O1G4QO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&>xQ?MtO1G6ZO?YQ`O7+%_OOQ!0Lf<<Ia<<IaOOQ!0Lf<<Iz<<IzO?YQ`O<<IzOOQO<<Is<<IsO$AlQ!0MxO<<IsO%[QlO<<IsOOQO<<Id<<IdO!ByQ!0LrO<<IdO&?SQ!0LrO<<IsO&?_Q!0MxO<= ^O&?oQ`O<= ]OOQO7+*_7+*_O9eQ`O7+*_OOQ[ANAkANAkO&?wQ!fOANAkO!&zQMhOANAkO#(ZQ`OANAkO4UQ!fOANAkO&@OQ`OANAkO%[QlOANAkO&@WQ!0MzO7+'zO&BiQ!0MzO,5?aO&DtQ!0MzO,5?cO&GPQ!0MzO7+'|O&IbQ!fO1G4lO&IlQ?MtO7+&aO&KpQ?MvO,5=XO&MwQ?MvO,5=ZO&NXQ?MvO,5=XO&NiQ?MvO,5=ZO&NyQ?MvO,59uO'#PQ?MvO,5<kO'%SQ?MvO,5<mO''hQ?MvO,5<{O')^Q?MtO7+'kO')kQ?MtO7+'mO')xQ`O,5<]OOQO7+'`7+'`OOQ!0Lh7+*d7+*dO')}QMjO<<K}OOQO1G4w1G4wO'*UQ`O1G4wO'*aQ`O1G4wO'*oQ`O7++|O'*oQ`O7++|O!&zQMhO1G4yO'*wQ!dO1G4yO'+RQ`O7++}O'+ZQ`O7+(VO'+fQ!dO7+(VOOQ!0Lb7+(T7+(TOOQ!0Lb7+(U7+(UO!CUQpO7+(TOCwQ`O7+(TO'+pQ`O7+(VO!&zQMhO7+(VO$+YQ`O7+(UO'+uQ`O7+(VOCwQ`O7+(UO'+}QMjO<<NwO!,TQMhO<<NwOOQ!0Lh7+$}7+$}O',XQ!dO,5?fOOQO-E<x-E<xO',cQ!0MvO7+(YO!&zQMhO7+(YOOQ[AN=gAN=gO9kQ`O1G5WOOQO1G5W1G5WO',sQ`O1G5WO',xQ`O7+,VO',xQ`O7+,VO9uQ!0LrOANBWO@zQ`OANBWOOQ[ANBWANBWO'-QQ`OANBWOOQ[ANAsANAsOOQ[ANAtANAtO'-VQ`O,5?hOOQO-E<z-E<zO'-bQ?MtO1G6hOOQO,5?j,5?jOOQO-E<|-E<|OOQ[1G3a1G3aO'-lQ`O,5=POOQ[<<Lf<<LfO!&zQMhO<<LfO&=UQ`O<<LfO'-qQ`O<<LfO%[QlO<<LfOOQ[<<Lh<<LhO9uQ!0LrO<<LhO$%dQ`O<<LhO9`Q`O<<LhO'-yQpO1G5VO'.UQ`O7+,TOOQ[AN=]AN=]O9uQ!0LrOAN=]OOQ[<= r<= rOOQ[<= s<= sO'.^Q`O<= rO'.cQ`O<= sOOQ[<<Lq<<LqO'.hQ`O<<LqO'.mQlO<<LqOOQ[1G3{1G3{O?YQ`O7+)lO'.tQ`O<<JQO'/PQ?MtO<<JQOOQO<<Hy<<HyOOQ!0LfAN?fAN?fOOQOAN?_AN?_O$AlQ!0MxOAN?_OOQOAN?OAN?OO%[QlOAN?_OOQO<<My<<MyOOQ[G27VG27VO!&zQMhOG27VO#(ZQ`OG27VO'/ZQ!fOG27VO4UQ!fOG27VO'/bQ`OG27VO'/jQ?MtO<<JfO'/wQ?MvO1G2`O'1mQ?MvO,5?aO'3pQ?MvO,5?cO'5sQ?MvO1G2sO'7vQ?MvO1G2uO'9yQ?MtO<<KXO':WQ?MtO<<I{OOQO1G1w1G1wO!,TQMhOANAiOOQO7+*c7+*cO':eQ`O7+*cO':pQ`O<= hO':xQ!dO7+*eOOQ!0Lb<<Kq<<KqO$+YQ`O<<KqOCwQ`O<<KqO';SQ`O<<KqO!&zQMhO<<KqOOQ!0Lb<<Ko<<KoO!CUQpO<<KoO';_Q!dO<<KqOOQ!0Lb<<Kp<<KpO';iQ`O<<KqO!&zQMhO<<KqO$+YQ`O<<KpO';nQMjOANDcO';xQ!0MvO<<KtOOQO7+*r7+*rO9kQ`O7+*rO'<YQ`O<= qOOQ[G27rG27rO9uQ!0LrOG27rO@zQ`OG27rO!)[QlO1G5SO'<bQ`O7+,SO'<jQ`O1G2kO&=UQ`OANBQOOQ[ANBQANBQO!&zQMhOANBQO'<oQ`OANBQOOQ[ANBSANBSO9uQ!0LrOANBSO$%dQ`OANBSOOQO'#H_'#H_OOQO7+*q7+*qOOQ[G22wG22wOOQ[ANE^ANE^OOQ[ANE_ANE_OOQ[ANB]ANB]O'<wQ`OANB]OOQ[<<MW<<MWO!)[QlOAN?lOOQOG24yG24yO$AlQ!0MxOG24yO#(ZQ`OLD,qOOQ[LD,qLD,qO!&zQMhOLD,qO'<|Q!fOLD,qO'=TQ?MvO7+'zO'>yQ?MvO,5?aO'@|Q?MvO,5?cO'CPQ?MvO7+'|O'DuQMjOG27TOOQO<<M}<<M}OOQ!0LbANA]ANA]O$+YQ`OANA]OCwQ`OANA]O'EVQ!dOANA]OOQ!0LbANAZANAZO'E^Q`OANA]O!&zQMhOANA]O'EiQ!dOANA]OOQ!0LbANA[ANA[OOQO<<N^<<N^OOQ[LD-^LD-^O9uQ!0LrOLD-^O'EsQ?MtO7+*nOOQO'#Gf'#GfOOQ[G27lG27lO&=UQ`OG27lO!&zQMhOG27lOOQ[G27nG27nO9uQ!0LrOG27nOOQ[G27wG27wO'E}Q?MtOG25WOOQOLD*eLD*eOOQ[!$(!]!$(!]O#(ZQ`O!$(!]O!&zQMhO!$(!]O'FXQ!0MzOG27TOOQ!0LbG26wG26wO$+YQ`OG26wO'HjQ`OG26wOCwQ`OG26wO'HuQ!dOG26wO!&zQMhOG26wOOQ[!$(!x!$(!xOOQ[LD-WLD-WO&=UQ`OLD-WOOQ[LD-YLD-YOOQ[!)9Ew!)9EwO#(ZQ`O!)9EwOOQ!0LbLD,cLD,cO$+YQ`OLD,cOCwQ`OLD,cO'H|Q`OLD,cO'IXQ!dOLD,cOOQ[!$(!r!$(!rOOQ[!.K;c!.K;cO'I`Q?MvOG27TOOQ!0Lb!$( }!$( }O$+YQ`O!$( }OCwQ`O!$( }O'KUQ`O!$( }OOQ!0Lb!)9Ei!)9EiO$+YQ`O!)9EiOCwQ`O!)9EiOOQ!0Lb!.K;T!.K;TO$+YQ`O!.K;TOOQ!0Lb!4/0o!4/0oO!)[QlO'#DzO1PQ`O'#EXO'KaQ!fO'#JrO'KhQ!L^O'#DvO'KoQlO'#EOO'KvQ!fO'#CiO'N^Q!fO'#CiO!)[QlO'#EQO'NnQlO,5;ZO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO'#IpO(!qQ`O,5<iO!)[QlO,5;eO(!yQMhO,5;eO($dQMhO,5;eO!)[QlO,5;wO!&zQMhO'#GmO(!yQMhO'#GmO!&zQMhO'#GoO(!yQMhO'#GoO1SQ`O'#DZO1SQ`O'#DZO!&zQMhO'#GPO(!yQMhO'#GPO!&zQMhO'#GRO(!yQMhO'#GRO!&zQMhO'#GaO(!yQMhO'#GaO!)[QlO,5:jO($kQpO'#D_O($uQpO'#JvO!)[QlO,5@oO'NnQlO1G0uO(%PQ?MtO'#CiO!)[QlO1G2PO!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO(%ZQ!dO'#CrO!&zQMhO,5<tO(!yQMhO,5<tO'NnQlO1G2RO!)[QlO7+&zO!&zQMhO1G2`O(!yQMhO1G2`O!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO!&zQMhO1G2bO(!yQMhO1G2bO'NnQlO7+'mO'NnQlO7+&aO!&zQMhOANAiO(!yQMhOANAiO(%nQ`O'#EoO(%sQ`O'#EoO(%{Q`O'#F]O(&QQ`O'#EyO(&VQ`O'#KTO(&bQ`O'#KRO(&mQ`O,5;ZO(&rQMjO,5<eO(&yQ`O'#GYO('OQ`O'#GYO('TQ`O,5<eO(']Q`O,5<gO('eQ`O,5;ZO('mQ?MtO1G1`O('tQ`O,5<tO('yQ`O,5<tO((OQ`O,5<vO((TQ`O,5<vO((YQ`O1G2RO((_Q`O1G0uO((dQMjO<<K}O((kQMjO<<K}O((rQMhO'#F|O9`Q`O'#F{OAuQ`O'#EnO!)[QlO,5;tO!3oQ`O'#GYO!3oQ`O'#GYO!3oQ`O'#G[O!3oQ`O'#G[O!,TQMhO7+(cO!,TQMhO7+(cO%.zQ!dO1G2wO%.zQ!dO1G2wO!&zQMhO,5=]O!&zQMhO,5=]",stateData:"()x~O'|OS'}OSTOS(ORQ~OPYOQYOSfOY!VOaqOdzOeyOl!POpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!uwO!xxO!|]O$W|O$niO%h}O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO&W!WO&^!XO&`!YO&b!ZO&d![O&g!]O&m!^O&s!_O&u!`O&w!aO&y!bO&{!cO(TSO(VTO(YUO(aVO(o[O~OWtO~P`OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa!wOs!nO!S!oO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!xO#W!pO#X!pO#[!zO#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O(O!{O~OP]XR]X[]Xa]Xj]Xr]X!Q]X!S]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X'z]X(a]X(r]X(y]X(z]X~O!g%RX~P(qO_!}O(V#PO(W!}O(X#PO~O_#QO(X#PO(Y#PO(Z#QO~Ox#SO!U#TO(b#TO(c#VO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T<ZO(VTO(YUO(aVO(o[O~O![#ZO!]#WO!Y(hP!Y(vP~P+}O!^#cO~P`OPYOQYOSfOd!jOe!iOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(VTO(YUO(aVO(o[O~Op#mO![#iO!|]O#i#lO#j#iO(T<[O!k(sP~P.iO!l#oO(T#nO~O!x#sO!|]O%h#tO~O#k#uO~O!g#vO#k#uO~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!]$_O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa(fX'z(fX'w(fX!k(fX!Y(fX!_(fX%i(fX!g(fX~P1qO#S$dO#`$eO$Q$eOP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX!_(gX%i(gX~Oa(gX'z(gX'w(gX!Y(gX!k(gXv(gX!g(gX~P4UO#`$eO~O$]$hO$_$gO$f$mO~OSfO!_$nO$i$oO$k$qO~Oh%VOj%dOk%dOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T$sO(VTO(YUO(a$uO(y$}O(z%POg(^P~Ol%[O~P7eO!l%eO~O!S%hO!_%iO(T%gO~O!g%mO~Oa%nO'z%nO~O!Q%rO~P%[O(U!lO~P%[O%n%vO~P%[Oh%VO!l%eO(T%gO(U!lO~Oe%}O!l%eO(T%gO~Oj$RO~O!_&PO(T%gO(U!lO(VTO(YUO`)WP~O!Q&SO!l&RO%j&VO&T&WO~P;SO!x#sO~O%s&YO!S)SX!_)SX(T)SX~O(T&ZO~Ol!PO!u&`O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO~Od&eOe&dO!x&bO%h&cO%{&aO~P<bOd&hOeyOl!PO!_&gO!u&`O!xxO!|]O%h}O%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO~Ob&kO#`&nO%j&iO(U!lO~P=gO!l&oO!u&sO~O!l#oO~O!_XO~Oa%nO'x&{O'z%nO~Oa%nO'x'OO'z%nO~Oa%nO'x'QO'z%nO~O'w]X!Y]Xv]X!k]X&[]X!_]X%i]X!g]X~P(qO!b'_O!c'WO!d'WO(U!lO(VTO(YUO~Os'UO!S'TO!['XO(e'SO!^(iP!^(xP~P@nOn'bO!_'`O(T%gO~Oe'gO!l%eO(T%gO~O!Q&SO!l&RO~Os!nO!S!oO!|<VO#T!pO#U!pO#W!pO#X!pO(U!lO(VTO(YUO(e!mO(o!sO~O!b'mO!c'lO!d'lO#V!pO#['nO#]'nO~PBYOa%nOh%VO!g#vO!l%eO'z%nO(r'pO~O!p'tO#`'rO~PChOs!nO!S!oO(VTO(YUO(e!mO(o!sO~O!_XOs(mX!S(mX!b(mX!c(mX!d(mX!|(mX#T(mX#U(mX#V(mX#W(mX#X(mX#[(mX#](mX(U(mX(V(mX(Y(mX(e(mX(o(mX~O!c'lO!d'lO(U!lO~PDWO(P'xO(Q'xO(R'zO~O_!}O(V'|O(W!}O(X'|O~O_#QO(X'|O(Y'|O(Z#QO~Ov(OO~P%[Ox#SO!U#TO(b#TO(c(RO~O![(TO!Y'WX!Y'^X!]'WX!]'^X~P+}O!](VO!Y(hX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!](VO!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~O!Y(hX~PHRO!Y([O~O!Y(uX!](uX!g(uX!k(uX(r(uX~O#`(uX#k#dX!^(uX~PJUO#`(]O!Y(wX!](wX~O!](^O!Y(vX~O!Y(aO~O#`$eO~PJUO!^(bO~P`OR#zO!Q#yO!S#{O!l#xO(aVOP!na[!naj!nar!na!]!na!p!na#R!na#n!na#o!na#p!na#q!na#r!na#s!na#t!na#u!na#v!na#x!na#z!na#{!na(r!na(y!na(z!na~Oa!na'z!na'w!na!Y!na!k!nav!na!_!na%i!na!g!na~PKlO!k(cO~O!g#vO#`(dO(r'pO!](tXa(tX'z(tX~O!k(tX~PNXO!S%hO!_%iO!|]O#i(iO#j(hO(T%gO~O!](jO!k(sX~O!k(lO~O!S%hO!_%iO#j(hO(T%gO~OP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~O!g#vO!k(gX~P! uOR(nO!Q(mO!l#xO#S$dO!|!{a!S!{a~O!x!{a%h!{a!_!{a#i!{a#j!{a(T!{a~P!#vO!x(rO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~O#k(xO~O![(zO!k(kP~P%[O(e(|O(o[O~O!S)OO!l#xO(e(|O(o[O~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]$_Oa$qa'z$qa'w$qa!k$qa!Y$qa!_$qa%i$qa!g$qa~Ol)dO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Og(pP~P!,TO!Q)iO!g)hO!_$^X$Z$^X$]$^X$_$^X$f$^X~O!g)hO!_({X$Z({X$]({X$_({X$f({X~O!Q)iO~P!.^O!Q)iO!_({X$Z({X$]({X$_({X$f({X~O!_)kO$Z)oO$])jO$_)jO$f)pO~O![)sO~P!)[O$]$hO$_$gO$f)wO~On$zX!Q$zX#S$zX'y$zX(y$zX(z$zX~OgmXg$zXnmX!]mX#`mX~P!0SOx)yO(b)zO(c)|O~On*VO!Q*OO'y*PO(y$}O(z%PO~Og)}O~P!1WOg*WO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S*YO!_*ZO!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op*`O}O(T&ZO~O!l+SO~O(T(vO~Op+WO!S%hO![#iO!_%iO!|]O#i#lO#j#iO(T%gO!k(sP~O!g#vO#k+XO~O!S%hOTX'z)TX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa!ja!]!ja'z!ja'w!ja!Y!ja!k!jav!ja!_!ja%i!ja!g!ja~P!:tOR#zO!Q#yO!S#{O!l#xO(aVOP!ra[!raj!rar!ra!]!ra!p!ra#R!ra#n!ra#o!ra#p!ra#q!ra#r!ra#s!ra#t!ra#u!ra#v!ra#x!ra#z!ra#{!ra(r!ra(y!ra(z!ra~Oa!ra'z!ra'w!ra!Y!ra!k!rav!ra!_!ra%i!ra!g!ra~P!=[OR#zO!Q#yO!S#{O!l#xO(aVOP!ta[!taj!tar!ta!]!ta!p!ta#R!ta#n!ta#o!ta#p!ta#q!ta#r!ta#s!ta#t!ta#u!ta#v!ta#x!ta#z!ta#{!ta(r!ta(y!ta(z!ta~Oa!ta'z!ta'w!ta!Y!ta!k!tav!ta!_!ta%i!ta!g!ta~P!?rOh%VOn+gO!_'`O%i+fO~O!g+iOa(]X!_(]X'z(]X!](]X~Oa%nO!_XO'z%nO~Oh%VO!l%eO~Oh%VO!l%eO(T%gO~O!g#vO#k(xO~Ob+tO%j+uO(T+qO(VTO(YUO!^)XP~O!]+vO`)WX~O[+zO~O`+{O~O!_&PO(T%gO(U!lO`)WP~O%j,OO~P;SOh%VO#`,SO~Oh%VOn,VO!_$|O~O!_,XO~O!Q,ZO!_XO~O%n%vO~O!x,`O~Oe,eO~Ob,fO(T#nO(VTO(YUO!^)VP~Oe%}O~O%j!QO(T&ZO~P=gO[,kO`,jO~OPYOQYOSfOdzOeyOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!iuO!lZO!oYO!pYO!qYO!svO!xxO!|]O$niO%h}O(VTO(YUO(aVO(o[O~O!_!eO!u!gO$W!kO(T!dO~P!FyO`,jOa%nO'z%nO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa,pOl!OO!uwO%l!OO%m!OO%n!OO~P!IcO!l&oO~O&^,vO~O!_,xO~O&o,zO&q,{OP&laQ&laS&laY&laa&lad&lae&lal&lap&lar&las&lat&laz&la|&la!O&la!S&la!W&la!X&la!_&la!i&la!l&la!o&la!p&la!q&la!s&la!u&la!x&la!|&la$W&la$n&la%h&la%j&la%l&la%m&la%n&la%q&la%s&la%v&la%w&la%y&la&W&la&^&la&`&la&b&la&d&la&g&la&m&la&s&la&u&la&w&la&y&la&{&la'w&la(T&la(V&la(Y&la(a&la(o&la!^&la&e&lab&la&j&la~O(T-QO~Oh!eX!]!RX!^!RX!g!RX!g!eX!l!eX#`!RX~O!]!eX!^!eX~P#!iO!g-VO#`-UOh(jX!]#hX!^#hX!g(jX!l(jX~O!](jX!^(jX~P##[Oh%VO!g-XO!l%eO!]!aX!^!aX~Os!nO!S!oO(VTO(YUO(e!mO~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(VTO(YUO(aVO(o[O~O(T=QO~P#$qO!]-]O!^(iX~O!^-_O~O!g-VO#`-UO!]#hX!^#hX~O!]-`O!^(xX~O!^-bO~O!c-cO!d-cO(U!lO~P#$`O!^-fO~P'_On-iO!_'`O~O!Y-nO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(U!{a(V!{a(Y!{a(e!{a(o!{a~P!#vO!p-sO#`-qO~PChO!c-uO!d-uO(U!lO~PDWOa%nO#`-qO'z%nO~Oa%nO!g#vO#`-qO'z%nO~Oa%nO!g#vO!p-sO#`-qO'z%nO(r'pO~O(P'xO(Q'xO(R-zO~Ov-{O~O!Y'Wa!]'Wa~P!:tO![.PO!Y'WX!]'WX~P%[O!](VO!Y(ha~O!Y(ha~PHRO!](^O!Y(va~O!S%hO![.TO!_%iO(T%gO!Y'^X!]'^X~O#`.VO!](ta!k(taa(ta'z(ta~O!g#vO~P#,wO!](jO!k(sa~O!S%hO!_%iO#j.ZO(T%gO~Op.`O!S%hO![.]O!_%iO!|]O#i._O#j.]O(T%gO!]'aX!k'aX~OR.dO!l#xO~Oh%VOn.gO!_'`O%i.fO~Oa#ci!]#ci'z#ci'w#ci!Y#ci!k#civ#ci!_#ci%i#ci!g#ci~P!:tOn>]O!Q*OO'y*PO(y$}O(z%PO~O#k#_aa#_a#`#_a'z#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#k(`XP(`XR(`X[(`Xa(`Xj(`Xr(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X'z(`X(a(`X(r(`X!k(`X!Y(`X'w(`Xv(`X!_(`X%i(`X!g(`X~P!6kO!].tO!k(kX~P!:tO!k.wO~O!Y.yO~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mia#mij#mir#mi!]#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#n#mi~P#3cO#n$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO[#mia#mij#mi!]#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#r#mi~P#6QO#r$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO(aVOa#mi!]#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#v#mi~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO(aVO(z#}Oa#mi!]#mi#z#mi#{#mi'z#mi(r#mi(y#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#x$UO~P#;VO#x#mi~P#;VO#v$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO(aVO(y#|O(z#}Oa#mi!]#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#z#mi~P#={O#z$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X!]]X!^]X~O$O]X~P#@jOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO#z<gO#{<hO(aVO(r$YO(y#|O(z#}O~O$O.{O~P#BwO#S$dO#`<nO$Q<nO$O(gX!^(gX~P! uOa'da!]'da'z'da'w'da!k'da!Y'dav'da!_'da%i'da!g'da~P!:tO[#mia#mij#mir#mi!]#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO(y#mi(z#mi~P#EyOn>]O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P#EyO!]/POg(pX~P!1WOg/RO~Oa$Pi!]$Pi'z$Pi'w$Pi!Y$Pi!k$Piv$Pi!_$Pi%i$Pi!g$Pi~P!:tO$]/SO$_/SO~O$]/TO$_/TO~O!g)hO#`/UO!_$cX$Z$cX$]$cX$_$cX$f$cX~O![/VO~O!_)kO$Z/XO$])jO$_)jO$f/YO~O!]<iO!^(fX~P#BwO!^/ZO~O!g)hO$f({X~O$f/]O~Ov/^O~P!&zOx)yO(b)zO(c/aO~O!S/dO~O(y$}On%aa!Q%aa'y%aa(z%aa!]%aa#`%aa~Og%aa$O%aa~P#L{O(z%POn%ca!Q%ca'y%ca(y%ca!]%ca#`%ca~Og%ca$O%ca~P#MnO!]fX!gfX!kfX!k$zX(rfX~P!0SOp%WOPP~P!1uOr*sO!b*qO!c*kO!d*kO!l*bO#[*rO%`*mO(U!lO(VTO(YUO~Os<}O!S/nO![+[O!^*pO(e<|O!^(xP~P$ [O!k/oO~P#/sO!]/pO!g#vO(r'pO!k)OX~O!k/uO~OnoX!QoX'yoX(yoX(zoX~O!g#vO!koX~P$#OOp/wO!S%hO![*^O!_%iO(T%gO!k)OP~O#k/xO~O!Y$zX!]$zX!g%RX~P!0SO!]/yO!Y)PX~P#/sO!g/{O~O!Y/}O~OpkO(T0OO~P.iOh%VOr0TO!g#vO!l%eO(r'pO~O!g+iO~Oa%nO!]0XO'z%nO~O!^0ZO~P!5iO!c0[O!d0[O(U!lO~P#$`Os!nO!S0]O(VTO(YUO(e!mO~O#[0_O~Og%aa!]%aa#`%aa$O%aa~P!1WOg%ca!]%ca#`%ca$O%ca~P!1WOj%dOk%dOl%dO(T&ZOg'mX!]'mX~O!]*yOg(^a~Og0hO~On0jO#`0iOg(_a!](_a~OR0kO!Q0kO!S0lO#S$dOn}a'y}a(y}a(z}a!]}a#`}a~Og}a$O}a~P$(cO!Q*OO'y*POn$sa(y$sa(z$sa!]$sa#`$sa~Og$sa$O$sa~P$)_O!Q*OO'y*POn$ua(y$ua(z$ua!]$ua#`$ua~Og$ua$O$ua~P$*QO#k0oO~Og%Ta!]%Ta#`%Ta$O%Ta~P!1WO!g#vO~O#k0rO~O!]+^Oa)Ta'z)Ta~OR#zO!Q#yO!S#{O!l#xO(aVOP!ri[!rij!rir!ri!]!ri!p!ri#R!ri#n!ri#o!ri#p!ri#q!ri#r!ri#s!ri#t!ri#u!ri#v!ri#x!ri#z!ri#{!ri(r!ri(y!ri(z!ri~Oa!ri'z!ri'w!ri!Y!ri!k!riv!ri!_!ri%i!ri!g!ri~P$+oOh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op0{O%]0|O(T0zO~P$.VO!g+iOa(]a!_(]a'z(]a!](]a~O#k1SO~O[]X!]fX!^fX~O!]1TO!^)XX~O!^1VO~O[1WO~Ob1YO(T+qO(VTO(YUO~O!_&PO(T%gO`'uX!]'uX~O!]+vO`)Wa~O!k1]O~P!:tO[1`O~O`1aO~O#`1fO~On1iO!_$|O~O(e(|O!^)UP~Oh%VOn1rO!_1oO%i1qO~O[1|O!]1zO!^)VX~O!^1}O~O`2POa%nO'z%nO~O(T#nO(VTO(YUO~O#S$dO#`$eO$Q$eOP(gXR(gX[(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~Oj2SO&[2TOa(gX~P$3pOj2SO#`$eO&[2TO~Oa2VO~P%[Oa2XO~O&e2[OP&ciQ&ciS&ciY&cia&cid&cie&cil&cip&cir&cis&cit&ciz&ci|&ci!O&ci!S&ci!W&ci!X&ci!_&ci!i&ci!l&ci!o&ci!p&ci!q&ci!s&ci!u&ci!x&ci!|&ci$W&ci$n&ci%h&ci%j&ci%l&ci%m&ci%n&ci%q&ci%s&ci%v&ci%w&ci%y&ci&W&ci&^&ci&`&ci&b&ci&d&ci&g&ci&m&ci&s&ci&u&ci&w&ci&y&ci&{&ci'w&ci(T&ci(V&ci(Y&ci(a&ci(o&ci!^&cib&ci&j&ci~Ob2bO!^2`O&j2aO~P`O!_XO!l2dO~O&q,{OP&liQ&liS&liY&lia&lid&lie&lil&lip&lir&lis&lit&liz&li|&li!O&li!S&li!W&li!X&li!_&li!i&li!l&li!o&li!p&li!q&li!s&li!u&li!x&li!|&li$W&li$n&li%h&li%j&li%l&li%m&li%n&li%q&li%s&li%v&li%w&li%y&li&W&li&^&li&`&li&b&li&d&li&g&li&m&li&s&li&u&li&w&li&y&li&{&li'w&li(T&li(V&li(Y&li(a&li(o&li!^&li&e&lib&li&j&li~O!Y2jO~O!]!aa!^!aa~P#BwOs!nO!S!oO![2pO(e!mO!]'XX!^'XX~P@nO!]-]O!^(ia~O!]'_X!^'_X~P!9|O!]-`O!^(xa~O!^2wO~P'_Oa%nO#`3QO'z%nO~Oa%nO!g#vO#`3QO'z%nO~Oa%nO!g#vO!p3UO#`3QO'z%nO(r'pO~Oa%nO'z%nO~P!:tO!]$_Ov$qa~O!Y'Wi!]'Wi~P!:tO!](VO!Y(hi~O!](^O!Y(vi~O!Y(wi!](wi~P!:tO!](ti!k(tia(ti'z(ti~P!:tO#`3WO!](ti!k(tia(ti'z(ti~O!](jO!k(si~O!S%hO!_%iO!|]O#i3]O#j3[O(T%gO~O!S%hO!_%iO#j3[O(T%gO~On3dO!_'`O%i3cO~Oh%VOn3dO!_'`O%i3cO~O#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aav%aa!_%aa%i%aa!g%aa~P#L{O#k%caP%caR%ca[%caa%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%cav%ca!_%ca%i%ca!g%ca~P#MnO#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!]%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aa#`%aav%aa!_%aa%i%aa!g%aa~P#/sO#k%caP%caR%ca[%caa%caj%car%ca!S%ca!]%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%ca#`%cav%ca!_%ca%i%ca!g%ca~P#/sO#k}aP}a[}aa}aj}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a'z}a(a}a(r}a!k}a!Y}a'w}av}a!_}a%i}a!g}a~P$(cO#k$saP$saR$sa[$saa$saj$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa'z$sa(a$sa(r$sa!k$sa!Y$sa'w$sav$sa!_$sa%i$sa!g$sa~P$)_O#k$uaP$uaR$ua[$uaa$uaj$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua'z$ua(a$ua(r$ua!k$ua!Y$ua'w$uav$ua!_$ua%i$ua!g$ua~P$*QO#k%TaP%TaR%Ta[%Taa%Taj%Tar%Ta!S%Ta!]%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta'z%Ta(a%Ta(r%Ta!k%Ta!Y%Ta'w%Ta#`%Tav%Ta!_%Ta%i%Ta!g%Ta~P#/sOa#cq!]#cq'z#cq'w#cq!Y#cq!k#cqv#cq!_#cq%i#cq!g#cq~P!:tO![3lO!]'YX!k'YX~P%[O!].tO!k(ka~O!].tO!k(ka~P!:tO!Y3oO~O$O!na!^!na~PKlO$O!ja!]!ja!^!ja~P#BwO$O!ra!^!ra~P!=[O$O!ta!^!ta~P!?rOg']X!]']X~P!,TO!]/POg(pa~OSfO!_4TO$d4UO~O!^4YO~Ov4ZO~P#/sOa$mq!]$mq'z$mq'w$mq!Y$mq!k$mqv$mq!_$mq%i$mq!g$mq~P!:tO!Y4]O~P!&zO!S4^O~O!Q*OO'y*PO(z%POn'ia(y'ia!]'ia#`'ia~Og'ia$O'ia~P%-fO!Q*OO'y*POn'ka(y'ka(z'ka!]'ka#`'ka~Og'ka$O'ka~P%.XO(r$YO~P#/sO!YfX!Y$zX!]fX!]$zX!g%RX#`fX~P!0SOp%WO(T=WO~P!1uOp4bO!S%hO![4aO!_%iO(T%gO!]'eX!k'eX~O!]/pO!k)Oa~O!]/pO!g#vO!k)Oa~O!]/pO!g#vO(r'pO!k)Oa~Og$|i!]$|i#`$|i$O$|i~P!1WO![4jO!Y'gX!]'gX~P!3tO!]/yO!Y)Pa~O!]/yO!Y)Pa~P#/sOP]XR]X[]Xj]Xr]X!Q]X!S]X!Y]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~Oj%YX!g%YX~P%2OOj4oO!g#vO~Oh%VO!g#vO!l%eO~Oh%VOr4tO!l%eO(r'pO~Or4yO!g#vO(r'pO~Os!nO!S4zO(VTO(YUO(e!mO~O(y$}On%ai!Q%ai'y%ai(z%ai!]%ai#`%ai~Og%ai$O%ai~P%5oO(z%POn%ci!Q%ci'y%ci(y%ci!]%ci#`%ci~Og%ci$O%ci~P%6bOg(_i!](_i~P!1WO#`5QOg(_i!](_i~P!1WO!k5VO~Oa$oq!]$oq'z$oq'w$oq!Y$oq!k$oqv$oq!_$oq%i$oq!g$oq~P!:tO!Y5ZO~O!]5[O!_)QX~P#/sOa$zX!_$zX%^]X'z$zX!]$zX~P!0SO%^5_OaoX!_oX'zoX!]oX~P$#OOp5`O(T#nO~O%^5_O~Ob5fO%j5gO(T+qO(VTO(YUO!]'tX!^'tX~O!]1TO!^)Xa~O[5kO~O`5lO~O[5pO~Oa%nO'z%nO~P#/sO!]5uO#`5wO!^)UX~O!^5xO~Or6OOs!nO!S*iO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!pO#W!pO#X!pO#[5}O#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O!^5|O~P%;eOn6TO!_1oO%i6SO~Oh%VOn6TO!_1oO%i6SO~Ob6[O(T#nO(VTO(YUO!]'sX!^'sX~O!]1zO!^)Va~O(VTO(YUO(e6^O~O`6bO~Oj6eO&[6fO~PNXO!k6gO~P%[Oa6iO~Oa6iO~P%[Ob2bO!^6nO&j2aO~P`O!g6pO~O!g6rOh(ji!](ji!^(ji!g(ji!l(jir(ji(r(ji~O!]#hi!^#hi~P#BwO#`6sO!]#hi!^#hi~O!]!ai!^!ai~P#BwOa%nO#`6|O'z%nO~Oa%nO!g#vO#`6|O'z%nO~O!](tq!k(tqa(tq'z(tq~P!:tO!](jO!k(sq~O!S%hO!_%iO#j7TO(T%gO~O!_'`O%i7WO~On7[O!_'`O%i7WO~O#k'iaP'iaR'ia['iaa'iaj'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia'z'ia(a'ia(r'ia!k'ia!Y'ia'w'iav'ia!_'ia%i'ia!g'ia~P%-fO#k'kaP'kaR'ka['kaa'kaj'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka'z'ka(a'ka(r'ka!k'ka!Y'ka'w'kav'ka!_'ka%i'ka!g'ka~P%.XO#k$|iP$|iR$|i[$|ia$|ij$|ir$|i!S$|i!]$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i'z$|i(a$|i(r$|i!k$|i!Y$|i'w$|i#`$|iv$|i!_$|i%i$|i!g$|i~P#/sO#k%aiP%aiR%ai[%aia%aij%air%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai'z%ai(a%ai(r%ai!k%ai!Y%ai'w%aiv%ai!_%ai%i%ai!g%ai~P%5oO#k%ciP%ciR%ci[%cia%cij%cir%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci'z%ci(a%ci(r%ci!k%ci!Y%ci'w%civ%ci!_%ci%i%ci!g%ci~P%6bO!]'Ya!k'Ya~P!:tO!].tO!k(ki~O$O#ci!]#ci!^#ci~P#BwOP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mij#mir#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#n#mi~P%NdO#n<_O~P%NdOP$[OR#zOr<kO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO[#mij#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#r#mi~P&!lO#r<aO~P&!lOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO(aVO#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#v#mi~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO(aVO(z#}O#z#mi#{#mi$O#mi(r#mi(y#mi!]#mi!^#mi~O#x<eO~P&&uO#x#mi~P&&uO#v<cO~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO(aVO(y#|O(z#}O#{#mi$O#mi(r#mi!]#mi!^#mi~O#z#mi~P&)UO#z<gO~P&)UOa#|y!]#|y'z#|y'w#|y!Y#|y!k#|yv#|y!_#|y%i#|y!g#|y~P!:tO[#mij#mir#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi!]#mi!^#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO(y#mi(z#mi~P&,QOn>^O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P&,QO#S$dOP(`XR(`X[(`Xj(`Xn(`Xr(`X!Q(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X$O(`X'y(`X(a(`X(r(`X(y(`X(z(`X!](`X!^(`X~O$O$Pi!]$Pi!^$Pi~P#BwO$O!ri!^!ri~P$+oOg']a!]']a~P!1WO!^7nO~O!]'da!^'da~P#BwO!Y7oO~P#/sO!g#vO(r'pO!]'ea!k'ea~O!]/pO!k)Oi~O!]/pO!g#vO!k)Oi~Og$|q!]$|q#`$|q$O$|q~P!1WO!Y'ga!]'ga~P#/sO!g7vO~O!]/yO!Y)Pi~P#/sO!]/yO!Y)Pi~O!Y7yO~Oh%VOr8OO!l%eO(r'pO~Oj8QO!g#vO~Or8TO!g#vO(r'pO~O!Q*OO'y*PO(z%POn'ja(y'ja!]'ja#`'ja~Og'ja$O'ja~P&5RO!Q*OO'y*POn'la(y'la(z'la!]'la#`'la~Og'la$O'la~P&5tOg(_q!](_q~P!1WO#`8VOg(_q!](_q~P!1WO!Y8WO~Og%Oq!]%Oq#`%Oq$O%Oq~P!1WOa$oy!]$oy'z$oy'w$oy!Y$oy!k$oyv$oy!_$oy%i$oy!g$oy~P!:tO!g6rO~O!]5[O!_)Qa~O!_'`OP$TaR$Ta[$Taj$Tar$Ta!Q$Ta!S$Ta!]$Ta!l$Ta!p$Ta#R$Ta#n$Ta#o$Ta#p$Ta#q$Ta#r$Ta#s$Ta#t$Ta#u$Ta#v$Ta#x$Ta#z$Ta#{$Ta(a$Ta(r$Ta(y$Ta(z$Ta~O%i7WO~P&8fO%^8[Oa%[i!_%[i'z%[i!]%[i~Oa#cy!]#cy'z#cy'w#cy!Y#cy!k#cyv#cy!_#cy%i#cy!g#cy~P!:tO[8^O~Ob8`O(T+qO(VTO(YUO~O!]1TO!^)Xi~O`8dO~O(e(|O!]'pX!^'pX~O!]5uO!^)Ua~O!^8nO~P%;eO(o!sO~P$&YO#[8oO~O!_1oO~O!_1oO%i8qO~On8tO!_1oO%i8qO~O[8yO!]'sa!^'sa~O!]1zO!^)Vi~O!k8}O~O!k9OO~O!k9RO~O!k9RO~P%[Oa9TO~O!g9UO~O!k9VO~O!](wi!^(wi~P#BwOa%nO#`9_O'z%nO~O!](ty!k(tya(ty'z(ty~P!:tO!](jO!k(sy~O%i9bO~P&8fO!_'`O%i9bO~O#k$|qP$|qR$|q[$|qa$|qj$|qr$|q!S$|q!]$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q'z$|q(a$|q(r$|q!k$|q!Y$|q'w$|q#`$|qv$|q!_$|q%i$|q!g$|q~P#/sO#k'jaP'jaR'ja['jaa'jaj'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja'z'ja(a'ja(r'ja!k'ja!Y'ja'w'jav'ja!_'ja%i'ja!g'ja~P&5RO#k'laP'laR'la['laa'laj'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la'z'la(a'la(r'la!k'la!Y'la'w'lav'la!_'la%i'la!g'la~P&5tO#k%OqP%OqR%Oq[%Oqa%Oqj%Oqr%Oq!S%Oq!]%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq'z%Oq(a%Oq(r%Oq!k%Oq!Y%Oq'w%Oq#`%Oqv%Oq!_%Oq%i%Oq!g%Oq~P#/sO!]'Yi!k'Yi~P!:tO$O#cq!]#cq!^#cq~P#BwO(y$}OP%aaR%aa[%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa$O%aa(a%aa(r%aa!]%aa!^%aa~On%aa!Q%aa'y%aa(z%aa~P&IyO(z%POP%caR%ca[%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca$O%ca(a%ca(r%ca!]%ca!^%ca~On%ca!Q%ca'y%ca(y%ca~P&LQOn>^O!Q*OO'y*PO(z%PO~P&IyOn>^O!Q*OO'y*PO(y$}O~P&LQOR0kO!Q0kO!S0lO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a$O}a'y}a(a}a(r}a(y}a(z}a!]}a!^}a~O!Q*OO'y*POP$saR$sa[$saj$san$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa$O$sa(a$sa(r$sa(y$sa(z$sa!]$sa!^$sa~O!Q*OO'y*POP$uaR$ua[$uaj$uan$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua$O$ua(a$ua(r$ua(y$ua(z$ua!]$ua!^$ua~On>^O!Q*OO'y*PO(y$}O(z%PO~OP%TaR%Ta[%Taj%Tar%Ta!S%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta$O%Ta(a%Ta(r%Ta!]%Ta!^%Ta~P''VO$O$mq!]$mq!^$mq~P#BwO$O$oq!]$oq!^$oq~P#BwO!^9oO~O$O9pO~P!1WO!g#vO!]'ei!k'ei~O!g#vO(r'pO!]'ei!k'ei~O!]/pO!k)Oq~O!Y'gi!]'gi~P#/sO!]/yO!Y)Pq~Or9wO!g#vO(r'pO~O[9yO!Y9xO~P#/sO!Y9xO~Oj:PO!g#vO~Og(_y!](_y~P!1WO!]'na!_'na~P#/sOa%[q!_%[q'z%[q!]%[q~P#/sO[:UO~O!]1TO!^)Xq~O`:YO~O#`:ZO!]'pa!^'pa~O!]5uO!^)Ui~P#BwO!S:]O~O!_1oO%i:`O~O(VTO(YUO(e:eO~O!]1zO!^)Vq~O!k:hO~O!k:iO~O!k:jO~O!k:jO~P%[O#`:mO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%i:rO~P&8fO!_'`O%i:rO~O$O#|y!]#|y!^#|y~P#BwOP$|iR$|i[$|ij$|ir$|i!S$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i$O$|i(a$|i(r$|i!]$|i!^$|i~P''VO!Q*OO'y*PO(z%POP'iaR'ia['iaj'ian'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia$O'ia(a'ia(r'ia(y'ia!]'ia!^'ia~O!Q*OO'y*POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka$O'ka(a'ka(r'ka(y'ka(z'ka!]'ka!^'ka~O(y$}OP%aiR%ai[%aij%ain%air%ai!Q%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai$O%ai'y%ai(a%ai(r%ai(z%ai!]%ai!^%ai~O(z%POP%ciR%ci[%cij%cin%cir%ci!Q%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci$O%ci'y%ci(a%ci(r%ci(y%ci!]%ci!^%ci~O$O$oy!]$oy!^$oy~P#BwO$O#cy!]#cy!^#cy~P#BwO!g#vO!]'eq!k'eq~O!]/pO!k)Oy~O!Y'gq!]'gq~P#/sOr:|O!g#vO(r'pO~O[;QO!Y;PO~P#/sO!Y;PO~Og(_!R!](_!R~P!1WOa%[y!_%[y'z%[y!]%[y~P#/sO!]1TO!^)Xy~O!]5uO!^)Uq~O(T;XO~O!_1oO%i;[O~O!k;_O~O%i;dO~P&8fOP$|qR$|q[$|qj$|qr$|q!S$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q$O$|q(a$|q(r$|q!]$|q!^$|q~P''VO!Q*OO'y*PO(z%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja$O'ja(a'ja(r'ja(y'ja!]'ja!^'ja~O!Q*OO'y*POP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la$O'la(a'la(r'la(y'la(z'la!]'la!^'la~OP%OqR%Oq[%Oqj%Oqr%Oq!S%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq$O%Oq(a%Oq(r%Oq!]%Oq!^%Oq~P''VOg%e!Z!]%e!Z#`%e!Z$O%e!Z~P!1WO!Y;hO~P#/sOr;iO!g#vO(r'pO~O[;kO!Y;hO~P#/sO!]'pq!^'pq~P#BwO!]#h!Z!^#h!Z~P#BwO#k%e!ZP%e!ZR%e!Z[%e!Za%e!Zj%e!Zr%e!Z!S%e!Z!]%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z'z%e!Z(a%e!Z(r%e!Z!k%e!Z!Y%e!Z'w%e!Z#`%e!Zv%e!Z!_%e!Z%i%e!Z!g%e!Z~P#/sOr;tO!g#vO(r'pO~O!Y;uO~P#/sOr;|O!g#vO(r'pO~O!Y;}O~P#/sOP%e!ZR%e!Z[%e!Zj%e!Zr%e!Z!S%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z$O%e!Z(a%e!Z(r%e!Z!]%e!Z!^%e!Z~P''VOr<QO!g#vO(r'pO~Ov(fX~P1qO!Q%rO~P!)[O(U!lO~P!)[O!YfX!]fX#`fX~P%2OOP]XR]X[]Xj]Xr]X!Q]X!S]X!]]X!]fX!l]X!p]X#R]X#S]X#`]X#`fX#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~O!gfX!k]X!kfX(rfX~P'LTOP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_XO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]<iO!^$qa~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<tO!S${O!_$|O!i>WO!l$xO#j<zO$W%`O$t<vO$v<xO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Ol)dO~P(!yOr!eX(r!eX~P#!iOr(jX(r(jX~P##[O!^]X!^fX~P'LTO!YfX!Y$zX!]fX!]$zX#`fX~P!0SO#k<^O~O!g#vO#k<^O~O#`<nO~Oj<bO~O#`=OO!](wX!^(wX~O#`<nO!](uX!^(uX~O#k=PO~Og=RO~P!1WO#k=XO~O#k=YO~Og=RO(T&ZO~O!g#vO#k=ZO~O!g#vO#k=PO~O$O=[O~P#BwO#k=]O~O#k=^O~O#k=cO~O#k=dO~O#k=eO~O#k=fO~O$O=gO~P!1WO$O=hO~P!1WOl=sO~P7eOk#S#T#U#W#X#[#i#j#u$n$t$v$y%]%^%h%i%j%q%s%v%w%y%{~(OT#o!X'|(U#ps#n#qr!Q'}$]'}(T$_(e~",goto:"$9Y)]PPPPPP)^PP)aP)rP+W/]PPPP6mPP7TPP=QPPP@tPA^PA^PPPA^PCfPA^PA^PA^PCjPCoPD^PIWPPPI[PPPPI[L_PPPLeMVPI[PI[PP! eI[PPPI[PI[P!#lI[P!'S!(X!(bP!)U!)Y!)U!,gPPPPPPP!-W!(XPP!-h!/YP!2iI[I[!2n!5z!:h!:h!>gPPP!>oI[PPPPPPPPP!BOP!C]PPI[!DnPI[PI[I[I[I[I[PI[!FQP!I[P!LbP!Lf!Lp!Lt!LtP!IXP!Lx!LxP#!OP#!SI[PI[#!Y#%_CjA^PA^PA^A^P#&lA^A^#)OA^#+vA^#.SA^A^#.r#1W#1W#1]#1f#1W#1qPP#1WPA^#2ZA^#6YA^A^6mPPP#:_PPP#:x#:xP#:xP#;`#:xPP#;fP#;]P#;]#;y#;]#<e#<k#<n)aP#<q)aP#<z#<z#<zP)aP)aP)aP)aPP)aP#=Q#=TP#=T)aP#=XP#=[P)aP)aP)aP)aP)aP)a)aPP#=b#=h#=s#=y#>P#>V#>]#>k#>q#>{#?R#?]#?c#?s#?y#@k#@}#AT#AZ#Ai#BO#Cs#DR#DY#Et#FS#Gt#HS#HY#H`#Hf#Hp#Hv#H|#IW#Ij#IpPPPPPPPPPPP#IvPPPPPPP#Jk#Mx$ b$ i$ qPPP$']P$'f$*_$0x$0{$1O$1}$2Q$2X$2aP$2g$2jP$3W$3[$4S$5b$5g$5}PP$6S$6Y$6^$6a$6e$6i$7e$7|$8e$8i$8l$8o$8y$8|$9Q$9UR!|RoqOXst!Z#d%m&r&t&u&w,s,x2[2_Y!vQ'`-e1o5{Q%tvQ%|yQ&T|Q&j!VS'W!e-]Q'f!iS'l!r!yU*k$|*Z*oQ+o%}S+|&V&WQ,d&dQ-c'_Q-m'gQ-u'mQ0[*qQ1b,OQ1y,eR<{<Y%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_S#q]<V!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU+P%]<s<tQ+t&PQ,f&gQ,m&oQ0x+gQ0}+iQ1Y+uQ2R,kQ3`.gQ5`0|Q5f1TQ6[1zQ7Y3dQ8`5gR9e7['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S!S!nQ!r!v!y!z$|'W'_'`'l'm'n*k*o*q*r-]-c-e-u0[0_1o5{5}%[$ti#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q&X|Q'U!eS'[%i-`Q+t&PQ,P&WQ,f&gQ0n+SQ1Y+uQ1_+{Q2Q,jQ2R,kQ5f1TQ5o1aQ6[1zQ6_1|Q6`2PQ8`5gQ8c5lQ8|6bQ:X8dQ:f8yQ;V:YR<}*ZrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R,h&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'b'r(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>R>S[#]WZ#W#Z'X(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ%wxQ%{yW&Q|&V&W,OQ&_!TQ'c!hQ'e!iQ(q#sS+n%|%}Q+r&PQ,_&bQ,c&dS-l'f'gQ.i(rQ1R+oQ1X+uQ1Z+vQ1^+zQ1t,`S1x,d,eQ2|-mQ5e1TQ5i1WQ5n1`Q6Z1yQ8_5gQ8b5kQ8f5pQ:T8^R;T:U!U$zi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y!^%yy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{Q+h%wQ,T&[Q,W&]Q,b&dQ.h(qQ1s,_U1w,c,d,eQ3e.iQ6U1tS6Y1x1yQ8x6Z#f>T#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o>U<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hW%Ti%V*y>PS&[!Q&iQ&]!RQ&^!SU*}%[%d=sR,R&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^T)z$u){V+P%]<s<tW'[!e%i*Z-`S(}#y#zQ+c%rQ+y&SS.b(m(nQ1j,XQ5T0kR8i5u'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S$i$^c#Y#e%q%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.|.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vT#TV#U'RkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ'Y!eR2q-]!W!nQ!e!r!v!y!z$|'W'_'`'l'm'n*Z*k*o*q*r-]-c-e-u0[0_1o5{5}R1l,ZnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&y!^Q'v!xS(s#u<^Q+l%zQ,]&_Q,^&aQ-j'dQ-w'oS.r(x=PS0q+X=ZQ1P+mQ1n,[Q2c,zQ2e,{Q2m-WQ2z-kQ2}-oS5Y0r=eQ5a1QS5d1S=fQ6t2oQ6x2{Q6}3SQ8]5bQ9Y6vQ9Z6yQ9^7OR:l9V$d$]c#Y#e%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vS(o#p'iQ)P#zS+b%q.|S.c(n(pR3^.d'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS#q]<VQ&t!XQ&u!YQ&w![Q&x!]R2Z,vQ'a!hQ+e%wQ-h'cS.e(q+hQ2x-gW3b.h.i0w0yQ6w2yW7U3_3a3e5^U9a7V7X7ZU:q9c9d9fS;b:p:sQ;p;cR;x;qU!wQ'`-eT5y1o5{!Q_OXZ`st!V!Z#d#h%e%m&i&k&r&t&u&w(j,s,x.[2[2_]!pQ!r'`-e1o5{T#q]<V%^{OPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S(}#y#zS.b(m(n!s=l$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU$fd)_,mS(p#p'iU*v%R(w4OU0m+O.n7gQ5^0xQ7V3`Q9d7YR:s9em!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}Q't!uS(f#g2US-s'k'wQ/s*]Q0R*jQ3U-vQ4f/tQ4r0TQ4s0UQ4x0^Q7r4`S7}4t4vS8R4y4{Q9r7sQ9v7yQ9{8OQ:Q8TS:{9w9xS;g:|;PS;s;h;iS;{;t;uS<P;|;}R<S<QQ#wbQ's!uS(e#g2US(g#m+WQ+Y%fQ+j%xQ+p&OU-r'k't'wQ.W(fU/r*]*`/wQ0S*jQ0V*lQ1O+kQ1u,aS3R-s-vQ3Z.`S4e/s/tQ4n0PS4q0R0^Q4u0WQ6W1vQ7P3US7q4`4bQ7u4fU7|4r4x4{Q8P4wQ8v6XS9q7r7sQ9u7yQ9}8RQ:O8SQ:c8wQ:y9rS:z9v9xQ;S:QQ;^:dS;f:{;PS;r;g;hS;z;s;uS<O;{;}Q<R<PQ<T<SQ=o=jQ={=tR=|=uV!wQ'`-e%^aOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S#wz!j!r=i$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=o>R%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Q%fj!^%xy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{S&Oz!jQ+k%yQ,a&dW1v,b,c,d,eU6X1w1x1yS8w6Y6ZQ:d8x!r=j$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ=t>QR=u>R%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Y#bWZ#W#Z(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ,n&o!p=k$Z$n)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=n'XU']!e%i*ZR2s-`%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ,m&oQ0x+gQ3`.gQ7Y3dR9e7[!b$Tc#Y%q(S(Y(t(y)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!P<d)^)q-Z.|2k2n3p3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!f$Vc#Y%q(S(Y(t(y)W)X)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!T<f)^)q-Z.|2k2n3p3v3w3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!^$Zc#Y%q(S(Y(t(y)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<WQ4_/kz>S)^)q-Z.|2k2n3p4P4X6u7b7k7l8k9X9g9m9n;W;`=vQ>X>ZR>Y>['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS$oh$pR4U/U'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$kf$qQ$ifS)j$l)nR)v$qT$jf$qT)l$l)n'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$oh$pQ$rhR)u$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_!s>Q$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'b)O)s*i+]+g,p,s,x-i.g/V/n0]0l1r2S2T2V2X2[2_2a3d4T4z6T6e6f6i7[8t9T!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^Q+T%aQ/c*Oo4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!U$yi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>YQ*c$zU*l$|*Z*oQ+U%bQ0W*m#f=q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n=r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hQ=w>TQ=x>UQ=y>VR=z>W!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hnoOXst!Z#d%m&r&t&u&w,s,x2[2_S*f${*YQ-R'OQ-S'QR4i/y%[%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q,U&]Q1h,WQ5s1gR8h5tV*n$|*Z*oU*n$|*Z*oT5z1o5{S0P*i/nQ4w0]T8S4z:]Q+j%xQ0V*lQ1O+kQ1u,aQ6W1vQ8v6XQ:c8wR;^:d!U%Oi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Yx*R$v)e*S*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>OS0`*t0a#f<o#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<p<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!d=S(u)c*[*e.j.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[`=T3}7c7f7j9h:t:w;yS=_.l3iT=`7e9k!U%Qi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y|*T$v)e*U*t+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>OS0b*u0c#f<q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!h=U(u)c*[*e.k.l.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[d=V3}7d7e7j9h9i:t:u:w;yS=a.m3jT=b7f9lrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q&f!UR,p&ornOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R&f!UQ,Y&^R1d,RsnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q1p,_S6R1s1tU8p6P6Q6US:_8r8sS;Y:^:aQ;m;ZR;w;nQ&m!VR,i&iR6_1|R:f8yW&Q|&V&W,OR1Z+vQ&r!WR,s&sR,y&xT2],x2_R,}&yQ,|&yR2f,}Q'y!{R-y'ySsOtQ#dXT%ps#dQ#OTR'{#OQ#RUR'}#RQ){$uR/`){Q#UVR(Q#UQ#XWU(W#X(X.QQ(X#YR.Q(YQ-^'YR2r-^Q.u(yS3m.u3nR3n.vQ-e'`R2v-eY!rQ'`-e1o5{R'j!rQ/Q)eR4S/QU#_W%h*YU(_#_(`.RQ(`#`R.R(ZQ-a']R2t-at`OXst!V!Z#d%m&i&k&r&t&u&w,s,x2[2_S#hZ%eU#r`#h.[R.[(jQ(k#jQ.X(gW.a(k.X3X7RQ3X.YR7R3YQ)n$lR/W)nQ$phR)t$pQ$`cU)a$`-|<jQ-|<WR<j)qQ/q*]W4c/q4d7t9sU4d/r/s/tS7t4e4fR9s7u$e*Q$v(u)c)e*[*e*t*u+Q+R+V.l.m.o.p.q/_/g/i/k/v/|0d0e0v1e3f3g3h3}4R4[4g4h4l4|5O5R5S5W5r7]7^7_7`7e7f7h7i7j7p7w7z8U8X8Z9h9i9j9t9|:R:S:t:u:v:w:x:};R;e;j;v;y=p=}>O>Z>[Q/z*eU4k/z4m7xQ4m/|R7x4lS*o$|*ZR0Y*ox*S$v)e*t*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>O!d.j(u)c*[*e.l.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/h*S.j7ca7c3}7e7f7j9h:t:w;yQ0a*tQ3i.lU4}0a3i9kR9k7e|*U$v)e*t*u+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>O!h.k(u)c*[*e.l.m.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/j*U.k7de7d3}7e7f7j9h9i:t:u:w;yQ0c*uQ3j.mU5P0c3j9lR9l7fQ*z%UR0g*zQ5]0vR8Y5]Q+_%kR0u+_Q5v1jS8j5v:[R:[8kQ,[&_R1m,[Q5{1oR8m5{Q1{,fS6]1{8zR8z6_Q1U+rW5h1U5j8a:VQ5j1XQ8a5iR:V8bQ+w&QR1[+wQ2_,xR6m2_YrOXst#dQ&v!ZQ+a%mQ,r&rQ,t&tQ,u&uQ,w&wQ2Y,sS2],x2_R6l2[Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'q!uQ+`%lQ+l%zQ,Q&XQ,h&mQ-P&|W-p'k's't'wQ-w'oQ0X*nQ1P+mQ1c,PS2O,i,lQ2g-OQ2h-RQ2i-SQ2}-oW3P-r-s-v-xQ5a1QQ5m1_Q5q1eQ6V1uQ6a2QQ6k2ZU6z3O3R3UQ6}3SQ8]5bQ8e5oQ8g5rQ8l5zQ8u6WQ8{6`S9[6{7PQ9^7OQ:W8cQ:b8vQ:g8|Q:n9]Q;U:XQ;]:cQ;a:oQ;l;VR;o;^Q%zyQ'd!iQ'o!uU+m%{%|%}Q-W'VU-k'e'f'gS-o'k'uQ0Q*jS1Q+n+oQ2o-YS2{-l-mQ3S-tS4p0R0UQ5b1RQ6v2uQ6y2|Q7O3TU7{4r4s4vQ9z7}R;O9{S$wi>PR*{%VU%Ui%V>PR0f*yQ$viS(u#v+iS)c$b$cQ)e$dQ*[$xS*e${*YQ*t%OQ*u%QQ+Q%^Q+R%_Q+V%cQ.l<oQ.m<qQ.o<uQ.p<wQ.q<yQ/_)yQ/g*RQ/i*TQ/k*VQ/v*aS/|*g/mQ0d*wQ0e*xl0v+f,V.f1i1q3c6S7W8q9b:`:r;[;dQ1e,SQ3f=SQ3g=UQ3h=XS3}<l<mQ4R/PS4[/d4^Q4g/xQ4h/yQ4l/{Q4|0`Q5O0bQ5R0iQ5S0jQ5W0oQ5r1fQ7]=]Q7^=_Q7_=aQ7`=cQ7e<pQ7f<rQ7h<vQ7i<xQ7j<zQ7p4_Q7w4jQ7z4oQ8U5QQ8X5[Q8Z5_Q9h=YQ9i=TQ9j=VQ9t7vQ9|8QQ:R8VQ:S8[Q:t=^Q:u=`Q:v=bQ:w=dQ:x9pQ:}9yQ;R:PQ;e=gQ;j;QQ;v;kQ;y=hQ=p>PQ=}>XQ>O>YQ>Z>]R>[>^Q+O%]Q.n<sR7g<tnpOXst!Z#d%m&r&t&u&w,s,x2[2_Q!fPS#fZ#oQ&|!`W'h!o*i0]4zQ(P#SQ)Q#{Q)r$nS,l&k&nQ,q&oQ-O&{S-T'T/nQ-g'bQ.x)OQ/[)sQ0s+]Q0y+gQ2W,pQ2y-iQ3a.gQ4W/VQ5U0lQ6Q1rQ6c2SQ6d2TQ6h2VQ6j2XQ6o2aQ7Z3dQ7m4TQ8s6TQ9P6eQ9Q6fQ9S6iQ9f7[Q:a8tR:k9T#[cOPXZst!Z!`!o#d#o#{%m&k&n&o&r&t&u&w&{'T'b)O*i+]+g,p,s,x-i.g/n0]0l1r2S2T2V2X2[2_2a3d4z6T6e6f6i7[8t9TQ#YWQ#eYQ%quQ%svS%uw!gS(S#W(VQ(Y#ZQ(t#uQ(y#xQ)R$OQ)S$PQ)T$QQ)U$RQ)V$SQ)W$TQ)X$UQ)Y$VQ)Z$WQ)[$XQ)^$ZQ)`$_Q)b$aQ)g$eW)q$n)s/V4TQ+d%tQ+x&RS-Z'X2pQ-x'rS-}(T.PQ.S(]Q.U(dQ.s(xQ.v(zQ.z<UQ.|<XQ.}<YQ/O<]Q/b)}Q0p+XQ2k-UQ2n-XQ3O-qQ3V.VQ3k.tQ3p<^Q3q<_Q3r<`Q3s<aQ3t<bQ3u<cQ3v<dQ3w<eQ3x<fQ3y<gQ3z<hQ3{.{Q3|<kQ4P<nQ4Q<{Q4X<iQ5X0rQ5c1SQ6u=OQ6{3QQ7Q3WQ7a3lQ7b=PQ7k=RQ7l=ZQ8k5wQ9X6sQ9]6|Q9g=[Q9m=eQ9n=fQ:o9_Q;W:ZQ;`:mQ<W#SR=v>SR#[WR'Z!el!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}S'V!e-]U*j$|*Z*oS-Y'W'_S0U*k*qQ0^*rQ2u-cQ4v0[R4{0_R({#xQ!fQT-d'`-e]!qQ!r'`-e1o5{Q#p]R'i<VR)f$dY!uQ'`-e1o5{Q'k!rS'u!v!yS'w!z5}S-t'l'mQ-v'nR3T-uT#kZ%eS#jZ%eS%km,oU(g#h#i#lS.Y(h(iQ.^(jQ0t+^Q3Y.ZU3Z.[.]._S7S3[3]R9`7Td#^W#W#Z%h(T(^*Y+Z.T/mr#gZm#h#i#l%e(h(i(j+^.Z.[.]._3[3]7TS*]$x*bQ/t*^Q2U,oQ2l-VQ4`/pQ6q2dQ7s4aQ9W6rT=m'X+[V#aW%h*YU#`W%h*YS(U#W(^U(Z#Z+Z/mS-['X+[T.O(T.TV'^!e%i*ZQ$lfR)x$qT)m$l)nR4V/UT*_$x*bT*h${*YQ0w+fQ1g,VQ3_.fQ5t1iQ6P1qQ7X3cQ8r6SQ9c7WQ:^8qQ:p9bQ;Z:`Q;c:rQ;n;[R;q;dnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&l!VR,h&itmOXst!U!V!Z#d%m&i&r&t&u&w,s,x2[2_R,o&oT%lm,oR1k,XR,g&gQ&U|S+}&V&WR1^,OR+s&PT&p!W&sT&q!W&sT2^,x2_",nodeNames:"⚠ ArithOp ArithOp ?. JSXStartTag LineComment BlockComment Script Hashbang ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:380,context:x4,nodeProps:[["isolate",-8,5,6,14,37,39,51,53,55,""],["group",-26,9,17,19,68,207,211,215,216,218,221,224,234,237,243,245,247,249,252,258,264,266,268,270,272,274,275,"Statement",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,120,121,136,139,141,142,143,144,145,147,148,167,169,171,"Expression",-23,31,33,37,41,43,45,173,175,177,178,180,181,182,184,185,186,188,189,190,201,203,205,206,"Type",-3,88,103,109,"ClassItem"],["openedBy",23,"<",38,"InterpolationStart",56,"[",60,"{",73,"(",160,"JSXStartCloseTag"],["closedBy",-2,24,168,">",40,"InterpolationEnd",50,"]",61,"}",74,")",165,"JSXEndTag"]],propSources:[C4],skippedNodes:[0,5,6,278],repeatNodeCount:37,tokenData:"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$<r#p#q$=h#q#r$>x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$i&j(Wp(Z!b'|0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(X#S$i&j'}0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$i&j(Wp(Z!b'}0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$i&j!p),Q(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(V':f$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$i&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$d`$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$d``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$d`$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(Z!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$d`(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$i&j(Wp(Z!bOY%ZYZ&cZq%Zqr<Srs&}st%ZtuCruw%Zwx(rx!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr(r<__WS$i&j(Wp(Z!bOY<SYZ&cZr<Srs=^sw<Swx@nx!^<S!^!_Bm!_#O<S#O#P>`#P#o<S#o#pBm#p;'S<S;'S;=`Cl<%lO<S(Q=g]WS$i&j(Z!bOY=^YZ&cZw=^wx>`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$i&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(Z!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$i&j(WpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(WpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Wp(Z!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l<S%9[C}i$i&j(o%1l(Wp(Z!bOY%ZYZ&cZr%Zrs&}st%ZtuCruw%Zwx(rx!Q%Z!Q![Cr![!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr%9[EoP;=`<%lCr07[FRk$i&j(Wp(Z!b$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr+dHRk$i&j(Wp(Z!b$]#tOY%ZYZ&cZr%Zrs&}st%ZtuGvuw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Gv![!^%Z!^!_*g!_!c%Z!c!}Gv!}#O%Z#O#P&c#P#R%Z#R#SGv#S#T%Z#T#oGv#o#p*g#p$g%Z$g;'SGv;'S;=`Iv<%lOGv+dIyP;=`<%lGv07[JPP;=`<%lEr(KWJ_`$i&j(Wp(Z!b#p(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWKl_$i&j$Q(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,#xLva(z+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sv%ZvwM{wx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWNW`$i&j#z(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At! c_(Y';W$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b'l!!i_$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b&z!#mX$i&jOw!#hwx6cx!^!#h!^!_!$Y!_#o!#h#o#p!$Y#p;'S!#h;'S;=`!$r<%lO!#h`!$]TOw!$Ywx7]x;'S!$Y;'S;=`!$l<%lO!$Y`!$oP;=`<%l!$Y&z!$uP;=`<%l!#h'l!%R]$d`$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r!Q!&PZ(WpOY!%zYZ!$YZr!%zrs!$Ysw!%zwx!&rx#O!%z#O#P!$Y#P;'S!%z;'S;=`!']<%lO!%z!Q!&yU$d`(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)r!Q!'`P;=`<%l!%z'l!'fP;=`<%l!!b/5|!'t_!l/.^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#&U!)O_!k!Lf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z-!n!*[b$i&j(Wp(Z!b(U%&f#q(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{!+d{!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW!+o`$i&j(Wp(Z!b#n(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;x!,|`$i&j(Wp(Z!br+4YOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,$U!.Z_!]+Jf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!/ec$i&j(Wp(Z!b!Q.2^OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!0p!P!Q%Z!Q![!3Y![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!0ya$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!2O!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!2Z_![!L^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!3eg$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!3Y![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S!3Y#S#X%Z#X#Y!4|#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!5Vg$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!6n|}%Z}!O!6n!O!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!6wc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!8_c$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!9uf$i&j(Wp(Z!b#o(ChOY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcxz!;Zz{#-}{!P!;Z!P!Q#/d!Q!^!;Z!^!_#(i!_!`#7S!`!a#8i!a!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z?O!;fb$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z>^!<w`$i&j(Z!b!X7`OY!<nYZ&cZw!<nwx!=yx!P!<n!P!Q!Eq!Q!^!<n!^!_!Gr!_!}!<n!}#O!KS#O#P!Dy#P#o!<n#o#p!Gr#p;'S!<n;'S;=`!L]<%lO!<n<z!>Q^$i&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!?Td$i&j!X7`O!^&c!_#W&c#W#X!>|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c<z!C][$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#O!CW#O#P!DR#P#Q!=y#Q#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DWX$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DvP;=`<%l!CW<z!EOX$i&jOY!=yYZ&cZ!^!=y!^!_!@c!_#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!EnP;=`<%l!=y>^!Ezl$i&j(Z!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(Z!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(Z!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(Z!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$i&j(Z!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!<n#Q#o!KS#o#p!JU#p;'S!KS;'S;=`!LV<%lO!KS>^!LYP;=`<%l!KS>^!L`P;=`<%l!<n=l!Ll`$i&j(Wp!X7`OY!LcYZ&cZr!Lcrs!=ys!P!Lc!P!Q!Mn!Q!^!Lc!^!_# o!_!}!Lc!}#O#%P#O#P!Dy#P#o!Lc#o#p# o#p;'S!Lc;'S;=`#&Y<%lO!Lc=l!Mwl$i&j(Wp!X7`OY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#W(r#W#X!Mn#X#Z(r#Z#[!Mn#[#](r#]#^!Mn#^#a(r#a#b!Mn#b#g(r#g#h!Mn#h#i(r#i#j!Mn#j#k!Mn#k#m(r#m#n!Mn#n#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r8Q# vZ(Wp!X7`OY# oZr# ors!@cs!P# o!P!Q#!i!Q!}# o!}#O#$R#O#P!Bq#P;'S# o;'S;=`#$y<%lO# o8Q#!pe(Wp!X7`OY)rZr)rs#O)r#P#W)r#W#X#!i#X#Z)r#Z#[#!i#[#])r#]#^#!i#^#a)r#a#b#!i#b#g)r#g#h#!i#h#i)r#i#j#!i#j#k#!i#k#m)r#m#n#!i#n;'S)r;'S;=`*Z<%lO)r8Q#$WX(WpOY#$RZr#$Rrs!Ars#O#$R#O#P!B[#P#Q# o#Q;'S#$R;'S;=`#$s<%lO#$R8Q#$vP;=`<%l#$R8Q#$|P;=`<%l# o=l#%W^$i&j(WpOY#%PYZ&cZr#%Prs!CWs!^#%P!^!_#$R!_#O#%P#O#P!DR#P#Q!Lc#Q#o#%P#o#p#$R#p;'S#%P;'S;=`#&S<%lO#%P=l#&VP;=`<%l#%P=l#&]P;=`<%l!Lc?O#&kn$i&j(Wp(Z!b!X7`OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#W%Z#W#X#&`#X#Z%Z#Z#[#&`#[#]%Z#]#^#&`#^#a%Z#a#b#&`#b#g%Z#g#h#&`#h#i%Z#i#j#&`#j#k#&`#k#m%Z#m#n#&`#n#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z9d#(r](Wp(Z!b!X7`OY#(iZr#(irs!Grsw#(iwx# ox!P#(i!P!Q#)k!Q!}#(i!}#O#+`#O#P!Bq#P;'S#(i;'S;=`#,`<%lO#(i9d#)th(Wp(Z!b!X7`OY*gZr*grs'}sw*gwx)rx#O*g#P#W*g#W#X#)k#X#Z*g#Z#[#)k#[#]*g#]#^#)k#^#a*g#a#b#)k#b#g*g#g#h#)k#h#i*g#i#j#)k#j#k#)k#k#m*g#m#n#)k#n;'S*g;'S;=`+Z<%lO*g9d#+gZ(Wp(Z!bOY#+`Zr#+`rs!JUsw#+`wx#$Rx#O#+`#O#P!B[#P#Q#(i#Q;'S#+`;'S;=`#,Y<%lO#+`9d#,]P;=`<%l#+`9d#,cP;=`<%l#(i?O#,o`$i&j(Wp(Z!bOY#,fYZ&cZr#,frs!KSsw#,fwx#%Px!^#,f!^!_#+`!_#O#,f#O#P!DR#P#Q!;Z#Q#o#,f#o#p#+`#p;'S#,f;'S;=`#-q<%lO#,f?O#-tP;=`<%l#,f?O#-zP;=`<%l!;Z07[#.[b$i&j(Wp(Z!b(O0/l!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z07[#/o_$i&j(Wp(Z!bT0/lOY#/dYZ&cZr#/drs#0nsw#/dwx#4Ox!^#/d!^!_#5}!_#O#/d#O#P#1p#P#o#/d#o#p#5}#p;'S#/d;'S;=`#6|<%lO#/d06j#0w]$i&j(Z!bT0/lOY#0nYZ&cZw#0nwx#1px!^#0n!^!_#3R!_#O#0n#O#P#1p#P#o#0n#o#p#3R#p;'S#0n;'S;=`#3x<%lO#0n05W#1wX$i&jT0/lOY#1pYZ&cZ!^#1p!^!_#2d!_#o#1p#o#p#2d#p;'S#1p;'S;=`#2{<%lO#1p0/l#2iST0/lOY#2dZ;'S#2d;'S;=`#2u<%lO#2d0/l#2xP;=`<%l#2d05W#3OP;=`<%l#1p01O#3YW(Z!bT0/lOY#3RZw#3Rwx#2dx#O#3R#O#P#2d#P;'S#3R;'S;=`#3r<%lO#3R01O#3uP;=`<%l#3R06j#3{P;=`<%l#0n05x#4X]$i&j(WpT0/lOY#4OYZ&cZr#4Ors#1ps!^#4O!^!_#5Q!_#O#4O#O#P#1p#P#o#4O#o#p#5Q#p;'S#4O;'S;=`#5w<%lO#4O00^#5XW(WpT0/lOY#5QZr#5Qrs#2ds#O#5Q#O#P#2d#P;'S#5Q;'S;=`#5q<%lO#5Q00^#5tP;=`<%l#5Q05x#5zP;=`<%l#4O01p#6WY(Wp(Z!bT0/lOY#5}Zr#5}rs#3Rsw#5}wx#5Qx#O#5}#O#P#2d#P;'S#5};'S;=`#6v<%lO#5}01p#6yP;=`<%l#5}07[#7PP;=`<%l#/d)3h#7ab$i&j$Q(Ch(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;ZAt#8vb$Z#t$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z'Ad#:Zp$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#U%Z#U#V#?i#V#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#<jk$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$i&j$O)Lv(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-<U(Wp(Z!b$n7`OY*gZr*grs'}sw*gwx)rx!P*g!P!Q#MO!Q!^*g!^!_#Mt!_!`$ f!`#O*g#P;'S*g;'S;=`+Z<%lO*g(n#MXX$k&j(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#M}Z#r(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#Np!`#O*g#P;'S*g;'S;=`+Z<%lO*g(El#NyX$Q(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El$ oX#s(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g*)x$!ga#`*!Y$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a$#l!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[$#w_#k(Cl$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x$%Vag!*r#s(Ch$f#|$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`$&[!`!a$'f!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$&g_#s(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$'qa#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`!a$(v!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$)R`#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(Kd$*`a(r(Ct$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!a%Z!a!b$+e!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$+p`$i&j#{(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`$,}_!|$Ip$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f$.X_!S0,v$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(n$/]Z$i&jO!^$0O!^!_$0f!_#i$0O#i#j$0k#j#l$0O#l#m$2^#m#o$0O#o#p$0f#p;'S$0O;'S;=`$4i<%lO$0O(n$0VT_#S$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#S$0kO_#S(n$0p[$i&jO!Q&c!Q![$1f![!^&c!_!c&c!c!i$1f!i#T&c#T#Z$1f#Z#o&c#o#p$3|#p;'S&c;'S;=`&w<%lO&c(n$1kZ$i&jO!Q&c!Q![$2^![!^&c!_!c&c!c!i$2^!i#T&c#T#Z$2^#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$2cZ$i&jO!Q&c!Q![$3U![!^&c!_!c&c!c!i$3U!i#T&c#T#Z$3U#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$3ZZ$i&jO!Q&c!Q![$0O![!^&c!_!c&c!c!i$0O!i#T&c#T#Z$0O#Z#o&c#p;'S&c;'S;=`&w<%lO&c#S$4PR!Q![$4Y!c!i$4Y#T#Z$4Y#S$4]S!Q![$4Y!c!i$4Y#T#Z$4Y#q#r$0f(n$4lP;=`<%l$0O#1[$4z_!Y#)l$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$6U`#x(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;p$7c_$i&j(Wp(Z!b(a+4QOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$8qk$i&j(Wp(Z!b(T,2j$_#t(e$I[OY%ZYZ&cZr%Zrs&}st%Ztu$8buw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$8b![!^%Z!^!_*g!_!c%Z!c!}$8b!}#O%Z#O#P&c#P#R%Z#R#S$8b#S#T%Z#T#o$8b#o#p*g#p$g%Z$g;'S$8b;'S;=`$<l<%lO$8b+d$:qk$i&j(Wp(Z!b$_#tOY%ZYZ&cZr%Zrs&}st%Ztu$:fuw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$:f![!^%Z!^!_*g!_!c%Z!c!}$:f!}#O%Z#O#P&c#P#R%Z#R#S$:f#S#T%Z#T#o$:f#o#p*g#p$g%Z$g;'S$:f;'S;=`$<f<%lO$:f+d$<iP;=`<%l$:f07[$<oP;=`<%l$8b#Jf$<{X!_#Hb(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g,#x$=sa(y+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$+e#q;'S%Z;'S;=`+a<%lO%Z)>v$?V_!^(CdvBr$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$i&j(Wp(Z!b'|0/l$]#t(T,2j(e$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$i&j(Wp(Z!b'}0/l$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr",tokenizers:[k4,w4,S4,$4,2,3,4,5,6,7,8,9,10,11,12,13,14,y4,new rl("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(c~~",141,340),new rl("j~RQYZXz{^~^O(Q~~aP!P!Qd~iO(R~~",25,323)],topRules:{Script:[0,7],SingleExpression:[1,276],SingleClassItem:[2,277]},dialects:{jsx:0,ts:15175},dynamicPrecedences:{80:1,82:1,94:1,169:1,199:1},specialized:[{term:327,get:r=>Q4[r]||-1},{term:343,get:r=>P4[r]||-1},{term:95,get:r=>T4[r]||-1}],tokenPrec:15201}),R0=[Gt("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),Gt("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),Gt("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),Gt("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),Gt("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),Gt(`try {
|
|
28
|
+
\${}
|
|
29
|
+
} catch (\${error}) {
|
|
30
|
+
\${}
|
|
31
|
+
}`,{label:"try",detail:"/ catch block",type:"keyword"}),Gt("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),Gt(`if (\${}) {
|
|
32
|
+
\${}
|
|
33
|
+
} else {
|
|
34
|
+
\${}
|
|
35
|
+
}`,{label:"if",detail:"/ else block",type:"keyword"}),Gt(`class \${name} {
|
|
36
|
+
constructor(\${params}) {
|
|
37
|
+
\${}
|
|
38
|
+
}
|
|
39
|
+
}`,{label:"class",detail:"definition",type:"keyword"}),Gt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Gt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],A4=R0.concat([Gt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Gt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Gt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),pp=new Sg,B0=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Mi(r){return(e,t)=>{let n=e.node.getChild("VariableDefinition");return n&&t(n,r),!0}}const _4=["FunctionDeclaration"],R4={FunctionDeclaration:Mi("function"),ClassDeclaration:Mi("class"),ClassExpression:()=>!0,EnumDeclaration:Mi("constant"),TypeAliasDeclaration:Mi("type"),NamespaceDeclaration:Mi("namespace"),VariableDefinition(r,e){r.matchContext(_4)||e(r,"variable")},TypeDefinition(r,e){e(r,"type")},__proto__:null};function Z0(r,e){let t=pp.get(e);if(t)return t;let n=[],s=!0;function i(o,a){let l=r.sliceString(o.from,o.to);n.push({label:l,type:a})}return e.cursor(at.IncludeAnonymous).iterate(o=>{if(s)s=!1;else if(o.name){let a=R4[o.name];if(a&&a(o,i)||B0.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of Z0(r,o.node))n.push(a);return!1}}),pp.set(e,n),n}const mp=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,E0=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function B4(r){let e=ft(r.state).resolveInner(r.pos,-1);if(E0.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&mp.test(r.state.sliceDoc(e.from,e.to));if(!t&&!r.explicit)return null;let n=[];for(let s=e;s;s=s.parent)B0.has(s.name)&&(n=n.concat(Z0(r.state.doc,s)));return{options:n,from:t?e.from:r.pos,validFor:mp}}const nn=Ys.define({name:"javascript",parser:M4.configure({props:[Co.add({IfStatement:va({except:/^\s*({|else\b)/}),TryStatement:va({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:wC,SwitchBody:r=>{let e=r.textAfter,t=/^\s*\}/.test(e),n=/^\s*(case|default)\b/.test(e);return r.baseIndent+(t?0:n?1:2)*r.unit},Block:kC({closing:"}"}),ArrowFunction:r=>r.baseIndent+r.unit,"TemplateString BlockComment":()=>null,"Statement Property":va({except:/^\s*{/}),JSXElement(r){let e=/^\s*<\//.test(r.textAfter);return r.lineIndent(r.node.from)+(e?0:r.unit)},JSXEscape(r){let e=/\s*\}/.test(r.textAfter);return r.lineIndent(r.node.from)+(e?0:r.unit)},"JSXOpenTag JSXSelfClosingTag"(r){return r.column(r.node.from)+r.unit}}),ri.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":_g,BlockComment(r){return{from:r.from+2,to:r.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),D0={test:r=>/^JSX/.test(r.name),facet:Ju({commentTokens:{block:{open:"{/*",close:"*/}"}}})},L0=nn.configure({dialect:"ts"},"typescript"),X0=nn.configure({dialect:"jsx",props:[eh.add(r=>r.isTop?[D0]:void 0)]}),I0=nn.configure({dialect:"jsx ts",props:[eh.add(r=>r.isTop?[D0]:void 0)]},"typescript");let V0=r=>({label:r,type:"keyword"});const z0="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(V0),Z4=z0.concat(["declare","implements","private","protected","public"].map(V0));function E4(r={}){let e=r.jsx?r.typescript?I0:X0:r.typescript?L0:nn,t=r.typescript?A4.concat(Z4):R0.concat(z0);return new ro(e,[nn.data.of({autocomplete:WP(E0,_O(t))}),nn.data.of({autocomplete:B4}),r.jsx?X4:[]])}function D4(r){for(;;){if(r.name=="JSXOpenTag"||r.name=="JSXSelfClosingTag"||r.name=="JSXFragmentTag")return r;if(r.name=="JSXEscape"||!r.parent)return null;r=r.parent}}function gp(r,e,t=r.length){for(let n=e?.firstChild;n;n=n.nextSibling)if(n.name=="JSXIdentifier"||n.name=="JSXBuiltin"||n.name=="JSXNamespacedName"||n.name=="JSXMemberExpression")return r.sliceString(n.from,Math.min(n.to,t));return""}const L4=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),X4=Se.inputHandler.of((r,e,t,n,s)=>{if((L4?r.composing:r.compositionStarted)||r.state.readOnly||e!=t||n!=">"&&n!="/"||!nn.isActiveAt(r.state,e,-1))return!1;let i=s(),{state:o}=i,a=o.changeByRange(l=>{var c;let{head:u}=l,h=ft(o).resolveInner(u-1,-1),p;if(h.name=="JSXStartTag"&&(h=h.parent),!(o.doc.sliceString(u-1,u)!=n||h.name=="JSXAttributeValue"&&h.to>u)){if(n==">"&&h.name=="JSXFragmentTag")return{range:l,changes:{from:u,insert:"</>"}};if(n=="/"&&h.name=="JSXStartCloseTag"){let f=h.parent,g=f.parent;if(g&&f.from==u-2&&((p=gp(o.doc,g.firstChild,u))||((c=g.firstChild)===null||c===void 0?void 0:c.name)=="JSXFragmentTag")){let O=`${p}>`;return{range:re.cursor(u+O.length,-1),changes:{from:u,insert:O}}}}else if(n==">"){let f=D4(h);if(f&&f.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(u,u+2))&&(p=gp(o.doc,f,u)))return{range:l,changes:{from:u,insert:`</${p}>`}}}}return{range:l}});return a.changes.empty?!1:(r.dispatch([i,o.update(a,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),Ai=["_blank","_self","_top","_parent"],lc=["ascii","utf-8","utf-16","latin1","latin1"],cc=["get","post","put","delete"],uc=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],cr=["true","false"],De={},I4={a:{attrs:{href:null,ping:null,type:null,media:null,target:Ai,hreflang:null}},abbr:De,address:De,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:De,aside:De,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:De,base:{attrs:{href:null,target:Ai}},bdi:De,bdo:De,blockquote:{attrs:{cite:null}},body:De,br:De,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:uc,formmethod:cc,formnovalidate:["novalidate"],formtarget:Ai,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:De,center:De,cite:De,code:De,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:De,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:De,div:De,dl:De,dt:De,em:De,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:De,figure:De,footer:De,form:{attrs:{action:null,name:null,"accept-charset":lc,autocomplete:["on","off"],enctype:uc,method:cc,novalidate:["novalidate"],target:Ai}},h1:De,h2:De,h3:De,h4:De,h5:De,h6:De,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:De,hgroup:De,hr:De,html:{attrs:{manifest:null}},i:De,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:uc,formmethod:cc,formnovalidate:["novalidate"],formtarget:Ai,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:De,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:De,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:De,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:lc,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:De,noscript:De,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:De,param:{attrs:{name:null,value:null}},pre:De,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:De,rt:De,ruby:De,samp:De,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:lc}},section:De,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:De,source:{attrs:{src:null,type:null,media:null}},span:De,strong:De,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:De,summary:De,sup:De,table:De,tbody:De,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:De,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:De,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:De,time:{attrs:{datetime:null}},title:De,tr:De,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:De,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:De},N0={accesskey:null,class:null,contenteditable:cr,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:cr,autocorrect:cr,autocapitalize:cr,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":cr,"aria-autocomplete":["inline","list","both","none"],"aria-busy":cr,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":cr,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":cr,"aria-hidden":cr,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":cr,"aria-multiselectable":cr,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":cr,"aria-relevant":null,"aria-required":cr,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},W0="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(r=>"on"+r);for(let r of W0)N0[r]=null;class po{constructor(e,t){this.tags={...I4,...e},this.globalAttrs={...N0,...t},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}}po.default=new po;function Ks(r,e,t=r.length){if(!e)return"";let n=e.firstChild,s=n&&n.getChild("TagName");return s?r.sliceString(s.from,Math.min(s.to,t)):""}function Js(r,e=!1){for(;r;r=r.parent)if(r.name=="Element")if(e)e=!1;else return r;return null}function j0(r,e,t){let n=t.tags[Ks(r,Js(e))];return n?.children||t.allTags}function Qh(r,e){let t=[];for(let n=Js(e);n&&!n.type.isTop;n=Js(n.parent)){let s=Ks(r,n);if(s&&n.lastChild.name=="CloseTag")break;s&&t.indexOf(s)<0&&(e.name=="EndTag"||e.from>=n.firstChild.to)&&t.push(s)}return t}const q0=/^[:\-\.\w\u00b7-\uffff]*$/;function Op(r,e,t,n,s){let i=/\s*>/.test(r.sliceDoc(s,s+5))?"":">",o=Js(t,t.name=="StartTag"||t.name=="TagName");return{from:n,to:s,options:j0(r.doc,o,e).map(a=>({label:a,type:"type"})).concat(Qh(r.doc,t).map((a,l)=>({label:"/"+a,apply:"/"+a+i,type:"type",boost:99-l}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function vp(r,e,t,n){let s=/\s*>/.test(r.sliceDoc(n,n+5))?"":">";return{from:t,to:n,options:Qh(r.doc,e).map((i,o)=>({label:i,apply:i+s,type:"type",boost:99-o})),validFor:q0}}function V4(r,e,t,n){let s=[],i=0;for(let o of j0(r.doc,t,e))s.push({label:"<"+o,type:"type"});for(let o of Qh(r.doc,t))s.push({label:"</"+o+">",type:"type",boost:99-i++});return{from:n,to:n,options:s,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function z4(r,e,t,n,s){let i=Js(t),o=i?e.tags[Ks(r.doc,i)]:null,a=o&&o.attrs?Object.keys(o.attrs):[],l=o&&o.globalAttrs===!1?a:a.length?a.concat(e.globalAttrNames):e.globalAttrNames;return{from:n,to:s,options:l.map(c=>({label:c,type:"property"})),validFor:q0}}function N4(r,e,t,n,s){var i;let o=(i=t.parent)===null||i===void 0?void 0:i.getChild("AttributeName"),a=[],l;if(o){let c=r.sliceDoc(o.from,o.to),u=e.globalAttrs[c];if(!u){let h=Js(t),p=h?e.tags[Ks(r.doc,h)]:null;u=p?.attrs&&p.attrs[c]}if(u){let h=r.sliceDoc(n,s).toLowerCase(),p='"',f='"';/^['"]/.test(h)?(l=h[0]=='"'?/^[^"]*$/:/^[^']*$/,p="",f=r.sliceDoc(s,s+1)==h[0]?"":h[0],h=h.slice(1),n++):l=/^[^\s<>='"]*$/;for(let g of u)a.push({label:g,apply:p+g+f,type:"constant"})}}return{from:n,to:s,options:a,validFor:l}}function Y0(r,e){let{state:t,pos:n}=e,s=ft(t).resolveInner(n,-1),i=s.resolve(n);for(let o=n,a;i==s&&(a=s.childBefore(o));){let l=a.lastChild;if(!l||!l.type.isError||l.from<l.to)break;i=s=a,o=l.from}return s.name=="TagName"?s.parent&&/CloseTag$/.test(s.parent.name)?vp(t,s,s.from,n):Op(t,r,s,s.from,n):s.name=="StartTag"||s.name=="IncompleteTag"?Op(t,r,s,n,n):s.name=="StartCloseTag"||s.name=="IncompleteCloseTag"?vp(t,s,n,n):s.name=="OpenTag"||s.name=="SelfClosingTag"||s.name=="AttributeName"?z4(t,r,s,s.name=="AttributeName"?s.from:n,n):s.name=="Is"||s.name=="AttributeValue"||s.name=="UnquotedAttributeValue"?N4(t,r,s,s.name=="Is"?n:s.from,n):e.explicit&&(i.name=="Element"||i.name=="Text"||i.name=="Document")?V4(t,r,s,n):null}function W4(r){return Y0(po.default,r)}function j4(r){let{extraTags:e,extraGlobalAttributes:t}=r,n=t||e?new po(e,t):po.default;return s=>Y0(n,s)}const q4=nn.parser.configure({top:"SingleExpression"}),F0=[{tag:"script",attrs:r=>r.type=="text/typescript"||r.lang=="ts",parser:L0.parser},{tag:"script",attrs:r=>r.type=="text/babel"||r.type=="text/jsx",parser:X0.parser},{tag:"script",attrs:r=>r.type=="text/typescript-jsx",parser:I0.parser},{tag:"script",attrs(r){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(r.type)},parser:q4},{tag:"script",attrs(r){return!r.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(r.type)},parser:nn.parser},{tag:"style",attrs(r){return(!r.lang||r.lang=="css")&&(!r.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(r.type))},parser:sl.parser}],U0=[{name:"style",parser:sl.parser.configure({top:"Styles"})}].concat(W0.map(r=>({name:r,parser:nn.parser}))),G0=Ys.define({name:"html",parser:OM.configure({props:[Co.add({Element(r){let e=/^(\s*)(<\/)?/.exec(r.textAfter);return r.node.to<=r.pos+e[0].length?r.continue():r.lineIndent(r.node.from)+(e[2]?0:r.unit)},"OpenTag CloseTag SelfClosingTag"(r){return r.column(r.node.from)+r.unit},Document(r){if(r.pos+/\s*/.exec(r.textAfter)[0].length<r.node.to)return r.continue();let e=null,t;for(let n=r.node;;){let s=n.lastChild;if(!s||s.name!="Element"||s.to!=n.to)break;e=n=s}return e&&!((t=e.lastChild)&&(t.name=="CloseTag"||t.name=="SelfClosingTag"))?r.lineIndent(e.from)+r.unit:null}}),ri.add({Element(r){let e=r.firstChild,t=r.lastChild;return!e||e.name!="OpenTag"?null:{from:e.to,to:t.name=="CloseTag"?t.from:r.to}}}),jg.add({"OpenTag CloseTag":r=>r.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:"<!--",close:"-->"}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),ya=G0.configure({wrap:C0(F0,U0)});function Y4(r={}){let e="",t;r.matchClosingTags===!1&&(e="noMatch"),r.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(r.nestedLanguages&&r.nestedLanguages.length||r.nestedAttributes&&r.nestedAttributes.length)&&(t=C0((r.nestedLanguages||[]).concat(F0),(r.nestedAttributes||[]).concat(U0)));let n=t?G0.configure({wrap:t,dialect:e}):e?ya.configure({dialect:e}):ya;return new ro(n,[ya.data.of({autocomplete:j4(r)}),r.autoCloseTags!==!1?F4:[],E4().support,JM().support])}const bp=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),F4=Se.inputHandler.of((r,e,t,n,s)=>{if(r.composing||r.state.readOnly||e!=t||n!=">"&&n!="/"||!ya.isActiveAt(r.state,e,-1))return!1;let i=s(),{state:o}=i,a=o.changeByRange(l=>{var c,u,h;let p=o.doc.sliceString(l.from-1,l.to)==n,{head:f}=l,g=ft(o).resolveInner(f,-1),O;if(p&&n==">"&&g.name=="EndTag"){let x=g.parent;if(((u=(c=x.parent)===null||c===void 0?void 0:c.lastChild)===null||u===void 0?void 0:u.name)!="CloseTag"&&(O=Ks(o.doc,x.parent,f))&&!bp.has(O)){let b=f+(o.doc.sliceString(f,f+1)===">"?1:0),w=`</${O}>`;return{range:l,changes:{from:f,to:b,insert:w}}}}else if(p&&n=="/"&&g.name=="IncompleteCloseTag"){let x=g.parent;if(g.from==f-2&&((h=x.lastChild)===null||h===void 0?void 0:h.name)!="CloseTag"&&(O=Ks(o.doc,x,f))&&!bp.has(O)){let b=f+(o.doc.sliceString(f,f+1)===">"?1:0),w=`${O}>`;return{range:re.cursor(f+w.length,-1),changes:{from:f,to:b,insert:w}}}}return{range:l}});return a.changes.empty?!1:(r.dispatch([i,o.update(a,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),H0=Ju({commentTokens:{block:{open:"<!--",close:"-->"}}}),K0=new Ye,J0=hT.configure({props:[ri.add(r=>!r.is("Block")||r.is("Document")||Ou(r)!=null||U4(r)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),K0.add(Ou),Co.add({Document:()=>null}),os.add({Document:H0})]});function Ou(r){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(r.name);return e?+e[1]:void 0}function U4(r){return r.name=="OrderedList"||r.name=="BulletList"}function G4(r,e){let t=r;for(;;){let n=t.nextSibling,s;if(!n||(s=Ou(n.type))!=null&&s<=e)break;t=n}return t.to}const H4=Ag.of((r,e,t)=>{for(let n=ft(r).resolveInner(t,-1);n&&!(n.from<e);n=n.parent){let s=n.type.prop(K0);if(s==null)continue;let i=G4(n,s);if(i>t)return{from:t,to:i}}return null});function Ph(r){return new yr(H0,r,[],"markdown")}const K4=Ph(J0),J4=J0.configure([kT,ST,wT,$T,{props:[ri.add({Table:(r,e)=>({from:e.doc.lineAt(r.from).to,to:r.to})})]}]),il=Ph(J4);function eA(r,e){return t=>{if(t&&r){let n=null;if(t=/\S*/.exec(t)[0],typeof r=="function"?n=r(t):n=Ia.matchLanguageName(r,t,!0),n instanceof Ia)return n.support?n.support.language.parser:to.getSkippingParser(n.load());if(n)return n.parser}return e?e.parser:null}}class hc{constructor(e,t,n,s,i,o,a){this.node=e,this.from=t,this.to=n,this.spaceBefore=s,this.spaceAfter=i,this.type=o,this.item=a}blank(e,t=!0){let n=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;n.length<e;)n+=" ";return n}else{for(let s=this.to-this.from-n.length-this.spaceAfter.length;s>0;s--)n+=" ";return n+(t?this.spaceAfter:"")}}marker(e,t){let n=this.node.name=="OrderedList"?String(+t1(this.item,e)[2]+t):"";return this.spaceBefore+n+this.type+this.spaceAfter}}function e1(r,e){let t=[],n=[];for(let s=r;s;s=s.parent){if(s.name=="FencedCode")return n;(s.name=="ListItem"||s.name=="Blockquote")&&t.push(s)}for(let s=t.length-1;s>=0;s--){let i=t[s],o,a=e.lineAt(i.from),l=i.from-a.from;if(i.name=="Blockquote"&&(o=/^ *>( ?)/.exec(a.text.slice(l))))n.push(new hc(i,l,l+o[0].length,"",o[1],">",null));else if(i.name=="ListItem"&&i.parent.name=="OrderedList"&&(o=/^( *)\d+([.)])( *)/.exec(a.text.slice(l)))){let c=o[3],u=o[0].length;c.length>=4&&(c=c.slice(0,c.length-4),u-=4),n.push(new hc(i.parent,l,l+u,o[1],c,o[2],i))}else if(i.name=="ListItem"&&i.parent.name=="BulletList"&&(o=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(a.text.slice(l)))){let c=o[4],u=o[0].length;c.length>4&&(c=c.slice(0,c.length-4),u-=4);let h=o[2];o[3]&&(h+=o[3].replace(/[xX]/," ")),n.push(new hc(i.parent,l,l+u,o[1],c,h,i))}}return n}function t1(r,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(r.from,r.from+10))}function dc(r,e,t,n=0){for(let s=-1,i=r;;){if(i.name=="ListItem"){let a=t1(i,e),l=+a[2];if(s>=0){if(l!=s+1)return;t.push({from:i.from+a[1].length,to:i.from+a[0].length,insert:String(s+2+n)})}s=l}let o=i.nextSibling;if(!o)break;i=o}}function Th(r,e){let t=/^[ \t]*/.exec(r)[0].length;if(!t||e.facet($o)!=" ")return r;let n=Rr(r,4,t),s="";for(let i=n;i>0;)i>=4?(s+=" ",i-=4):(s+=" ",i--);return s+r.slice(t)}const tA=(r={})=>({state:e,dispatch:t})=>{let n=ft(e),{doc:s}=e,i=null,o=e.changeByRange(a=>{if(!a.empty||!il.isActiveAt(e,a.from,-1)&&!il.isActiveAt(e,a.from,1))return i={range:a};let l=a.from,c=s.lineAt(l),u=e1(n.resolveInner(l,-1),s);for(;u.length&&u[u.length-1].from>l-c.from;)u.pop();if(!u.length)return i={range:a};let h=u[u.length-1];if(h.to-h.spaceAfter.length>l-c.from)return i={range:a};let p=l>=h.to-h.spaceAfter.length&&!/\S/.test(c.text.slice(h.to));if(h.item&&p){let b=h.node.firstChild,w=h.node.getChild("ListItem","ListItem");if(b.to>=l||w&&w.to<l||c.from>0&&!/[^\s>]/.test(s.lineAt(c.from-1).text)||r.nonTightLists===!1){let Q=u.length>1?u[u.length-2]:null,P,E="";Q&&Q.item?(P=c.from+Q.from,E=Q.marker(s,1)):P=c.from+(Q?Q.to:0);let j=[{from:P,to:l,insert:E}];return h.node.name=="OrderedList"&&dc(h.item,s,j,-2),Q&&Q.node.name=="OrderedList"&&dc(Q.item,s,j),{range:re.cursor(P+E.length),changes:j}}else{let Q=yp(u,e,c);return{range:re.cursor(l+Q.length+1),changes:{from:c.from,insert:Q+e.lineBreak}}}}if(h.node.name=="Blockquote"&&p&&c.from){let b=s.lineAt(c.from-1),w=/>\s*$/.exec(b.text);if(w&&w.index==h.from){let Q=e.changes([{from:b.from+w.index,to:b.to},{from:c.from+h.from,to:c.to}]);return{range:a.map(Q),changes:Q}}}let f=[];h.node.name=="OrderedList"&&dc(h.item,s,f);let g=h.item&&h.item.from<c.from,O="";if(!g||/^[\s\d.)\-+*>]*/.exec(c.text)[0].length>=h.to)for(let b=0,w=u.length-1;b<=w;b++)O+=b==w&&!g?u[b].marker(s,1):u[b].blank(b<w?Rr(c.text,4,u[b+1].from)-O.length:null);let x=l;for(;x>c.from&&/\s/.test(c.text.charAt(x-c.from-1));)x--;return O=Th(O,e),nA(h.node,e.doc)&&(O=yp(u,e,c)+e.lineBreak+O),f.push({from:x,to:l,insert:e.lineBreak+O}),{range:re.cursor(x+O.length+1),changes:f}});return i?!1:(t(e.update(o,{scrollIntoView:!0,userEvent:"input"})),!0)},rA=tA();function xp(r){return r.name=="QuoteMark"||r.name=="ListMark"}function nA(r,e){if(r.name!="OrderedList"&&r.name!="BulletList")return!1;let t=r.firstChild,n=r.getChild("ListItem","ListItem");if(!n)return!1;let s=e.lineAt(t.to),i=e.lineAt(n.from),o=/^[\s>]*$/.test(s.text);return s.number+(o?0:1)<i.number}function yp(r,e,t){let n="";for(let s=0,i=r.length-2;s<=i;s++)n+=r[s].blank(s<i?Rr(t.text,4,r[s+1].from)-n.length:null,s<i);return Th(n,e)}function sA(r,e){let t=r.resolveInner(e,-1),n=e;xp(t)&&(n=t.from,t=t.parent);for(let s;s=t.childBefore(n);)if(xp(s))n=s.from;else if(s.name=="OrderedList"||s.name=="BulletList")t=s.lastChild,n=t.to;else break;return t}const iA=({state:r,dispatch:e})=>{let t=ft(r),n=null,s=r.changeByRange(i=>{let o=i.from,{doc:a}=r;if(i.empty&&il.isActiveAt(r,i.from)){let l=a.lineAt(o),c=e1(sA(t,o),a);if(c.length){let u=c[c.length-1],h=u.to-u.spaceAfter.length+(u.spaceAfter?1:0);if(o-l.from>h&&!/\S/.test(l.text.slice(h,o-l.from)))return{range:re.cursor(l.from+h),changes:{from:l.from+h,to:o}};if(o-l.from==h&&(!u.item||l.from<=u.item.from||!/\S/.test(l.text.slice(0,u.to)))){let p=l.from+u.from;if(u.item&&u.node.from<u.item.from&&/\S/.test(l.text.slice(u.from,u.to))){let f=u.blank(Rr(l.text,4,u.to)-Rr(l.text,4,u.from));return p==l.from&&(f=Th(f,r)),{range:re.cursor(p+f.length),changes:{from:p,to:l.from+u.to,insert:f}}}if(p<o)return{range:re.cursor(p),changes:{from:p,to:o}}}}}return n={range:i}});return n?!1:(e(r.update(s,{scrollIntoView:!0,userEvent:"delete"})),!0)},oA=[{key:"Enter",run:rA},{key:"Backspace",run:iA}],r1=Y4({matchClosingTags:!1});function aA(r={}){let{codeLanguages:e,defaultCodeLanguage:t,addKeymap:n=!0,base:{parser:s}=K4,completeHTMLTags:i=!0,pasteURLAsLink:o=!0,htmlTagLanguage:a=r1}=r;if(!(s instanceof wl))throw new RangeError("Base parser provided to `markdown` should be a Markdown parser");let l=r.extensions?[r.extensions]:[],c=[a.support,H4],u;o&&c.push(hA),t instanceof ro?(c.push(t.support),u=t.language):t&&(u=t);let h=e||u?eA(e,u):void 0;l.push(fT({codeParser:h,htmlParser:a.language.parser})),n&&c.push(wn.high(ko.of(oA)));let p=Ph(s.configure(l));return i&&c.push(p.data.of({autocomplete:lA})),new ro(p,c)}function lA(r){let{state:e,pos:t}=r,n=/<[:\-\.\w\u00b7-\uffff]*$/.exec(e.sliceDoc(t-25,t));if(!n)return null;let s=ft(e).resolveInner(t,-1);for(;s&&!s.type.isTop;){if(s.name=="CodeBlock"||s.name=="FencedCode"||s.name=="ProcessingInstructionBlock"||s.name=="CommentBlock"||s.name=="Link"||s.name=="Image")return null;s=s.parent}return{from:t-n[0].length,to:t,options:cA(),validFor:/^<[:\-\.\w\u00b7-\uffff]*$/}}let fc=null;function cA(){if(fc)return fc;let r=W4(new uh(tt.create({extensions:r1}),0,!0));return fc=r?r.options:[]}const uA=/code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i,hA=Se.domEventHandlers({paste:(r,e)=>{var t;let{main:n}=e.state.selection;if(n.empty)return!1;let s=(t=r.clipboardData)===null||t===void 0?void 0:t.getData("text/plain");if(!s||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(s)||(/^www\./.test(s)&&(s="https://"+s),!il.isActiveAt(e.state,n.from,1)))return!1;let i=ft(e.state),o=!1;return i.iterate({from:n.from,to:n.to,enter:a=>{(a.from>n.from||uA.test(a.name))&&(o=!0)},leave:a=>{a.to<n.to&&(o=!0)}}),o?!1:(e.dispatch({changes:[{from:n.from,insert:"["},{from:n.to,insert:`](${s})`}],userEvent:"input.paste",scrollIntoView:!0}),!0)}}),dA="#e5c07b",kp="#e06c75",fA="#56b6c2",pA="#ffffff",ka="#abb2bf",vu="#7d8799",mA="#61afef",gA="#98c379",wp="#d19a66",OA="#c678dd",vA="#21252b",Sp="#2c313a",$p="#282c34",pc="#353a42",bA="#3E4451",Cp="#528bff",xA=Se.theme({"&":{color:ka,backgroundColor:$p},".cm-content":{caretColor:Cp},".cm-cursor, .cm-dropCursor":{borderLeftColor:Cp},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:bA},".cm-panels":{backgroundColor:vA,color:ka},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:$p,color:vu,border:"none"},".cm-activeLineGutter":{backgroundColor:Sp},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:pc},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:pc,borderBottomColor:pc},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Sp,color:ka}}},{dark:!0}),yA=Po.define([{tag:$.keyword,color:OA},{tag:[$.name,$.deleted,$.character,$.propertyName,$.macroName],color:kp},{tag:[$.function($.variableName),$.labelName],color:mA},{tag:[$.color,$.constant($.name),$.standard($.name)],color:wp},{tag:[$.definition($.name),$.separator],color:ka},{tag:[$.typeName,$.className,$.number,$.changed,$.annotation,$.modifier,$.self,$.namespace],color:dA},{tag:[$.operator,$.operatorKeyword,$.url,$.escape,$.regexp,$.link,$.special($.string)],color:fA},{tag:[$.meta,$.comment],color:vu},{tag:$.strong,fontWeight:"bold"},{tag:$.emphasis,fontStyle:"italic"},{tag:$.strikethrough,textDecoration:"line-through"},{tag:$.link,color:vu,textDecoration:"underline"},{tag:$.heading,fontWeight:"bold",color:kp},{tag:[$.atom,$.bool,$.special($.variableName)],color:wp},{tag:[$.processingInstruction,$.string,$.inserted],color:gA},{tag:$.invalid,color:pA}]),kA=[xA,Vg(yA)],wA=ze({__name:"MarkdownCodeEditor",props:{modelValue:{},readOnly:{type:Boolean,default:!1},lineToReveal:{default:null}},emits:["update:modelValue"],setup(r,{emit:e}){const t=r,n=e,s=M(null);let i=null,o=!1,a=null;const l=je.define(),c=je.define(),u=_t.define({create(){return Le.none},update(g,O){let x=g.map(O.changes);for(const b of O.effects)if(b.is(c)&&(x=Le.none),b.is(l)){const w=Math.max(1,Math.min(b.value,O.state.doc.lines)),Q=O.state.doc.line(w);x=Le.set([Le.line({class:"cm-target-line"}).range(Q.from)])}return x},provide:g=>Se.decorations.from(g)});function h(){i&&(a&&clearTimeout(a),a=setTimeout(()=>{i&&i.dispatch({effects:c.of(void 0)})},1600))}function p(g){if(!i)return;const O=Math.max(1,Math.min(g,i.state.doc.lines)),x=i.state.doc.line(O);i.dispatch({selection:{anchor:x.from},effects:[Se.scrollIntoView(x.from,{y:"center"}),l.of(O)]}),i.focus(),h()}function f(g,O){return tt.create({doc:g,extensions:[J3,aA(),kA,Se.lineWrapping,u,Se.updateListener.of(x=>{!x.docChanged||o||n("update:modelValue",x.state.doc.toString())}),Se.theme({"&":{height:"100%",fontFamily:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace",fontSize:"13px",backgroundColor:"rgb(var(--color-retro-black))",color:"rgb(var(--color-retro-text))"},".cm-scroller":{overflow:"auto",lineHeight:"1.6"},".cm-gutters":{backgroundColor:"rgb(var(--color-retro-dark))",color:"rgb(var(--color-retro-subtle))",borderRight:"1px solid rgb(var(--color-retro-border))"},".cm-content":{caretColor:"rgb(var(--color-retro-cyan))",padding:"12px 0"},".cm-activeLine":{backgroundColor:"rgba(34, 211, 238, 0.08)"},".cm-selectionBackground, &.cm-focused .cm-selectionBackground":{backgroundColor:"rgba(34, 211, 238, 0.22)"}}),tt.readOnly.of(O)]})}return Ot(()=>{s.value&&(i=new Se({state:f(t.modelValue,t.readOnly),parent:s.value}),t.lineToReveal&&p(t.lineToReveal))}),We(()=>t.modelValue,g=>{if(!i)return;const O=i.state.doc.toString();O!==g&&(o=!0,i.dispatch({changes:{from:0,to:O.length,insert:g}}),o=!1)}),We(()=>t.lineToReveal,g=>{g&&p(g)}),f1(()=>{a&&clearTimeout(a),i&&(i.destroy(),i=null)}),(g,O)=>(v(),y("div",{ref_key:"rootRef",ref:s,class:"h-full w-full"},null,512))}}),SA=ei(wA,[["__scopeId","data-v-d77d4160"]]),$A={class:"fixed inset-0 z-50 flex items-center justify-center"},CA={class:"relative w-[96vw] h-[94vh] bg-retro-black border border-retro-border rounded-lg shadow-2xl flex flex-col overflow-hidden"},QA={class:"flex-shrink-0 flex items-center justify-between px-4 h-12 border-b border-retro-border bg-retro-dark"},PA={class:"flex items-center gap-3 min-w-0"},TA={class:"text-sm font-mono font-bold text-retro-cyan truncate"},MA={class:"text-xs font-mono text-retro-subtle"},AA={class:"flex items-center gap-2"},_A=["disabled"],RA={class:"flex-shrink-0 flex items-center gap-0 border-b border-retro-border bg-retro-dark overflow-x-auto"},BA=["onClick"],ZA={class:"flex-1 min-h-0 overflow-y-auto"},EA={key:0,class:"p-5 max-w-6xl mx-auto"},DA={key:0,class:"flex items-center justify-center py-12"},LA={key:1,class:"flex flex-col items-center justify-center py-12 text-center px-4"},XA={class:"text-sm font-mono text-retro-red"},IA={key:2,class:"space-y-4"},VA={key:0,class:"rounded border border-retro-cyan/40 bg-retro-cyan/10 px-3 py-2 text-xs font-mono text-retro-cyan"},zA={class:"grid grid-cols-2 lg:grid-cols-5 gap-2"},NA={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},WA={class:"text-sm font-mono text-retro-text"},jA={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},qA={class:"text-sm font-mono text-retro-cyan"},YA={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},FA={class:"text-sm font-mono text-retro-yellow"},UA={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},GA={class:"text-sm font-mono text-retro-green"},HA={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},KA={class:"text-sm font-mono text-retro-text"},JA={class:"rounded border border-retro-border bg-retro-panel px-3 py-3"},e_={class:"flex items-center justify-between gap-2 mb-2"},t_={class:"text-[11px] font-mono text-retro-subtle"},r_={key:0,class:"text-xs font-mono text-retro-green"},n_={key:1,class:"space-y-2"},s_={class:"uppercase tracking-wide mr-2"},i_={class:"rounded border border-retro-border bg-retro-panel p-3 overflow-x-auto"},o_={class:"min-w-[760px]"},a_={class:"text-retro-text"},l_=["disabled","onClick"],c_=["disabled","onClick"],u_=["disabled","onClick"],h_={class:"text-retro-muted"},d_={key:1,class:"flex items-center justify-center py-12"},f_={key:2,class:"flex flex-col items-center justify-center py-12 text-center px-4"},p_={class:"text-sm font-mono text-retro-red"},m_={key:3,class:"flex flex-col items-center justify-center py-12 text-center"},g_={key:4,class:"h-full flex flex-col"},O_=["innerHTML"],v_=ze({__name:"SpecViewerModal",props:{feature:{}},emits:["close"],setup(r,{emit:e}){const t=r,n=e,s=go(),{renderMarkdown:i}=Zp(),o=M(t.feature.files[0]?.filename||""),a=M("document"),l=M(""),c=M(!1),u=M(null),h=M(!1),p=M(""),f=M(!1),g=M(null),O=M(null),x=M(!1),b=M(null),w=M(null),Q=ee(()=>{const X={critical:0,major:1,minor:2};return[...w.value?.alerts??[]].sort((I,xe)=>X[I.severity]-X[xe.severity])});function P(X){return X.status==="covered"?"text-retro-green border-retro-green/40 bg-retro-green/10":X.status==="partial"?"text-retro-yellow border-retro-yellow/40 bg-retro-yellow/10":"text-retro-red border-retro-red/40 bg-retro-red/10"}function E(X){return X.severity==="critical"?"text-retro-red border-retro-red/40 bg-retro-red/10":X.severity==="major"?"text-retro-yellow border-retro-yellow/40 bg-retro-yellow/10":"text-retro-cyan border-retro-cyan/40 bg-retro-cyan/10"}async function j(){x.value=!0,b.value=null;try{w.value=await $fetch(`/api/specs/traceability/${t.feature.id}`)}catch{b.value="Failed to load traceability data",w.value=null}finally{x.value=!1}}async function z(X=o.value){if(X){c.value=!0,u.value=null;try{const I=`/api/specs/${t.feature.id}/${X}`,xe=await $fetch(I);l.value=xe.content}catch{u.value="Failed to load file",l.value=""}finally{c.value=!1}}}function ae(){z()}const ce=ee(()=>l.value?i(l.value):"");function Oe(X){O.value=null,a.value="document",h.value&&(h.value=!1),o.value=X,z()}function W(){h.value&&F(),a.value="traceability",!w.value&&!x.value&&j()}async function L(X,I,xe){I&&(o.value!==X?(o.value=X,await z(X)):l.value||await z(X),a.value="document",h.value=!0,p.value=l.value,g.value=null,O.value={filename:X,line:I,requirementId:xe},await nr(),g.value=I)}function Z(){p.value=l.value,g.value=null,h.value=!0}function F(){h.value=!1,p.value=""}async function q(){f.value=!0;try{const X=`/api/specs/${t.feature.id}/${o.value}`;await $fetch(X,{method:"PUT",body:{content:p.value}}),l.value=p.value,h.value=!1,s.success("Saved")}catch{s.error("Failed to save")}finally{f.value=!1}}function N(X){X.key==="Escape"&&(h.value?F():n("close"))}return Ot(()=>{window.addEventListener("keydown",N),z(),j()}),Qt(()=>{window.removeEventListener("keydown",N)}),(X,I)=>{const xe=SA;return v(),be(Sr,{to:"body"},[d("div",$A,[d("div",{class:"absolute inset-0 bg-black/80",onClick:I[0]||(I[0]=J=>n("close"))}),d("div",CA,[d("div",QA,[d("div",PA,[d("span",TA,_(r.feature.name),1),d("span",MA,_(r.feature.id),1)]),d("div",AA,[m(h)?(v(),y($e,{key:0},[d("button",{type:"button",class:"px-3 py-1 text-xs font-mono rounded border border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-muted transition-colors",onClick:F}," Cancel "),d("button",{type:"button",class:"px-3 py-1 text-xs font-mono rounded border border-retro-cyan text-retro-cyan hover:bg-retro-cyan/10 transition-colors disabled:opacity-50",disabled:m(f),onClick:q},_(m(f)?"Saving...":"Save"),9,_A)],64)):m(a)==="document"&&m(l)&&!m(c)&&!m(u)?(v(),y("button",{key:1,type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Edit",onClick:Z},[te(m(Fp),{class:"h-4 w-4"})])):K("",!0),d("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Close (ESC)",onClick:I[1]||(I[1]=J=>n("close"))},[te(m(At),{class:"h-4 w-4"})])])]),d("div",RA,[d("button",{type:"button",class:Ze(["px-4 py-2 text-xs font-mono border-b-2 transition-colors whitespace-nowrap flex items-center gap-1",[m(a)==="traceability"?"border-retro-magenta text-retro-magenta bg-retro-black":"border-transparent text-retro-muted hover:text-retro-text hover:bg-retro-panel"]]),onClick:W},[te(m(N1),{class:"h-3.5 w-3.5"}),I[3]||(I[3]=Ie(" Traceability ",-1))],2),(v(!0),y($e,null,Fe(r.feature.files,J=>(v(),y("button",{key:J.filename,type:"button",class:Ze(["px-4 py-2 text-xs font-mono border-b-2 transition-colors whitespace-nowrap",[m(a)==="document"&&m(o)===J.filename?"border-retro-cyan text-retro-cyan bg-retro-black":"border-transparent text-retro-muted hover:text-retro-text hover:bg-retro-panel"]]),onClick:fe=>Oe(J.filename)},_(J.label),11,BA))),128))]),d("div",ZA,[m(a)==="traceability"?(v(),y("div",EA,[m(x)?(v(),y("div",DA,[...I[4]||(I[4]=[d("span",{class:"text-sm font-mono text-retro-muted animate-pulse"},"Loading traceability...",-1)])])):m(b)?(v(),y("div",LA,[d("p",XA,_(m(b)),1),d("button",{type:"button",class:"mt-3 px-3 py-1.5 text-xs font-mono bg-retro-panel border border-retro-border rounded text-retro-muted hover:text-retro-cyan hover:border-retro-cyan transition-colors",onClick:j}," Retry ")])):m(w)?(v(),y("div",IA,[m(O)?(v(),y("div",VA," Jump target: "+_(m(O).requirementId)+" → "+_(m(O).filename)+":"+_(m(O).line),1)):K("",!0),d("div",zA,[d("div",NA,[I[5]||(I[5]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"FR total",-1)),d("p",WA,_(m(w).summary.frTotal),1)]),d("div",jA,[I[6]||(I[6]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"Plan coverage",-1)),d("p",qA,_(m(w).summary.frWithPlan)+"/"+_(m(w).summary.frTotal),1)]),d("div",YA,[I[7]||(I[7]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"Task mapping",-1)),d("p",FA,_(m(w).summary.frWithTasks)+"/"+_(m(w).summary.frTotal),1)]),d("div",UA,[I[8]||(I[8]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"Fully covered",-1)),d("p",GA,_(m(w).summary.frFullyCovered)+"/"+_(m(w).summary.frTotal),1)]),d("div",HA,[I[9]||(I[9]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"Task progress",-1)),d("p",KA,_(m(w).summary.taskCompleted)+"/"+_(m(w).summary.taskTotal),1)])]),d("div",JA,[d("div",e_,[I[10]||(I[10]=d("h3",{class:"text-xs font-mono text-retro-text"},"Gap Alerts",-1)),d("span",t_,_(m(Q).length)+" issues",1)]),m(Q).length===0?(v(),y("div",r_," No traceability gaps detected. ")):(v(),y("div",n_,[(v(!0),y($e,null,Fe(m(Q),J=>(v(),y("div",{key:J.id,class:Ze(["rounded border px-2.5 py-2 text-xs font-mono",E(J)])},[d("span",s_,_(J.severity),1),d("span",null,_(J.message),1)],2))),128))]))]),d("div",i_,[d("div",o_,[I[11]||(I[11]=d("div",{class:"grid grid-cols-[140px_1fr_1fr_1fr_120px] gap-2 text-[11px] font-mono text-retro-subtle px-2 pb-2 border-b border-retro-border"},[d("span",null,"Requirement"),d("span",null,"Spec"),d("span",null,"Plan"),d("span",null,"Tasks"),d("span",null,"Progress")],-1)),(v(!0),y($e,null,Fe(m(w).requirements,J=>(v(),y("div",{key:J.id,class:"grid grid-cols-[140px_1fr_1fr_1fr_120px] gap-2 items-center px-2 py-2 border-b border-retro-border/60 text-xs font-mono"},[d("span",a_,_(J.id),1),d("button",{type:"button",class:"h-6 rounded border border-retro-green/40 bg-retro-green/10 flex items-center px-2 text-retro-green disabled:opacity-50 disabled:cursor-not-allowed",disabled:!J.locations.specLine,onClick:fe=>L("spec.md",J.locations.specLine,J.id)},[d("span",null,_(J.locations.specLine?`L${J.locations.specLine}`:"Defined"),1)],8,l_),d("button",{type:"button",class:Ze(["h-6 rounded border flex items-center px-2 disabled:opacity-50 disabled:cursor-not-allowed",J.inPlan?"text-retro-cyan border-retro-cyan/40 bg-retro-cyan/10":"text-retro-subtle border-retro-border bg-retro-black/50"]),disabled:!J.locations.planLine,onClick:fe=>L("plan.md",J.locations.planLine,J.id)},[d("span",null,_(J.locations.planLine?`L${J.locations.planLine}`:J.inPlan?"Linked":"Missing"),1)],10,c_),d("button",{type:"button",class:Ze(["h-6 rounded border flex items-center px-2 disabled:opacity-50 disabled:cursor-not-allowed",P(J)]),disabled:J.locations.taskLines.length===0,onClick:fe=>L("tasks.md",J.locations.taskLines[0],J.id)},[d("span",null,_(J.locations.taskLines.length>0?`L${J.locations.taskLines[0]}`:J.inTasks?"Mapped":"Missing"),1)],10,u_),d("span",h_,_(J.taskCompleted)+"/"+_(J.taskTotal),1)]))),128))])])])):K("",!0)])):m(c)?(v(),y("div",d_,[...I[12]||(I[12]=[d("span",{class:"text-sm font-mono text-retro-muted animate-pulse"},"Loading...",-1)])])):m(u)?(v(),y("div",f_,[d("p",p_,_(m(u)),1),d("button",{type:"button",class:"mt-3 px-3 py-1.5 text-xs font-mono bg-retro-panel border border-retro-border rounded text-retro-muted hover:text-retro-cyan hover:border-retro-cyan transition-colors",onClick:ae}," Retry ")])):r.feature.files.length===0?(v(),y("div",m_,[...I[13]||(I[13]=[d("p",{class:"text-sm font-mono text-retro-muted"},"No spec files found",-1),d("p",{class:"mt-1 text-xs font-mono text-retro-subtle"}," This feature directory has no .md files ",-1)])])):m(h)?(v(),y("div",g_,[te(xe,{modelValue:m(p),"onUpdate:modelValue":I[2]||(I[2]=J=>nt(p)?p.value=J:null),"line-to-reveal":m(g),class:"flex-1"},null,8,["modelValue","line-to-reveal"])])):(v(),y("div",{key:5,class:"spec-markdown p-6 text-sm font-mono text-retro-text max-w-4xl mx-auto",innerHTML:m(ce)},null,8,O_))])])])])}}}),b_={class:"w-full max-w-2xl rounded-xl border border-retro-border/80 bg-retro-black shadow-[0_24px_70px_rgba(0,0,0,0.55)] overflow-hidden"},x_={class:"flex items-center justify-between px-4 py-2 border-b border-retro-border/60 bg-retro-dark/70"},y_={class:"flex items-center gap-2 px-4 py-3 border-b border-retro-border/60"},k_={class:"flex items-center justify-between px-4 py-1.5 border-b border-retro-border/40 bg-retro-dark/30 text-[10px] font-mono text-retro-subtle"},w_={class:"flex items-center gap-3"},S_={class:"inline-flex items-center gap-1"},$_={key:0},C_={key:0,class:"truncate max-w-[42%]"},Q_={class:"max-h-[58vh] overflow-y-auto"},P_={key:0,class:"px-4 py-3 text-xs font-mono text-retro-subtle animate-pulse"},T_={key:1,class:"px-4 py-4 text-xs font-mono text-retro-subtle"},M_={key:2,class:"px-4 py-4 text-xs font-mono text-retro-subtle"},A_={key:3,class:"px-4 py-3 text-xs font-mono text-retro-red"},__={key:4,class:"py-2 px-2 space-y-2"},R_=["onMouseenter","onClick"],B_={class:"flex items-center justify-between gap-3 text-[10px] font-mono"},Z_={class:"text-retro-cyan/90"},E_={class:"text-retro-subtle truncate"},D_=["innerHTML"],L_={key:5,class:"px-4 py-3 text-xs font-mono text-retro-subtle"},X_={class:"flex items-center justify-between gap-3 px-4 py-2 border-t border-retro-border/60 bg-retro-dark/50 text-[11px] font-mono text-retro-subtle"},I_={key:0,class:"text-retro-yellow"},V_={key:0,class:"px-4 pb-3 text-xs font-mono text-retro-red flex items-center gap-2"},z_=400,N_=ze({__name:"FeatureSearchModal",props:{availableFeatureIds:{}},emits:["close","select"],setup(r,{emit:e}){const t=r,n=e,{renderMarkdown:s}=Zp(),i=M(""),o=M(!1),a=M(!1),l=M(null),c=M(null),u=M(null),h=M(null),p=M([]),f=M(-1),g=M(null),O=M([]);let x=null,b=0;const w=ee(()=>i.value.trim()),Q=ee(()=>{const q=w.value.toLowerCase().split(/\s+/).map(N=>N.trim()).filter(N=>N.length>=2);return Array.from(new Set(q)).slice(0,8)}),P=ee(()=>l.value||c.value?"error":!w.value&&a.value?"empty-query":p.value.length>0?"results":a.value&&!o.value?"no-results":"idle");function E(q){return{featureId:q.chunk.featureId,sourcePath:q.chunk.sourcePath,headingHierarchy:q.chunk.headingHierarchy,snippet:q.chunk.content,matchType:q.matchType,score:q.score,lineStart:q.chunk.lineStart,lineEnd:q.chunk.lineEnd}}async function j(){const q=w.value;if(c.value=null,!q){a.value=!0,u.value=null,h.value=null,l.value=null,p.value=[],f.value=-1;return}const N=++b;a.value=!0,l.value=null,o.value=!0;try{const X=await $fetch("/api/specs/search",{query:{q,mode:"keyword",limit:20}});if(N!==b)return;u.value=X.warning??null,h.value=X.searchTime,p.value=X.results.map(E),f.value=p.value.length>0?0:-1}catch(X){if(N!==b)return;const I=X instanceof Error?X.message:"Failed to search specs";l.value=I,h.value=null,p.value=[],f.value=-1}finally{N===b&&(o.value=!1)}}We(i,()=>{l.value=null,c.value=null,x&&clearTimeout(x),x=setTimeout(()=>{j()},z_)}),We(p,()=>{O.value=[]}),We(f,async q=>{q<0||(await nr(),O.value[q]?.scrollIntoView({block:"nearest"}))});function z(){n("close")}function ae(q){const N=p.value[q];if(N){if(!t.availableFeatureIds.includes(N.featureId)){c.value="Feature unavailable";return}n("select",N.featureId),n("close")}}function ce(q){if(p.value.length===0)return;if(f.value<0){f.value=0;return}const N=f.value+q;if(N<0){f.value=p.value.length-1;return}if(N>=p.value.length){f.value=0;return}f.value=N}function Oe(q){if(q.key==="ArrowDown"){q.preventDefault(),ce(1);return}if(q.key==="ArrowUp"){q.preventDefault(),ce(-1);return}if(q.key==="Enter"){q.preventDefault(),f.value>=0&&ae(f.value);return}q.key==="Escape"&&(q.preventDefault(),z())}function W(q){q.target===q.currentTarget&&z()}function L(q,N){if(!N){O.value[q]=null;return}if(N instanceof HTMLElement){O.value[q]=N;return}const X=N.$el;O.value[q]=X instanceof HTMLElement?X:null}function Z(){j()}function F(q){const N=q.trim();if(!N)return"";const X=N.length>700?`${N.slice(0,700)}...`:N,I=s(X);if(Q.value.length===0)return I;const xe=Q.value.map(fe=>fe.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),J=new RegExp(`(${xe.join("|")})`,"gi");return I.split(/(<[^>]+>)/g).map(fe=>fe.startsWith("<")?fe:fe.replace(J,"<mark>$1</mark>")).join("")}return Ot(()=>{nr(()=>{g.value?.focus()})}),Qt(()=>{x&&clearTimeout(x)}),(q,N)=>(v(),be(Sr,{to:"body"},[te(vn,{appear:"","enter-active-class":"transition duration-150 ease-out","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition duration-120 ease-in","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ht(()=>[d("div",{class:"fixed inset-0 z-50 flex items-start justify-center pt-16 px-4 bg-black/75 backdrop-blur-[1px]",onClick:W},[te(vn,{appear:"","enter-active-class":"transition duration-150 ease-out","enter-from-class":"opacity-0 translate-y-2 scale-[0.99]","enter-to-class":"opacity-100 translate-y-0 scale-100","leave-active-class":"transition duration-120 ease-in","leave-from-class":"opacity-100 translate-y-0 scale-100","leave-to-class":"opacity-0 translate-y-1 scale-[0.995]"},{default:ht(()=>[d("div",b_,[d("div",x_,[N[1]||(N[1]=d("div",{class:"flex items-center gap-2"},[d("span",{class:"inline-flex items-center rounded px-2 py-0.5 text-[10px] font-mono border border-retro-cyan/50 text-retro-cyan bg-retro-cyan/10"}," Command Palette "),d("span",{class:"text-[10px] font-mono text-retro-subtle"},"Global spec search")],-1)),d("button",{type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Close (Escape)",onClick:z},[te(m(At),{class:"h-4 w-4"})])]),d("div",y_,[te(m(us),{class:"h-4 w-4 text-retro-cyan"}),Je(d("input",{ref_key:"inputRef",ref:g,"onUpdate:modelValue":N[0]||(N[0]=X=>nt(i)?i.value=X:null),type:"text",placeholder:"Search specs across all features...",class:"flex-1 bg-transparent text-sm font-mono text-retro-text placeholder:text-retro-subtle focus:outline-none",onKeydown:Oe},null,544),[[Lt,m(i)]]),N[2]||(N[2]=d("span",{class:"text-[10px] font-mono text-retro-subtle border border-retro-border/60 rounded px-1.5 py-0.5"},"400ms",-1))]),d("div",k_,[d("div",w_,[d("span",S_,[te(m(Vs),{class:"h-3.5 w-3.5"}),Ie(" "+_(m(p).length)+" results ",1)]),m(h)!==null?(v(),y("span",$_,_(m(h))+"ms",1)):K("",!0)]),m(w)?(v(),y("span",C_,"“"+_(m(w))+"”",1)):K("",!0)]),d("div",Q_,[m(o)?(v(),y("div",P_," Searching... ")):m(P)==="empty-query"?(v(),y("div",T_," Enter a search term to search across all feature specs. ")):m(P)==="no-results"?(v(),y("div",M_," No matching features found. ")):m(P)==="error"?(v(),y("div",A_,[d("p",null,_(m(c)||m(l)),1),m(l)?(v(),y("button",{key:0,type:"button",class:"mt-2 px-2 py-1 rounded border border-retro-border text-retro-muted hover:text-retro-cyan hover:border-retro-cyan transition-colors",onClick:Z}," Retry ")):K("",!0)])):m(p).length>0?(v(),y("ul",__,[(v(!0),y($e,null,Fe(m(p),(X,I)=>(v(),y("li",{key:`${X.featureId}:${X.sourcePath}:${I}`},[d("button",{type:"button",ref_for:!0,ref:xe=>L(I,xe),class:Ze(["w-full text-left px-4 py-3 min-h-[132px] rounded-lg border border-retro-border/40 border-l-2 transition-colors",I===m(f)?"border-retro-cyan bg-retro-panel/95 text-retro-text shadow-[0_0_0_1px_rgba(34,211,238,0.18)]":"text-retro-muted hover:text-retro-text hover:bg-retro-panel/90"]),onMouseenter:xe=>f.value=I,onClick:xe=>ae(I)},[d("div",B_,[d("span",Z_,_(X.featureId),1),d("span",E_,_(X.sourcePath)+":"+_(X.lineStart)+"-"+_(X.lineEnd),1)]),d("div",{class:"snippet-markdown mt-2 max-h-20 overflow-hidden text-xs text-retro-text",innerHTML:F(X.snippet)},null,8,D_),N[3]||(N[3]=d("div",{class:"mt-2 text-[10px] font-mono text-retro-subtle"}," Select feature ",-1))],42,R_)]))),128))])):(v(),y("div",L_," Start typing to search. "))]),d("div",X_,[N[4]||(N[4]=d("div",{class:"flex items-center gap-2"},[d("span",{class:"border border-retro-border/70 rounded px-1.5 py-0.5"},"↑↓ move"),d("span",{class:"border border-retro-border/70 rounded px-1.5 py-0.5"},"Enter select"),d("span",{class:"border border-retro-border/70 rounded px-1.5 py-0.5"},"Esc close")],-1)),m(u)?(v(),y("span",I_,_(m(u)),1)):K("",!0)]),m(c)?(v(),y("div",V_,[te(m(Zn),{class:"h-3.5 w-3.5"}),d("span",null,_(m(c)),1)])):K("",!0)])]),_:1})])]),_:1})]))}}),W_=ei(N_,[["__scopeId","data-v-5199b408"]]);function j_(r){return/^\/speckit\.(clarify|plan|tasks|implement)(\s|$)/.test(r)}function q_(r=Date.now,e=Math.random){return`req-${r()}-${e().toString(36).slice(2,8)}`}function Qp(r=Date.now){return`session-${r()}`}function wa(r,e=!1){const t={};return(!e||r?.hasWorktree)&&r?.worktreePath&&(t.cwd=r.worktreePath,t.worktreeBranch=r.worktreeBranch),r?.featureId&&(t.featureId=r.featureId),Object.keys(t).length>0?t:void 0}function Pp(r){if(r.file_path)return String(r.file_path);if(r.path)return String(r.path);if(r.command)return String(r.command).slice(0,50);if(r.pattern)return String(r.pattern);for(const e of Object.values(r))if(typeof e=="string"&&e.length<100)return e;return""}function Tp(r,e="Permission"){const t=r||"",n=t.match(/write to (.+?)(?:[\s,?]|$)/i),s=t.match(/read (.+?)(?:[\s,?]|$)/i),i=t.match(/run (.+?)(?:[?,]|$)/i);return n?.[1]?{tool:"Write",description:t,filePath:n[1].trim()}:s?.[1]?{tool:"Read",description:t,filePath:s[1].trim()}:i?.[1]?{tool:"Bash",description:t,command:i[1].trim()}:{tool:e,description:t}}const gt=new Map;let aa=0;const Mn=new Map,la=new Set,Y_=3e4,n1=18e4,F_=Math.round(n1/1e3);function U_(r){switch(r){case 1e3:return"Normal closure";case 1001:return"Endpoint is going away (server shutdown or page navigation)";case 1002:return"Protocol error";case 1003:return"Unsupported data";case 1005:return"No status code received from peer (close frame had no code)";case 1006:return"Abnormal closure (connection dropped without close frame)";case 1007:return"Invalid payload data";case 1008:return"Policy violation";case 1009:return"Message too big";case 1010:return"Missing required extension";case 1011:return"Internal server error";case 1012:return"Service restart";case 1013:return"Try again later (temporary overload)";case 1015:return"TLS handshake failure";default:return r>=4e3&&r<=4999?"Application-specific close code":"Unknown close code"}}function G_(r,e){const t=[];return r.reason?t.push(r.reason):t.push(U_(r.code)),e?.lastServerError?t.push(`Last server error: ${e.lastServerError}`):e?.lastSocketError&&t.push(`Last socket error: ${e.lastSocketError}`),t.push(`wasClean: ${r.wasClean?"yes":"no"}`),t.join(" | ")}function Sl(){const r=gr(),e=Oo();aa++;function t(){return typeof document>"u"||typeof document.hasFocus!="function"?!1:document.visibilityState==="visible"&&document.hasFocus()}function n(S){const A=r.conversations.find(R=>R.id===S)?.title?.trim()||"Chat";return new Notification("Spec Cat",{body:`${A} response completed.`,tag:`chat-complete-${S}`})}async function s(S){if(!(typeof window>"u"||typeof Notification>"u")&&!t()){if(Notification.permission==="granted"){n(S);return}if(Notification.permission==="default")try{await Notification.requestPermission()==="granted"&&n(S)}catch(k){console.warn("[useChatStream] Failed to request browser notification permission:",k)}}}function i(){return typeof window>"u"?"":`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/_ws`}function o(S){S.healthCheckInterval&&(clearInterval(S.healthCheckInterval),S.healthCheckInterval=null)}function a(S){o(S),S.lastMessageTime=Date.now(),S.healthCheckInterval=Tu(()=>{const k=S.conversationId;if(S.ws.readyState!==WebSocket.OPEN){console.warn(`[useChatStream] Health check: WebSocket not open for ${k}`),o(S),r.isConversationStreaming(k)&&(h(S.currentMessageId,k,"error"),r.updateMessage(S.currentMessageId,{status:"error"},k),r.setSessionError("Connection lost during streaming",k),r.endSession(k),r.endConversationStreaming(k)),gt.delete(k);return}if(r.isConversationStreaming(k)){const A=Date.now()-S.lastMessageTime;A>n1&&(console.warn(`[useChatStream] Health check: streaming timeout for ${k} (${Math.round(A/1e3)}s)`),o(S),h(S.currentMessageId,k,"error"),r.updateMessage(S.currentMessageId,{status:"error"},k),r.setSessionError(`Streaming timed out — no response from server for ${F_} seconds`,k),r.endSession(k),r.endConversationStreaming(k),S.ws.close(),gt.delete(k))}},Y_)}function l(S,k){return r.conversations.find(R=>R.id===S)?.messages.find(R=>R.id===k)?.status}function c(S,k=!0){const A=gt.get(S);A&&(o(A),k&&A.ws.readyState===WebSocket.OPEN&&A.ws.close(),gt.delete(S))}function u(S,k,A){!A||!S.currentTextBlockId||(r.updateBlockWithSave(S.currentMessageId,S.currentTextBlockId,R=>{R.type==="text"&&(R.text+=A)},k,{syncContent:!1}),r.appendToMessage(S.currentMessageId,A,k))}function h(S,k,A){const H=r.conversations.find(oe=>oe.id===k)?.messages.find(oe=>oe.id===S);if(H?.contentBlocks)for(const oe of H.contentBlocks)oe.type==="tool_use"&&(oe.status==="running"||oe.status==="pending")&&r.updateBlockById(S,oe.id,ye=>{ye.type==="tool_use"&&(ye.status=A)},k)}async function p(S){try{(await f(S)).send(JSON.stringify({type:"reset_context"})),r.clearProviderSession(S),console.log("[useChatStream] Context reset requested for conversation:",S)}catch(k){throw console.error("[useChatStream] Failed to reset context:",k),k}}function f(S){return new Promise((k,A)=>{let R=!1;const H=Ue=>{R||(R=!0,k(Ue))},oe=Ue=>{R||(R=!0,A(Ue))},ye=gt.get(S);if(ye&&ye.ws.readyState===WebSocket.OPEN){H(ye.ws);return}ye&&(ye.ws.close(),gt.delete(S));const Xe=i(),Re=new WebSocket(Xe),Ge={ws:Re,currentMessageId:"",conversationId:S,activeTools:new Map,currentTextBlockId:null,currentThinkingBlockId:null,healthCheckInterval:null,lastMessageTime:Date.now(),lastServerError:null,lastSocketError:null,isReplaying:!1,replayBuffer:[]};gt.set(S,Ge),Re.onopen=()=>{H(Re)},Re.onerror=Ue=>{console.error(`[useChatStream] WebSocket error for conversation ${S}:`,Ue);const pe=gt.get(S);pe&&pe.ws!==Re||(pe&&(pe.lastSocketError="Browser reported a WebSocket transport error (network/proxy/server)"),r.isConversationStreaming(S)&&(pe?.currentMessageId&&(h(pe.currentMessageId,S,"error"),r.updateMessage(pe.currentMessageId,{status:"error"},S)),r.setSessionError("Connection error during streaming",S),r.endSession(S),r.endConversationStreaming(S)),gt.delete(S),oe(new Error("WebSocket connection failed. Server may be unavailable.")))},Re.onclose=Ue=>{const pe=gt.get(S);if(!(pe&&pe.ws!==Re)){if(pe&&o(pe),gt.delete(S),Mn.delete(S),!R){oe(new Error(`WebSocket closed before connection was established (code: ${Ue.code})`));return}if(r.isConversationStreaming(S)){pe?.currentMessageId&&(h(pe.currentMessageId,S,"error"),r.updateMessage(pe.currentMessageId,{status:"error"},S));const Qe=G_(Ue,pe);r.setSessionError(`Connection closed: ${Qe} (code: ${Ue.code})`,S),r.endSession(S),r.endConversationStreaming(S)}}},Re.onmessage=Ue=>{const pe=gt.get(S);pe&&pe.ws!==Re||b(Ue.data,S)}})}async function g(S,k=3){for(let A=0;A<k;A++){const R=r.conversations.find(H=>H.id===S);if(R)return R;A<k-1&&await new Promise(H=>setTimeout(H,100))}console.error("[useChatStream] Conversation not found after retries:",S)}function O(S,k){return`${S}:${k}`}function x(S,k){const A=r.conversations.find(H=>H.id===S);if(!A)return null;const R=A.messages.findIndex(H=>H.id===k);if(R<=0)return null;for(let H=R-1;H>=0;H--){const oe=A.messages[H];if(oe.role==="user"&&oe.content.trim().length>0)return oe.content}return null}async function b(S,k){const A=gt.get(k);if(A){A.lastMessageTime=Date.now();try{r.pushDebugEvent({direction:"in",channel:"ws",eventType:"ws.raw",payload:S},k);const R=JSON.parse(S);if(r.pushDebugEvent({direction:"in",channel:"ws",eventType:R.type,payload:R},k),A.isReplaying&&((R.type==="ui_event"||R.type==="done"||R.type==="error")&&A.replayBuffer.push(R),R.type!=="replay_end"))return;if(R.type==="error"){console.error(`[useChatStream] Server error for ${k}:`,R.error);const H=R.error||"Unknown server error";A.lastServerError=H;const oe=/codex cannot access session files|failed to clean up stale arg0 temp dirs: Permission denied|failed to initialize rollout recorder: Permission denied|failed to create session: Permission denied|\/\.codex\/.*permission denied/i.test(H);if(/state db missing rollout path for thread/i.test(H)&&!oe){const Xe=O(k,A.currentMessageId);if(!la.has(Xe)){const Re=x(k,A.currentMessageId);if(Re){la.add(Xe),r.setProviderSessionId("",k),ce(A.currentMessageId,`
|
|
40
|
+
|
|
41
|
+
> **Session Reset**: Codex resume state was corrupted. Retrying once with a fresh session...
|
|
42
|
+
|
|
43
|
+
`,k);try{const Ge=r.conversations.find(pe=>pe.id===k),Ue=wa(Ge);await Oe(Re,A.currentMessageId,k,Ue);return}catch(Ge){console.error(`[useChatStream] Rollout-path recovery retry failed for ${k}:`,Ge)}}}}o(A),h(A.currentMessageId,k,"error"),r.updateMessage(A.currentMessageId,{status:"error"},k),/state db missing rollout path for thread/i.test(H)&&r.setProviderSessionId("",k),la.delete(O(k,A.currentMessageId)),r.setSessionError(H,k),r.endSession(k),r.endConversationStreaming(k),Z(k),r.saveConversation(k,!0),c(k);return}if(R.type==="done"){o(A);const H=l(k,A.currentMessageId);if(la.delete(O(k,A.currentMessageId)),R.denied){h(A.currentMessageId,k,"error"),r.updateMessage(A.currentMessageId,{status:"stopped"},k),r.endSession(k),r.endConversationStreaming(k),Z(k),r.clearPendingPermission(k),A.activeTools.clear(),r.saveConversation(k,!0);return}if(H==="error"||H==="stopped"){h(A.currentMessageId,k,"error"),r.endSession(k),r.endConversationStreaming(k),Z(k),r.clearPendingPermission(k),A.activeTools.clear(),r.saveConversation(k,!0);return}h(A.currentMessageId,k,"complete"),r.completeMessageWithSave(A.currentMessageId,k),r.endSession(k),r.endConversationStreaming(k),s(k);const oe=await g(k),ye=oe?.hasWorktree&&oe.worktreePath?$fetch("/api/chat/worktree-commit",{method:"POST",body:{worktreePath:oe.worktreePath,conversationId:k,previousBranch:oe.worktreeBranch}}).then(Re=>oe.previewBranch&&oe.worktreePath?$fetch("/api/chat/preview-sync",{method:"POST",body:{previewBranch:oe.previewBranch,worktreePath:oe.worktreePath}}).then(Ge=>{if(!Ge.success)throw new Error(Ge.error||"Unknown preview sync failure");return Re}):Re).then(async Re=>{if(Re?.success&&Re.currentBranch!==oe.worktreeBranch){const Ge=oe.worktreeBranch||"unknown";r.updateWorktreeBranch(k,Re.currentBranch);const Ue=await r.syncConversationFeatureFromBranch(k),pe=Re.deletedPreviousBranch?` and deleted \`${Ge}\``:"",Qe=Ue?` and linked to feature \`${Ue}\``:"";ce(A.currentMessageId,`
|
|
44
|
+
|
|
45
|
+
> **Branch changed**: AI switched from \`${Ge}\` to \`${Re.currentBranch}\`${pe}${Qe}
|
|
46
|
+
|
|
47
|
+
`,k)}else Re?.success&&oe.worktreeBranch&&r.updateWorktreeBranch(k,oe.worktreeBranch);return r.saveConversation(k,!1),Re}).catch(Re=>{console.warn("[useChatStream] Auto-commit/preview-sync failed:",Re)}):Promise.resolve(),Xe=Mn.get(k);if(Xe&&Xe.queue.length>0){const Re=Xe.queue.shift(),Ge=Xe.featureId;ye.then(()=>{setTimeout(()=>{F(k,Ge,Re)},1500)}),Xe.queue.length===0&&Mn.delete(k)}r.clearPendingPermission(k),r.saveConversation(k,!0),A.activeTools.clear();return}if(R.type==="pong")return;if(R.type==="session_reset"){console.warn(`[useChatStream] Session reset for ${k}:`,R.reason),r.setProviderSessionId("",k),ce(A.currentMessageId,`
|
|
48
|
+
|
|
49
|
+
> **Session Reset**: Previous session could not be resumed. Retrying with a fresh session...
|
|
50
|
+
|
|
51
|
+
`,k);return}if(R.type==="worktree_recovered"){console.log(`[useChatStream] Worktree recovered for ${k}`),ce(A.currentMessageId,`
|
|
52
|
+
|
|
53
|
+
> **Worktree recovered**: The work directory was restored after a system restart.
|
|
54
|
+
|
|
55
|
+
`,k);return}if(R.type==="context_reset"){console.log(`[useChatStream] Context reset confirmed for ${k}`);return}if(R.type==="aborted"){console.log(`[useChatStream] Abort confirmed for ${k}`);return}if(R.type==="subscribed"){console.log(`[useChatStream] Subscribed to ${k}`,R.jobId?`(job: ${R.jobId}, status: ${R.jobStatus})`:"(no active job)"),R.jobId||(r.endSession(k),r.endConversationStreaming(k));return}if(R.type==="replay_start"){console.log(`[useChatStream] Replay start for ${k}: ${R.eventCount} events from job ${R.jobId}`),A.isReplaying=!0,A.replayBuffer=[];return}if(R.type==="replay_end"){console.log(`[useChatStream] Replay end for ${k}: nextCursor=${R.nextCursor}`),j(A,k),A.isReplaying=!1,A.replayBuffer=[];return}if(R.type==="notification"){P(R);return}if(R.type==="permission_request"){o(A),r.endConversationStreaming(k);const H=Tp(R.description||"",R.tool||"Permission");r.setPendingPermission(H,k);let oe=`
|
|
56
|
+
|
|
57
|
+
**Permission Required**: ${H.tool}`;H.filePath&&(oe+=` - ${H.filePath}`),ce(A.currentMessageId,oe+`
|
|
58
|
+
`,k);return}if(R.type==="permission_prompt"&&R.text){o(A),r.endConversationStreaming(k);const H=Tp(R.text,"Permission");r.setPendingPermission(H,k);const oe=`
|
|
59
|
+
|
|
60
|
+
**${H.tool}**: ${H.filePath||H.command||H.description}
|
|
61
|
+
`;ce(A.currentMessageId,oe,k);return}R.type==="ui_event"&&R.event?E(R.event,k):R.type==="provider_json"&&R.data}catch(R){console.error(`[useChatStream] Failed to parse WebSocket message for ${k}:`,R,"Raw data:",S?.slice(0,200)),h(A.currentMessageId,k,"error"),r.updateMessage(A.currentMessageId,{status:"error"},k),r.setSessionError(`Failed to parse server response: ${R instanceof Error?R.message:"Invalid JSON"}`,k),r.endSession(k),r.endConversationStreaming(k),Z(k),r.saveConversation(k,!0),c(k)}}}let w=null;const Q=500;function P(S){const k=S.notificationEvent,A=S.source;console.log(`[useChatStream] Global notification: ${k}`,{jobId:S.jobId,conversationId:S.conversationId,source:A,status:S.status}),(k==="job_created"&&A!=="user"||k==="job_completed"||k==="job_persisted")&&(w&&clearTimeout(w),w=setTimeout(()=>{w=null,r.refreshServerConversations()},Q))}function E(S,k){const A=gt.get(k);if(A)switch(r.pushDebugEvent({direction:"in",channel:"ui",eventType:S.type,payload:S},k),S.sessionId&&r.setProviderSessionId(S.sessionId,k),S.type){case"session_init":{ae(A.currentMessageId,k);const R={id:Mr(),type:"session_init",model:S.model,tools:S.tools,permissionMode:S.permissionMode,cwd:S.cwd};r.appendContentBlockWithSave(A.currentMessageId,R,k);break}case"block_start":{ae(A.currentMessageId,k);const R=S.blockId||Mr();if(S.blockType==="text"){const H={id:R,type:"text",text:S.text||""};r.appendContentBlockWithSave(A.currentMessageId,H,k),A.currentTextBlockId=R}else if(S.blockType==="thinking"){const H={id:R,type:"thinking",thinking:S.thinking||""};r.appendContentBlockWithSave(A.currentMessageId,H,k),A.currentThinkingBlockId=R}else if(S.blockType==="tool_use"&&S.toolUseId&&S.name){const H={id:R,type:"tool_use",toolUseId:S.toolUseId,name:S.name,input:{},inputSummary:"",status:"running"};r.appendContentBlockWithSave(A.currentMessageId,H,k),A.activeTools.set(S.index??0,{blockId:R,toolUseId:S.toolUseId,name:S.name,inputJson:""})}break}case"block_delta":{if(S.text&&A.currentTextBlockId&&u(A,k,S.text),S.thinking&&A.currentThinkingBlockId&&r.updateBlockWithSave(A.currentMessageId,A.currentThinkingBlockId,R=>{R.type==="thinking"&&(R.thinking+=S.thinking)},k,{syncContent:!1}),S.partialJson){let R;if(S.index!==void 0&&(R=A.activeTools.get(S.index)),!R&&S.blockId){for(const[,H]of A.activeTools)if(H.blockId===S.blockId){R=H;break}}R&&(R.inputJson+=S.partialJson)}break}case"block_end":{let R;if(S.index!==void 0&&(R=A.activeTools.get(S.index)),!R&&S.blockId){for(const[,H]of A.activeTools)if(H.blockId===S.blockId){R=H;break}}if(R||(A.currentTextBlockId&&(A.currentTextBlockId=null),A.currentThinkingBlockId&&(A.currentThinkingBlockId=null)),R){let H={};try{H=JSON.parse(R.inputJson)}catch{}if(R.name==="ExitPlanMode"){const oe={allowedPrompts:H.allowedPrompts};r.setPendingPlanApproval(oe,k)}r.updateBlockWithSave(A.currentMessageId,R.blockId,oe=>{if(oe.type==="tool_use"){const ye=oe;ye.input=H,ye.inputSummary=Pp(H),ye.status="pending"}},k)}break}case"tool_result":{ae(A.currentMessageId,k);const R=r.findToolUseBlock(A.currentMessageId,S.toolUseId,k);R&&R.type==="tool_use"&&r.updateBlockById(A.currentMessageId,R.id,oe=>{oe.type==="tool_use"&&(oe.status=S.isError?"error":"complete")},k);const H={id:Mr(),type:"tool_result",toolUseId:S.toolUseId,content:S.content||"",isError:!!S.isError};r.appendContentBlockWithSave(A.currentMessageId,H,k);break}case"permission_request":{o(A),r.endConversationStreaming(k);const R={tool:S.tool,description:S.description,input:S.input,tools:S.tools};r.setPendingPermission(R,k);let H=`
|
|
62
|
+
|
|
63
|
+
**Permission Required**: ${R.tool}`;ce(A.currentMessageId,H+`
|
|
64
|
+
`,k);break}case"turn_result":{if(S.subtype!=="success"&&(r.updateMessage(A.currentMessageId,{status:"error"},k),Z(k),S.subtype==="max_turns"?r.setSessionError("Maximum conversation turns reached. Please start a new conversation.",k):r.setSessionError("Provider reported an execution error.",k)),S.subtype==="success"&&S.usage){ae(A.currentMessageId,k);const R={id:Mr(),type:"result_summary",totalCostUsd:S.totalCostUsd??0,durationMs:S.durationMs??0,numTurns:S.numTurns??0,usage:S.usage};r.appendContentBlockWithSave(A.currentMessageId,R,k)}break}case"error":{r.updateMessage(A.currentMessageId,{status:"error"},k),r.setSessionError(S.error,k);break}}}function j(S,k){const A=S.replayBuffer;if(A.length===0)return;const R=[];let H="",oe=null,ye=null;const Xe=new Map;let Re="streaming",Ge=!1;for(const Ue of A){if(Ue.type==="done"){Ue.denied?(z(R,"error"),Re="stopped"):Re==="error"||Re==="stopped"?z(R,"error"):(z(R,"complete"),Re="complete"),Ge=!0;continue}if(Ue.type==="error"){z(R,"error"),Re="error";continue}if(Ue.type!=="ui_event"||!Ue.event)continue;const pe=Ue.event;switch(pe.sessionId&&r.setProviderSessionId(pe.sessionId,k),pe.type){case"session_init":{const Qe={id:Mr(),type:"session_init",model:pe.model,tools:pe.tools,permissionMode:pe.permissionMode,cwd:pe.cwd};R.push(Qe);break}case"block_start":{const Qe=pe.blockId||Mr();if(pe.blockType==="text"){const le={id:Qe,type:"text",text:pe.text||""};R.push(le),oe=Qe,pe.text&&(H+=pe.text)}else if(pe.blockType==="thinking"){const le={id:Qe,type:"thinking",thinking:pe.thinking||""};R.push(le),ye=Qe}else if(pe.blockType==="tool_use"&&pe.toolUseId&&pe.name){const le={id:Qe,type:"tool_use",toolUseId:pe.toolUseId,name:pe.name,input:{},inputSummary:"",status:"running"};R.push(le),Xe.set(pe.index??0,{blockId:Qe,toolUseId:pe.toolUseId,name:pe.name,inputJson:""})}break}case"block_delta":{if(pe.text&&oe){const Qe=R.find(le=>le.id===oe);Qe&&Qe.type==="text"&&(Qe.text+=pe.text,H+=pe.text)}if(pe.thinking&&ye){const Qe=R.find(le=>le.id===ye);Qe&&Qe.type==="thinking"&&(Qe.thinking+=pe.thinking)}if(pe.partialJson){let Qe;if(pe.index!==void 0&&(Qe=Xe.get(pe.index)),!Qe&&pe.blockId){for(const[,le]of Xe)if(le.blockId===pe.blockId){Qe=le;break}}Qe&&(Qe.inputJson+=pe.partialJson)}break}case"block_end":{let Qe;if(pe.index!==void 0&&(Qe=Xe.get(pe.index)),!Qe&&pe.blockId){for(const[,le]of Xe)if(le.blockId===pe.blockId){Qe=le;break}}if(Qe||(oe&&(oe=null),ye&&(ye=null)),Qe){let le={};try{le=JSON.parse(Qe.inputJson)}catch{}const he=R.find(Y=>Y.id===Qe.blockId);if(he&&he.type==="tool_use"){const Y=he;Y.input=le,Y.inputSummary=Pp(le),Y.status="pending"}}break}case"tool_result":{const Qe=R.find(he=>he.type==="tool_use"&&he.toolUseId===pe.toolUseId);Qe&&Qe.type==="tool_use"&&(Qe.status=pe.isError?"error":"complete");const le={id:Mr(),type:"tool_result",toolUseId:pe.toolUseId,content:pe.content||"",isError:!!pe.isError};R.push(le);break}case"turn_result":{if(pe.subtype!=="success"&&(Re="error"),pe.subtype==="success"&&pe.usage){const Qe={id:Mr(),type:"result_summary",totalCostUsd:pe.totalCostUsd??0,durationMs:pe.durationMs??0,numTurns:pe.numTurns??0,usage:pe.usage};R.push(Qe)}break}case"error":{Re="error";break}}}r.batchSetMessageBlocks(S.currentMessageId,R,H,Re,k),S.currentTextBlockId=oe,S.currentThinkingBlockId=ye,S.activeTools=Xe,Ge&&(o(S),r.endSession(k),r.endConversationStreaming(k),s(k)),console.log(`[useChatStream] Replay batch processed: ${A.length} events → ${R.length} blocks, status=${Re}`)}function z(S,k){for(const A of S)if(A.type==="tool_use"){const R=A;(R.status==="running"||R.status==="pending")&&(R.status=k)}}function ae(S,k){r.initContentBlocks(S,k)}function ce(S,k,A){ae(S,A);const R={id:Mr(),type:"text",text:k};r.appendContentBlockWithSave(S,R,A)}async function Oe(S,k,A,R){if(typeof window>"u")return;const H=q_();try{const oe=await f(A),ye=gt.get(A);ye&&(ye.currentMessageId=k,ye.activeTools.clear(),ye.currentTextBlockId=null,ye.currentThinkingBlockId=null,a(ye)),j_(S)&&r.setProviderSessionId("",A);const Re=r.getProviderSessionId(A),Ge=r.conversations.find(le=>le.id===A),Ue=Ge?.providerId||e.providerSelection.providerId||Dp,pe=Ge?.providerModelKey||e.providerSelection.modelKey||Ep;Ge&&(!Ge.providerId||!Ge.providerModelKey)&&(r.setConversationProviderSelection(A,Ue,pe),r.saveConversation(A,!0));const Qe={type:"chat",message:S,attachments:R?.attachments,requestId:H,sessionId:Re||void 0,permissionMode:r.permissionMode,conversationId:A,cwd:R?.cwd,worktreeBranch:R?.worktreeBranch,featureId:R?.featureId,providerId:Ue,providerModelKey:pe};r.pushDebugEvent({direction:"out",channel:"ws",eventType:"chat",payload:Qe},A),oe.send(JSON.stringify(Qe))}catch(oe){r.updateMessage(k,{status:"error"},A),r.setSessionError(oe.message||"Connection failed",A),r.endSession(A),r.endConversationStreaming(A),r.saveConversation(A,!0),c(A)}}function W(S,k){const A=k??r.activeConversationId;if(!A)return;const R=gt.get(A);if(!R||R.ws.readyState!==WebSocket.OPEN)return;const H={type:"permission_response",allow:S};r.pushDebugEvent({direction:"out",channel:"ws",eventType:"permission_response",payload:H},A),R.ws.send(JSON.stringify(H)),S&&(r.startConversationStreaming(A),a(R));const oe=S?"Allowed":"Denied";ce(R.currentMessageId,`${oe}
|
|
65
|
+
`,A),r.clearPendingPermission(A)}function L(S,k,A){Mn.set(k,{featureId:S,queue:[...A]})}function Z(S){S?Mn.delete(S):Mn.clear()}async function F(S,k,A){r.activeConversationId!==S&&r.selectConversation(S);const R=r.conversations.find(Xe=>Xe.id===S);let H;if(A.startsWith("skill:")){const Xe=A.replace("skill:","");try{H=(await $fetch(`/api/skills/${Xe}/prompt`,{method:"POST",body:{featureId:k,cwd:R?.worktreePath}})).prompt}catch(Re){console.error(`[useChatStream] Failed to render skill prompt for ${Xe}:`,Re);return}}else H=`/speckit.${A} ${k}`;r.addUserMessage(H,S),r.saveConversation(S,!0);const oe=r.addAssistantMessage(S);r.startSession(Qp(),S),r.startConversationStreaming(S);const ye=wa(R);await Oe(H,oe.id,S,ye)}async function q(S,k,A=0){if(!(typeof window>"u"))try{const R=await f(S),H=gt.get(S);H&&(H.currentMessageId=k,H.activeTools.clear(),H.currentTextBlockId=null,H.currentThinkingBlockId=null,a(H)),r.startConversationStreaming(S);const oe={type:"subscribe",conversationId:S,cursor:A};r.pushDebugEvent({direction:"out",channel:"ws",eventType:"subscribe",payload:oe},S),R.send(JSON.stringify(oe))}catch(R){console.error(`[useChatStream] Failed to subscribe to ${S}:`,R),r.setSessionError(R.message||"Subscribe failed",S)}}function N(S){const k=S??r.activeConversationId;if(!k)return;const A=gt.get(k);if(A){if(A.ws.readyState===WebSocket.OPEN){const R={type:"abort"};r.pushDebugEvent({direction:"out",channel:"ws",eventType:"abort",payload:R},k),A.ws.send(JSON.stringify(R)),A.ws.close()}A.currentMessageId&&(h(A.currentMessageId,k,"error"),r.updateMessage(A.currentMessageId,{status:"stopped"},k),r.endSession(k),r.saveConversation(k,!0)),gt.delete(k)}r.endConversationStreaming(k),r.clearPendingPermission(k),Z(k)}function X(S){const k=gt.get(S);k&&(o(k),k.ws.close(),gt.delete(S)),Mn.delete(S)}function I(){for(const[S,k]of gt)o(k),k.ws.close(),gt.delete(S);Mn.clear()}async function xe(S){const k=S??r.activeConversationId;if(!k)return;r.clearPendingPlanApproval(k),r.setPermissionMode("auto");const A="Approved. Proceed with the implementation.";r.addUserMessage(A,k),r.saveConversation(k,!0);const R=r.addAssistantMessage(k);r.startSession(Qp(),k),r.startConversationStreaming(k);const H=r.conversations.find(ye=>ye.id===k),oe=wa(H,!0);await Oe(A,R.id,k,oe)}function J(S){const k=S??r.activeConversationId;k&&r.clearPendingPlanApproval(k)}async function fe(S){if(typeof window>"u")return!1;try{const k=await $fetch("/api/jobs",{params:{conversationId:S}}),R=k.find(ye=>ye.status==="running"||ye.status==="waiting_permission"||ye.status==="queued")||[...k].sort((ye,Xe)=>Xe.eventCount-ye.eventCount).find(ye=>ye.eventCount>0),H=r.conversations.find(ye=>ye.id===S);if(!H)return!1;const oe=[...H.messages].reverse().find(ye=>ye.role==="assistant");return R?!oe||oe.status!=="streaming"?!1:(console.log("[useChatStream] Resuming streaming for",S,"job:",R.id,"status:",R.status,"events:",R.eventCount),r.resetMessageForReplay(oe.id,S),r.startSession(`resume-${Date.now()}`,S),await q(S,oe.id,0),!0):(oe&&oe.status==="streaming"&&(r.updateMessage(oe.id,{status:"error"},S),r.setSessionError("Streaming was interrupted (server job no longer active)",S)),!1)}catch(k){return console.error("[useChatStream] Failed to resume streaming:",k),!1}}return Qt(()=>{aa--,aa<=0&&(aa=0,I())}),{sendMessage:Oe,sendPermissionResponse:W,subscribe:q,tryResumeStreaming:fe,approvePlan:xe,rejectPlan:J,abort:N,disconnect:I,disconnectConversation:X,enableCascade:L,disableCascade:Z,resetContext:p}}const H_={class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},K_={class:"px-4 py-3 border-b border-retro-border flex items-center justify-between"},J_=["disabled"],eR={class:"px-4 py-4 space-y-3"},tR={class:"relative"},rR=["disabled"],nR={key:0,value:""},sR=["value"],iR={key:0,class:"text-xs font-mono text-retro-red"},oR={key:1,class:"text-xs font-mono text-retro-muted"},aR={class:"px-4 py-3 border-t border-retro-border flex items-center gap-2 justify-end"},lR=["disabled"],cR=["disabled"],bu=ze({__name:"NewConversationModal",props:{show:{type:Boolean},creating:{type:Boolean}},emits:["close","create"],setup(r,{emit:e}){const t=yu(),n=r,s=e,i=M([]),o=M(""),a=M(!1),l=M(""),c=ee(()=>!a.value&&!n.creating&&o.value.length>0&&i.value.length>0);async function u(){a.value=!0,l.value="";try{await t.initialize();const p=await $fetch("/api/git/branches",{query:{excludeSc:!0,workingDirectory:t.workingDirectory}}),f=p.branches.filter(O=>!O.isRemote).map(O=>O.name);if(i.value=f,!f.length){o.value="",l.value="No local branches available for chat creation.";return}const g=(p.current&&f.includes(p.current)?p.current:"")||(f.includes("main")?"main":"")||(f.includes("master")?"master":"")||f[0];o.value=g}catch(p){i.value=[],o.value="",l.value=p instanceof Error?p.message:"Failed to load branches"}finally{a.value=!1}}We(()=>n.show,p=>{p&&u()});function h(){c.value&&s("create",o.value)}return(p,f)=>(v(),be(Sr,{to:"body"},[te(vn,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ht(()=>[r.show?(v(),y("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:f[3]||(f[3]=vr(g=>s("close"),["self"]))},[d("div",H_,[d("div",K_,[f[4]||(f[4]=d("h3",{class:"text-sm font-mono text-retro-text font-semibold"},"New Conversation",-1)),d("button",{type:"button",class:"p-1 text-retro-muted hover:text-retro-text transition-colors",disabled:r.creating,onClick:f[0]||(f[0]=g=>s("close"))},[te(m(At),{class:"w-4 h-4"})],8,J_)]),d("div",eR,[f[5]||(f[5]=d("label",{class:"block text-xs font-mono text-retro-muted"},"Base Branch",-1)),d("div",tR,[Je(d("select",{"onUpdate:modelValue":f[1]||(f[1]=g=>o.value=g),disabled:a.value||r.creating||i.value.length===0,class:"w-full appearance-none bg-retro-black border border-retro-border rounded px-2 py-1.5 pr-7 text-xs font-mono text-retro-cyan focus:outline-none focus:border-retro-cyan disabled:opacity-40"},[a.value?(v(),y("option",nR,"Loading branches...")):K("",!0),(v(!0),y($e,null,Fe(i.value,g=>(v(),y("option",{key:g,value:g},_(g),9,sR))),128))],8,rR),[[Os,o.value]]),te(m(Su),{class:"absolute right-2 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-retro-muted pointer-events-none"})]),l.value?(v(),y("p",iR,_(l.value),1)):(v(),y("p",oR," The conversation worktree will be created from the selected branch. "))]),d("div",aR,[d("button",{type:"button",class:"px-3 py-1.5 text-xs font-mono rounded border border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text/30 transition-colors disabled:opacity-40",disabled:r.creating,onClick:f[2]||(f[2]=g=>s("close"))}," Cancel ",8,lR),d("button",{type:"button",disabled:!c.value,class:"px-3 py-1.5 text-xs font-mono rounded border bg-retro-cyan/10 border-retro-cyan/50 text-retro-cyan hover:bg-retro-cyan/20 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",onClick:h},_(r.creating?"Creating...":"Create"),9,cR)])])])):K("",!0)]),_:1})]))}}),uR={class:"h-full flex flex-col bg-retro-black"},hR={class:"flex-shrink-0 flex items-center justify-between px-4 py-2 border-b border-retro-border"},dR={class:"flex items-center gap-1"},fR={class:"flex-shrink-0 px-3 pt-3"},pR={class:"relative"},mR={class:"flex-1 overflow-y-auto p-3"},gR={class:"space-y-2"},OR={key:0,class:"flex items-center justify-center py-12"},vR={key:1,class:"flex flex-col items-center justify-center py-12 text-center"},bR={key:2,class:"flex flex-col items-center justify-center py-12 text-center"},xR=ze({__name:"FeaturesPanel",setup(r){const e=gr(),t=ll(),{sendMessage:n,enableCascade:s}=Sl(),i=go(),o=M("features"),a=M(null),l=M(null),c=M([]),u=M([]),h=M(!1),p=M({}),f=M(!1),g=M(null),O=M(!1),x=M(!1),b=M(!1),w=M(null),Q=M(""),P=M("");let E=null;We(Q,le=>{E&&clearTimeout(E),E=setTimeout(()=>{P.value=le},300)});const j=ee(()=>{const le=P.value.trim().toLowerCase();return le?c.value.filter(he=>he.name.toLowerCase().includes(le)||he.id.toLowerCase().includes(le)):c.value}),z=M({}),ae=ee(()=>{const le=e.activeConversation;if(!le)return null;if(le.featureId)return le.featureId;const he=le.worktreeBranch?.trim();return he&&c.value.some(Y=>Y.id===he)?he:null}),ce=ee(()=>ae.value||a.value);We(()=>e.activeConversationId,()=>{a.value=null;const le=ae.value;t.setSelectedFeatureId(le),le&&nr(()=>{const he=z.value[le];he&&he.scrollIntoView({behavior:"auto",block:"nearest"})})}),We(a,le=>{le&&nr(()=>{const he=z.value[le];he&&he.scrollIntoView({behavior:"auto",block:"nearest"})})});async function Oe(){h.value=!0;try{const le=await $fetch("/api/specs/features");c.value=le.features,W(le.features)}catch{i.error("Failed to load features"),c.value=[],p.value={}}finally{h.value=!1}}async function W(le){if(le.length===0){p.value={};return}const he=await Promise.allSettled(le.map(async Me=>{const Ve=await $fetch(`/api/specs/traceability/${Me.id}`),Ne=Ve.alerts.filter(qt=>qt.severity==="critical").length,Rt=Ve.alerts.filter(qt=>qt.severity==="major").length;return{featureId:Me.id,critical:Ne,major:Rt}})),Y={};for(const Me of he)Me.status==="fulfilled"&&(Y[Me.value.featureId]={critical:Me.value.critical,major:Me.value.major});p.value=Y}async function L(){try{const le=await $fetch("/api/skills");u.value=le.skills}catch{u.value=[]}}Ot(()=>{Oe(),L(),window.addEventListener("keydown",q)}),Qt(()=>{window.removeEventListener("keydown",q)});function Z(le,he={}){if(a.value=le,l.value=null,o.value="files",t.setSelectedFeatureId(le),he.openViewer!==!1){const Y=c.value.find(Me=>Me.id===le);Y&&(g.value=Y,f.value=!0)}}function F(){f.value=!1,g.value=null}function q(le){(le.ctrlKey||le.metaKey)&&le.key.toLowerCase()==="k"&&(le.preventDefault(),O.value||(O.value=!0))}function N(){O.value=!1}function X(le){Z(le,{openViewer:!1}),O.value=!1}function I(){O.value=!0}const xe=ee(()=>c.value.map(le=>le.id));function J(le){return p.value[le]??{critical:0,major:0}}const fe={plan:["tasks","implement"],tasks:["implement"],implement:[],clarify:[],analyze:[]},S={analyze:["skill:better-spec"]};async function k(le,he,Y){if(le.startsWith("skill:")){const Me=le.replace("skill:",""),Ve=Y?e.conversations.find(Rt=>Rt.id===Y):null;return(await $fetch(`/api/skills/${Me}/prompt`,{method:"POST",body:{featureId:he,cwd:Ve?.worktreePath}})).prompt}return`/speckit.${le} ${he}`}function A(le,he){if(he)return null;const Y=e.findConversationByFeature(le);return Y&&!e.isConversationStreaming(Y.id)&&!Y.finalized?(e.selectConversation(Y.id),Y.id):null}function R(le){const he=e.findConversationByFeature(le);return he&&he.finalized?(i.error(`This feature has a finalized conversation "${he.title}". Please archive it first to start a new conversation.`),e.selectConversation(he.id),!0):!1}async function H(le,he,Y){const Me=await e.createConversation({featureId:le,baseBranch:Y});if(!Me)throw new Error("Failed to create conversation");return e.renameConversation(Me,he),e.selectConversation(Me),Me}async function oe(le,he){e.addUserMessage(he,le),e.saveConversation(le,!0);const Y=e.conversations.find(Ne=>Ne.id===le),Me=e.addAssistantMessage(le);e.startSession(`session-${Date.now()}`,le),e.startConversationStreaming(le);const Ve={};Y?.worktreePath&&(Ve.cwd=Y.worktreePath,Ve.worktreeBranch=Y.worktreeBranch),Y?.featureId&&(Ve.featureId=Y.featureId),await n(he,Me.id,le,Object.keys(Ve).length>0?Ve:void 0)}async function ye(le,he,Y){const Me=S[he];let Ve;if(Me&&Me.length>0){const Ne=[...Me.slice(1),he,...fe[he]||[]];s(le,Y,Ne);const Rt=Me[0];try{Ve=await k(Rt,le,Y)}catch(qt){i.error(qt instanceof Error?qt.message:"Failed to resolve prerequisite step");return}}else{const Ne=fe[he]||[];Ne.length>0&&s(le,Y,Ne),Ve=`/speckit.${he} ${le}`}await oe(Y,Ve)}async function Xe(le,he,Y){const Me=le.shiftKey;if(!Me&&R(he))return;const Ve=A(he,Me);if(Ve){try{await ye(he,Y,Ve)}catch(Ne){i.error(Ne instanceof Error?Ne.message:"Failed to run cascade action")}return}w.value={type:"cascade",featureId:he,command:Y,title:`${Y}: ${he}`},x.value=!0}async function Re(le,he){R(he)||(w.value={type:"open-chat",featureId:he,title:`spec: ${he}`},x.value=!0)}async function Ge(le,he,Y){let Me;try{const Ve=e.conversations.find(Ne=>Ne.id===Y);Me=await $fetch(`/api/skills/${he}/prompt`,{method:"POST",body:{featureId:le,cwd:Ve?.worktreePath}})}catch(Ve){throw new Error(Ve instanceof Error?Ve.message:"Failed to render skill prompt")}await oe(Y,Me.prompt)}async function Ue(le,he,Y){const Me=le.shiftKey;if(!Me&&R(he))return;const Ve=A(he,Me);if(Ve){try{await Ge(he,Y,Ve)}catch(Ne){i.error(Ne instanceof Error?Ne.message:"Failed to run skill")}return}w.value={type:"skill",featureId:he,skillId:Y,title:`skill: ${Y} — ${he}`},x.value=!0}function pe(){x.value=!1,w.value=null}async function Qe(le){if(w.value){b.value=!0;try{const he=w.value,Y=await H(he.featureId,he.title,le);he.type==="cascade"?await ye(he.featureId,he.command,Y):he.type==="skill"&&await Ge(he.featureId,he.skillId,Y),x.value=!1,w.value=null}catch(he){i.error(he instanceof Error?he.message:"Failed to create conversation")}finally{b.value=!1}}}return(le,he)=>{const Y=ZS,Me=v_,Ve=W_;return v(),y("div",uR,[d("div",hR,[he[2]||(he[2]=d("div",{class:"flex items-center gap-2 min-w-0"},null,-1)),d("div",dR,[d("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Search (Ctrl/Cmd+K)",onClick:I},[te(m(us),{class:"h-4 w-4"})]),d("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Refresh",onClick:Oe},[te(m(ds),{class:Ze(["h-4 w-4",{"animate-spin":m(h)}])},null,8,["class"])])])]),d("div",fR,[d("div",pR,[te(m(us),{class:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-retro-subtle"}),Je(d("input",{"onUpdate:modelValue":he[0]||(he[0]=Ne=>nt(Q)?Q.value=Ne:null),type:"text",placeholder:"Search features...",class:"w-full pl-8 pr-3 py-1.5 text-xs font-mono rounded border border-retro-border bg-retro-panel text-retro-text placeholder:text-retro-subtle focus:outline-none focus:border-retro-cyan transition-colors"},null,512),[[Lt,m(Q)]])])]),d("div",mR,[d("div",gR,[(v(!0),y($e,null,Fe(m(j),Ne=>(v(),y("div",{key:Ne.id,ref_for:!0,ref:Rt=>{m(z)[Ne.id]=Rt}},[te(Y,{feature:Ne,skills:m(u),"is-active":m(ce)===Ne.id,"critical-alerts":J(Ne.id).critical,"major-alerts":J(Ne.id).major,onSelect:he[1]||(he[1]=Rt=>Z(Rt,{openViewer:!0})),onCascade:Xe,onOpenChat:Re,onSkill:Ue},null,8,["feature","skills","is-active","critical-alerts","major-alerts"])]))),128))]),m(h)&&m(c).length===0?(v(),y("div",OR,[...he[3]||(he[3]=[d("span",{class:"text-sm font-mono text-retro-muted animate-pulse"},"Loading features...",-1)])])):K("",!0),!m(h)&&m(c).length>0&&m(j).length===0?(v(),y("div",vR,[te(m(us),{class:"h-10 w-10 text-retro-subtle mb-3"}),he[4]||(he[4]=d("p",{class:"text-sm font-mono text-retro-muted"},"No matching features",-1)),he[5]||(he[5]=d("p",{class:"mt-1 text-xs font-mono text-retro-subtle"}," Try a different search term ",-1))])):K("",!0),!m(h)&&m(c).length===0?(v(),y("div",bR,[te(m(ev),{class:"h-10 w-10 text-retro-subtle mb-3"}),he[6]||(he[6]=d("p",{class:"text-sm font-mono text-retro-muted"},"No features found",-1)),he[7]||(he[7]=d("p",{class:"mt-1 text-xs font-mono text-retro-subtle"}," Create a feature in specs/ to get started ",-1))])):K("",!0)]),m(f)&&m(g)?(v(),be(Me,{key:0,feature:m(g),onClose:F},null,8,["feature"])):K("",!0),m(O)?(v(),be(Ve,{key:1,"available-feature-ids":m(xe),onClose:N,onSelect:X},null,8,["available-feature-ids"])):K("",!0),te(bu,{show:m(x),creating:m(b),onClose:pe,onCreate:Qe},null,8,["show","creating"])])}}}),yR={class:"h-full flex flex-col bg-retro-black"},kR={class:"flex-shrink-0 px-3 py-2 border-b border-retro-border space-y-2"},wR={class:"flex items-center justify-between gap-2"},SR={class:"flex items-center gap-1"},$R={class:"relative"},CR=["placeholder"],QR={key:0,class:"flex-shrink-0 flex items-center gap-2 px-3 py-2 bg-retro-yellow/10 border-b border-retro-yellow/30 text-xs"},PR={class:"text-retro-yellow font-mono"},TR={class:"flex-1 overflow-y-auto p-2"},MR={key:0,class:"space-y-1"},AR={key:1,class:"text-center py-6 text-retro-muted"},_R={class:"font-mono text-xs"},RR={key:1,class:"text-center py-8 text-retro-muted"},BR={key:0,class:"space-y-2"},ZR={class:"flex items-start justify-between gap-2"},ER={class:"min-w-0"},DR={class:"text-sm font-mono text-retro-text truncate"},LR={class:"text-xs text-retro-muted mt-1 truncate"},XR={class:"text-xs text-retro-muted/70 mt-1"},IR={class:"text-xs text-retro-muted/70"},VR={class:"flex items-center gap-1 flex-shrink-0"},zR=["onClick"],NR=["onClick"],WR={key:1,class:"text-center py-6 text-retro-muted"},jR={class:"font-mono text-xs"},qR={key:1,class:"text-center py-8 text-retro-muted"},YR=ze({__name:"ConversationsPanel",setup(r){const e=gr(),t=go(),n=M(""),s=M(""),i=M(!1),o=M(!1),a=M(!1),l=M(!1),c=M(null);let u=null;We(n,N=>{u&&clearTimeout(u),u=setTimeout(()=>{s.value=N},180)},{immediate:!0}),Qt(()=>{u&&(clearTimeout(u),u=null)});const h=new Map,p=new Map;We(()=>e.sortedConversations.map(N=>N.id),N=>{const X=new Set(N);for(const I of h.keys())X.has(I)||h.delete(I)},{immediate:!0}),We(()=>e.sortedArchivedConversations.map(N=>N.id),N=>{const X=new Set(N);for(const I of p.keys())X.has(I)||p.delete(I)},{immediate:!0});function f(N){const X=N.messages[N.messages.length-1];return[N.updatedAt,N.title,N.messages.length,X?.id||"",X?.content?.length||0].join("|")}function g(N){const X=N.messages[N.messages.length-1];return[N.updatedAt,N.archivedAt,N.title,N.messages.length,X?.id||"",X?.content?.length||0].join("|")}function O(N){const X=f(N),I=h.get(N.id);if(I&&I.signature===X)return I.text;const xe=[N.title,...N.messages.map(J=>J.content||"")].join(`
|
|
66
|
+
`).toLowerCase();return h.set(N.id,{signature:X,text:xe}),xe}function x(N){const X=g(N),I=p.get(N.id);if(I&&I.signature===X)return I.text;const xe=[N.title,...N.messages.map(J=>J.content||"")].join(`
|
|
67
|
+
`).toLowerCase();return p.set(N.id,{signature:X,text:xe}),xe}const b=ee(()=>e.conversationViewMode==="archive"),w=ee(()=>{const N=e.sortedConversations;if(!s.value.trim())return N;const X=s.value.toLowerCase().trim();return N.filter(I=>O(I).includes(X))}),Q=ee(()=>{const N=e.sortedArchivedConversations;if(!s.value.trim())return N;const X=s.value.toLowerCase().trim();return N.filter(I=>x(I).includes(X))}),P=ee(()=>e.previewingConversationId);async function E(){if(e.checkStorageLimits().atLimit){t.error("Delete or archive a conversation first (limit: 100).");return}i.value=!0}async function j(N){o.value=!0;try{if(!await e.createConversation({baseBranch:N})){t.error("Failed to create conversation");return}i.value=!1}catch(X){t.error(X instanceof Error?X.message:"Failed to create conversation")}finally{o.value=!1}}function z(N){e.selectConversation(N),e.setConversationViewMode("active")}async function ae(N){const X=await e.archiveConversation(N);if(!X.success){t.error(X.error||"Failed to archive conversation");return}t.success("Conversation archived")}async function ce(N){c.value=N,a.value=!0}function Oe(){a.value=!1,c.value=null}async function W(N){if(c.value){l.value=!0;try{const X=await e.restoreArchivedConversation(c.value,N);if(!X.success){t.error(X.error||"Failed to restore archived conversation");return}t.success("Archived conversation restored"),a.value=!1,c.value=null}finally{l.value=!1}}}async function L(N){const X=await e.deleteArchivedConversation(N);if(!X.success){t.error(X.error||"Failed to delete archived conversation");return}t.success("Archived conversation deleted")}function Z(N,X){e.renameConversation(N,X)}function F(N){return new Date(N).toLocaleString()}function q(N){if(!N.length)return"No messages";const I=(N[N.length-1].content||"").trim();return I?I.length>80?`${I.slice(0,80)}...`:I:"No messages"}return(N,X)=>(v(),y("div",yR,[d("div",kR,[d("div",wR,[d("button",{onClick:E,class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"New conversation","aria-label":"New conversation"},[te(m(ol),{class:"w-4 h-4"})]),d("div",SR,[d("button",{onClick:X[0]||(X[0]=I=>m(e).setConversationViewMode("active")),class:Ze(["p-1.5 rounded transition-colors",b.value?"text-retro-muted hover:text-retro-cyan hover:bg-retro-panel":"text-retro-cyan bg-retro-cyan/10"]),title:"Active conversations","aria-label":"Active conversations"},[te(m(W1),{class:"w-4 h-4"})],2),d("button",{onClick:X[1]||(X[1]=I=>m(e).setConversationViewMode("archive")),class:Ze(["p-1.5 rounded transition-colors",b.value?"text-retro-cyan bg-retro-cyan/10":"text-retro-muted hover:text-retro-cyan hover:bg-retro-panel"]),title:"Archived conversations","aria-label":"Archived conversations"},[te(m(Bh),{class:"w-4 h-4"})],2)])]),d("div",$R,[te(m(us),{class:"absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-retro-muted"}),Je(d("input",{"onUpdate:modelValue":X[2]||(X[2]=I=>n.value=I),type:"text",placeholder:b.value?"Search archive...":"Search conversations...",class:"w-full pl-8 pr-3 py-1.5 text-xs font-mono bg-retro-black border border-retro-border rounded focus:border-retro-cyan focus:outline-none focus:ring-1 focus:ring-retro-cyan text-retro-text placeholder-retro-muted"},null,8,CR),[[Lt,n.value]])])]),m(e).isNearStorageLimit?(v(),y("div",QR,[te(m(Zn),{class:"w-4 h-4 text-retro-yellow flex-shrink-0"}),d("p",PR,_(m(e).conversationCount)+" active conversations. Limit is 100. ",1)])):K("",!0),d("div",TR,[b.value?(v(),y($e,{key:1},[m(e).hasArchivedConversations?(v(),y("div",BR,[Q.value.length>0?(v(!0),y($e,{key:0},Fe(Q.value,(I,xe,J,fe)=>{const S=[I.id,I.title,I.updatedAt,I.archivedAt,I.messages.length];if(fe&&fe.key===I.id&&Ah(fe,S))return fe;const k=(v(),y("div",{key:I.id,onClick:A=>ce(I.id),onKeydown:[ls(vr(A=>ce(I.id),["prevent"]),["enter"]),ls(vr(A=>ce(I.id),["prevent"]),["space"])],class:"w-full text-left p-3 rounded border border-retro-border hover:border-retro-cyan/50 hover:bg-retro-cyan/5 transition-colors",role:"button",tabindex:"0"},[d("div",ZR,[d("div",ER,[d("h3",DR,_(I.title),1),d("p",LR,_(q(I.messages)),1),d("p",XR," Archived: "+_(F(I.archivedAt)),1),d("p",IR," Updated: "+_(F(I.updatedAt)),1)]),d("div",VR,[d("button",{onClick:vr(A=>ce(I.id),["stop"]),class:"inline-flex items-center gap-1 px-2 py-1 text-xs font-mono border border-retro-cyan/40 text-retro-cyan rounded hover:bg-retro-cyan/10 transition-colors",title:"Restore archived conversation"},[te(m(Bh),{class:"w-3.5 h-3.5"}),X[9]||(X[9]=Ie(" Restore ",-1))],8,zR),d("button",{onClick:vr(A=>L(I.id),["stop"]),class:"inline-flex items-center gap-1 px-2 py-1 text-xs font-mono border border-red-400/40 text-red-300 rounded hover:bg-red-500/10 transition-colors",title:"Delete archived conversation"},[te(m(bn),{class:"w-3.5 h-3.5"}),X[10]||(X[10]=Ie(" Delete ",-1))],8,NR)])])],40,["onClick","onKeydown"]));return k.memo=S,k},X,5),128)):(v(),y("div",WR,[d("p",jR,'No archived results for "'+_(n.value)+'"',1)]))])):(v(),y("div",qR,[...X[11]||(X[11]=[d("p",{class:"font-mono text-sm"},"No archived conversations",-1),d("p",{class:"text-xs mt-1"},"Archived conversations will appear here",-1)])]))],64)):(v(),y($e,{key:0},[m(e).hasConversations?(v(),y("div",MR,[w.value.length>0?(v(!0),y($e,{key:0},Fe(w.value,(I,xe,J,fe)=>{const S=[I.id,I.title,I.updatedAt,I.messages.length,I.finalized,I.id===m(e).activeConversationId,m(e).isConversationStreaming(I.id),P.value===I.id];if(fe&&fe.key===I.id&&Ah(fe,S))return fe;const k=(v(),y("div",{key:I.id},[te($1,{conversation:I,"is-active":I.id===m(e).activeConversationId,"is-streaming":m(e).isConversationStreaming(I.id),"is-previewing":P.value===I.id,onSelect:A=>z(I.id),onArchive:A=>ae(I.id),onRename:A=>Z(I.id,A)},null,8,["conversation","is-active","is-streaming","is-previewing","onSelect","onArchive","onRename"])]));return k.memo=S,k},X,3),128)):(v(),y("div",AR,[d("p",_R,'No results for "'+_(n.value)+'"',1)]))])):(v(),y("div",RR,[...X[8]||(X[8]=[d("p",{class:"font-mono text-sm"},"No conversations",-1),d("p",{class:"text-xs mt-1"},'Click "New" to start',-1)])]))],64))]),te(bu,{show:i.value,creating:o.value,onClose:X[7]||(X[7]=I=>i.value=!1),onCreate:j},null,8,["show","creating"]),te(bu,{show:a.value,creating:l.value,onClose:Oe,onCreate:W},null,8,["show","creating"])]))}}),FR={mobile:768,tablet:1024};function UR(r,e){return r<e.mobile?"mobile":r<e.tablet?"tablet":"desktop"}const s1=xu("layout",{state:()=>({currentViewport:"desktop",chatFullscreen:!1}),getters:{isMobile:r=>r.currentViewport==="mobile",isTablet:r=>r.currentViewport==="tablet",isDesktop:r=>r.currentViewport==="desktop",isChatFullscreen:r=>r.chatFullscreen},actions:{updateViewport(r){this.currentViewport=UR(r,FR)},toggleChatFullscreen(){this.chatFullscreen=!this.chatFullscreen},setChatFullscreen(r){this.chatFullscreen=r}}});function GR(){const r=M(null),e=M(!0);let t=null,n="smooth";const s=50;function i(){const p=r.value;return p?p.scrollHeight-p.scrollTop-p.clientHeight<s:!0}function o(){e.value=i()}function a(p="smooth"){if(n=p,t!==null)return;t=(typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame.bind(window):g=>setTimeout(()=>g(Date.now()),16))(()=>{t=null,nr(()=>{const g=r.value;g&&g.scrollTo({top:g.scrollHeight,behavior:n})})})}function l(p="smooth"){a(p),e.value=!0}function c(p="smooth"){e.value&&a(p)}function u(){e.value=!0}function h(){e.value=!1}return{containerRef:r,shouldAutoScroll:_e(e),onScroll:o,scrollToBottom:a,forceScrollToBottom:l,maybeScrollToBottom:c,enableAutoScroll:u,disableAutoScroll:h}}function HR(r){if(!r)return null;if(r instanceof HTMLElement)return r;if(typeof r=="object"&&"$el"in r){const e=r.$el;return e instanceof HTMLElement?e:null}return null}function KR(r){const{allMessages:e,containerRef:t,estimateItemHeight:n=120,overscan:s=6}=r,i=M(0),o=M(0),a=M(new Map),l=new Map;let c=null;function u(w,Q){if(!Number.isFinite(Q)||Q<=0)return;const P=Math.ceil(Q);if(a.value.get(w)===P)return;const E=new Map(a.value);E.set(w,P),a.value=E}function h(w,Q){u(w,Q.getBoundingClientRect().height)}function p(w,Q){const P=l.get(w);P&&c&&c.unobserve(P),P&&delete P.dataset.virtualMessageId,l.delete(w);const E=HR(Q);E&&(E.dataset.virtualMessageId=w,l.set(w,E),h(w,E),c&&c.observe(E))}function f(){const w=t.value;w&&(i.value=w.scrollTop)}const g=ee(()=>{const w=e.value,Q=new Array(w.length);let P=0;for(let E=0;E<w.length;E++)Q[E]=P,P+=a.value.get(w[E].id)??n;return{offsets:Q,totalHeight:P}});function O(w,Q){let P=0,E=w.length-1,j=w.length;for(;P<=E;){const z=Math.floor((P+E)/2);w[z]>=Q?(j=z,E=z-1):P=z+1}return j===w.length?Math.max(0,w.length-1):j}const x=ee(()=>{const w=e.value;if(w.length===0)return[];const{offsets:Q}=g.value,P=i.value,E=P+Math.max(o.value,1),j=O(Q,Math.max(0,P-n));let z=j;for(;z<w.length&&Q[z]<E;)z++;const ae=Math.max(0,j-s),ce=Math.min(w.length,z+s),Oe=[];for(let W=ae;W<ce;W++)Oe.push({message:w[W],index:W,top:Q[W]});return Oe}),b=ee(()=>g.value.totalHeight);return Ot(()=>{const w=t.value;w&&(o.value=w.clientHeight,i.value=w.scrollTop),c=new ResizeObserver(Q=>{for(const P of Q){const E=P.target;if(t.value&&E===t.value){o.value=P.contentRect.height;continue}const j=E.dataset.virtualMessageId;j&&u(j,P.contentRect.height)}}),t.value&&c.observe(t.value);for(const[Q,P]of l)P.dataset.virtualMessageId=Q,c.observe(P),h(Q,P)}),Qt(()=>{c&&(c.disconnect(),c=null),l.clear()}),{visibleItems:x,totalHeight:b,onVirtualScroll:f,setItemRef:p}}const JR={key:0,class:"flex flex-col items-center justify-center h-full p-8 text-center"},eB={key:1,class:"relative"},tB={class:"sticky bottom-0"},rB={key:0,class:"px-4 py-2 bg-retro-dark/90 border-t border-retro-border/50 backdrop-blur-sm"},nB={key:1,class:"px-4 py-2.5 bg-retro-red/20 border-t border-retro-red/50"},sB={class:"flex items-start gap-2"},iB={class:"flex-1 min-w-0"},oB={class:"flex items-center justify-between gap-2 mb-0.5"},aB={class:"text-xs font-mono text-retro-red/80 break-words whitespace-pre-wrap"},lB={key:2,class:"px-4 py-2 bg-retro-dark/90 border-t border-retro-border/50"},cB=ze({__name:"ChatMessages",setup(r){const e=gr(),{containerRef:t,onScroll:n,maybeScrollToBottom:s,scrollToBottom:i,forceScrollToBottom:o}=GR(),{visibleItems:a,totalHeight:l,onVirtualScroll:c,setItemRef:u}=KR({allMessages:ee(()=>e.messages),containerRef:t});function h(){n(),c()}const p=ee(()=>e.isActiveConversationStreaming),f=ee(()=>{const w=e.lastMessage;return!w||w.role!=="assistant"?null:w.status}),g=M(!1);function O(w){const Q=w.contentBlocks;return!Q||Q.length===0?"":Q.map(P=>{switch(P.type){case"tool_use":return`u:${P.id}:${P.status}:${P.inputSummary}`;case"tool_result":return`r:${P.id}:${P.toolUseId}:${P.isError?1:0}:${P.content.length}`;case"text":return`t:${P.id}:${P.text.length}`;case"thinking":return`k:${P.id}:${P.thinking.length}`;case"result_summary":return`s:${P.id}:${P.numTurns}:${P.durationMs}`;case"session_init":return`i:${P.id}:${P.model}:${P.tools.length}`;default:return""}}).join("|")}const x=M(null);function b(){if(x.value&&(x.value(),x.value=null),!t.value||typeof ResizeObserver>"u")return;const w=new ResizeObserver(()=>{s("instant")});w.observe(t.value),x.value=()=>{w.disconnect()}}return Ot(()=>{i("instant"),b()}),Qt(()=>{x.value&&x.value()}),We(()=>e.activeConversationId,()=>{g.value=!1,i("instant")}),We(t,()=>{b()}),We(()=>[e.activeConversationId,e.messages.length],([w,Q])=>{!w||Q===0||g.value||(g.value=!0,o("instant"))},{immediate:!0}),We(()=>e.messages.length,()=>{s("instant")}),We(()=>e.lastMessage?.content,()=>{s("instant")}),We([p,()=>e.lastError],()=>{s("instant")}),We(l,()=>{s("instant")}),(w,Q)=>(v(),y("div",{ref_key:"containerRef",ref:t,class:"flex-1 overflow-y-auto",onScroll:h},[m(e).hasMessages?(v(),y("div",eB,[d("div",{class:"relative",style:er({height:`${m(l)}px`})},[(v(!0),y($e,null,Fe(m(a),P=>(v(),y("div",{key:P.message.id,class:"absolute left-0 right-0 border-b border-retro-border/30",style:er({transform:`translateY(${P.top}px)`})},[d("div",{ref_for:!0,ref:E=>m(u)(P.message.id,E)},[_p([P.message.id,P.message.status,P.message.content,P.message.contentBlocks?.length||0,O(P.message),P.message.tools?.length||0],()=>te(C1,{message:P.message},null,8,["message"]),Q,0)],512)],4))),128))],4)])):(v(),y("div",JR,[...Q[2]||(Q[2]=[d("div",{class:"text-retro-muted text-sm font-mono mb-2"}," No messages yet ",-1),d("div",{class:"text-retro-muted text-xs font-mono"}," Send a message to start chatting ",-1)])])),d("div",tB,[m(p)&&!m(e).lastError?(v(),y("div",rB,[...Q[3]||(Q[3]=[Bp('<div class="flex items-center gap-2"><div class="flex gap-1"><span class="w-1.5 h-1.5 rounded-full bg-retro-cyan animate-bounce" style="animation-delay:0ms;"></span><span class="w-1.5 h-1.5 rounded-full bg-retro-cyan animate-bounce" style="animation-delay:150ms;"></span><span class="w-1.5 h-1.5 rounded-full bg-retro-cyan animate-bounce" style="animation-delay:300ms;"></span></div><span class="text-xs font-mono text-retro-muted">Processing...</span></div>',1)])])):K("",!0),m(e).lastError?(v(),y("div",nB,[d("div",sB,[te(m(mo),{class:"w-4 h-4 text-retro-red flex-shrink-0 mt-0.5"}),d("div",iB,[d("div",oB,[Q[4]||(Q[4]=d("p",{class:"text-xs font-mono font-semibold text-retro-red"},"Error",-1)),d("button",{class:"text-xs font-mono text-retro-red/60 hover:text-retro-red underline",onClick:Q[1]||(Q[1]=P=>m(e).clearError())}," Dismiss ")]),d("p",aB,_(m(e).lastError),1),Q[5]||(Q[5]=d("p",{class:"text-xs font-mono text-retro-muted mt-1"}," Check browser console (F12) for more details ",-1))])])])):m(f)==="stopped"?(v(),y("div",lB,[...Q[6]||(Q[6]=[d("div",{class:"flex items-center gap-2"},[d("span",{class:"w-2 h-2 rounded-full bg-retro-muted"}),d("span",{class:"text-xs font-mono text-retro-muted"},"Stopped")],-1)])])):K("",!0)])],544))}});function uB(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"fill-rule":"evenodd",d:"M4.755 10.059a7.5 7.5 0 0 1 12.548-3.364l1.903 1.903h-3.183a.75.75 0 1 0 0 1.5h4.992a.75.75 0 0 0 .75-.75V4.356a.75.75 0 0 0-1.5 0v3.18l-1.9-1.9A9 9 0 0 0 3.306 9.67a.75.75 0 1 0 1.45.388Zm15.408 3.352a.75.75 0 0 0-.919.53 7.5 7.5 0 0 1-12.548 3.364l-1.902-1.903h3.183a.75.75 0 0 0 0-1.5H2.984a.75.75 0 0 0-.75.75v4.992a.75.75 0 0 0 1.5 0v-3.18l1.9 1.9a9 9 0 0 0 15.059-4.035.75.75 0 0 0-.53-.918Z","clip-rule":"evenodd"})])}function Mp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"fill-rule":"evenodd",d:"M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z","clip-rule":"evenodd"})])}function hB(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{d:"M3.478 2.404a.75.75 0 0 0-.926.941l2.432 7.905H13.5a.75.75 0 0 1 0 1.5H4.984l-2.432 7.905a.75.75 0 0 0 .926.94 60.519 60.519 0 0 0 18.445-8.986.75.75 0 0 0 0-1.218A60.517 60.517 0 0 0 3.478 2.404Z"})])}function dB(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"fill-rule":"evenodd",d:"M4.5 7.5a3 3 0 0 1 3-3h9a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3h-9a3 3 0 0 1-3-3v-9Z","clip-rule":"evenodd"})])}const fB={class:"flex-shrink-0 flex-grow-0 border-t border-retro-border bg-retro-dark p-3"},pB={class:"flex items-center gap-2 mb-2"},mB={class:"relative min-w-0 flex-1 max-w-[154px] model-selector"},gB=["disabled"],OB={class:"truncate text-left"},vB={key:0,class:"absolute bottom-full left-0 mb-1 py-1 bg-retro-dark border border-retro-border rounded shadow-lg z-10 min-w-[220px] max-w-[280px]"},bB={key:0,class:"px-3 py-1.5 text-xs font-mono text-retro-muted"},xB={class:"px-3 py-1 text-[11px] font-mono uppercase tracking-wide text-retro-cyan/80 select-none"},yB=["disabled","onClick"],kB={class:"truncate"},wB={class:"relative mode-selector"},SB={key:0,class:"absolute bottom-full left-0 mb-1 py-1 bg-retro-dark border border-retro-border rounded shadow-lg z-10 min-w-[140px]"},$B=["onClick"],CB={class:"text-xs font-mono text-retro-muted"},QB={key:0,class:"mb-3 p-3 bg-retro-yellow/10 border border-retro-yellow/50 rounded"},PB={class:"flex items-center justify-between gap-3"},TB={class:"flex-1 min-w-0"},MB={class:"text-xs font-mono text-retro-text truncate"},AB={class:"text-retro-cyan"},_B={key:0,class:"text-retro-muted"},RB={key:1,class:"text-retro-muted"},BB={key:1,class:"mb-3 p-3 bg-retro-cyan/10 border border-retro-cyan/50 rounded"},ZB={key:2,class:"mb-2 flex flex-wrap gap-2"},EB=["src","alt"],DB={class:"mt-1 truncate text-[10px] font-mono text-retro-muted"},LB={class:"truncate text-[10px] font-mono text-retro-muted/80"},XB=["onClick"],IB={class:"flex gap-2 items-start"},VB=["disabled"],zB={class:"flex-1 relative min-h-[40px]"},NB=["disabled","placeholder"],WB=["disabled"],Ap=4,jB=5*1024*1024,qB=ze({__name:"ChatInput",props:{disabled:{type:Boolean}},setup(r){const e=r,t=gr(),n=Oo(),{sendMessage:s,sendPermissionResponse:i,approvePlan:o,rejectPlan:a,abort:l,resetContext:c}=Sl(),u=M(""),h=M(null),p=M(null),f=M(!1),g=M(!1),O=M(!1),x=M([]);let b=null;const w=M(null),{data:Q,pending:P}=gc("chat-input-ai-providers",()=>$fetch("/api/ai/providers"),{server:!1,default:()=>({providers:[]})}),E=ee(()=>Q.value?.providers??[]),j=ee(()=>t.permissionMode==="ask"||t.permissionMode==="plan"),z=ee(()=>{const G=new Map;for(const se of E.value)for(const ve of se.models)G.set(ve.label,(G.get(ve.label)??0)+1);return E.value.flatMap(se=>se.models.map(ve=>{const Be=se.capabilities.streaming&&(!j.value||se.capabilities.permissions),qe=(G.get(ve.label)??0)>1;return{key:`${se.id}::${ve.key}`,providerId:se.id,providerName:se.name,modelKey:ve.key,modelLabel:ve.label,label:qe?`${ve.label} · ${se.name}`:ve.label,compatible:Be}})).sort((se,ve)=>se.modelLabel.localeCompare(ve.modelLabel,void 0,{sensitivity:"base"})||se.providerName.localeCompare(ve.providerName,void 0,{sensitivity:"base"}))}),ae=ee(()=>{const G=new Map;for(const ve of z.value){const Be=G.get(ve.providerId);if(Be){Be.options.push(ve);continue}G.set(ve.providerId,{providerId:ve.providerId,providerName:ve.providerName,options:[ve]})}const de=new Map([["codex",0],["claude",1]]),se=Array.from(G.values());return se.sort((ve,Be)=>{const qe=de.get(ve.providerId)??99,He=de.get(Be.providerId)??99;return qe!==He?qe-He:ve.providerName.localeCompare(Be.providerName,void 0,{sensitivity:"base"})}),se});function ce(G){return`${G.providerId}::${G.modelKey}`}const Oe=ee(()=>{const G=t.activeConversation;return G?.providerId&&G.providerModelKey?{providerId:G.providerId,modelKey:G.providerModelKey}:w.value?w.value:n.providerSelection}),W=ee(()=>ce(Oe.value)),L=ee(()=>z.value.find(G=>G.key===W.value)||null),Z=ee(()=>L.value?.label||"Select model");function F(G,de){t.setConversationProviderSelection(G,de.providerId,de.modelKey),t.clearProviderSession(G),t.saveConversation(G,!0)}function q(G){w.value&&(F(G,w.value),w.value=null)}function N(G){if(!G||!G.compatible)return;const de={providerId:G.providerId,modelKey:G.modelKey},se=t.activeConversationId;if(se){F(se,de),w.value=null,O.value=!1;return}w.value=de,O.value=!1}const X={plan:$u,ask:Cu,auto:Wp,bypass:Qu},I={plan:"text-retro-cyan",ask:"text-retro-green",auto:"text-retro-yellow",bypass:"text-retro-red"};function xe(G){t.setPermissionMode(G),g.value=!1}function J(G){const de=G.target;de.closest(".mode-selector")||(g.value=!1),de.closest(".model-selector")||(O.value=!1)}Ot(()=>{document.addEventListener("click",J),n.hydrate()}),Qt(()=>{document.removeEventListener("click",J),b!==null&&typeof window<"u"&&typeof window.cancelAnimationFrame=="function"&&(window.cancelAnimationFrame(b),b=null)});const fe=ee(()=>(u.value.trim().length>0||x.value.length>0)&&!t.isActiveConversationStreaming&&!f.value&&!t.pendingPermission&&!A.value),S=ee(()=>t.isActiveConversationStreaming&&!t.pendingPermission),k=ee(()=>t.pendingPermission!==null),A=ee(()=>t.pendingPlanApproval!==null);function R(){i(!0,t.activeConversationId)}function H(){i(!1,t.activeConversationId)}function oe(){o(t.activeConversationId)}function ye(){a(t.activeConversationId)}function Xe(){x.value=[],p.value&&(p.value.value="")}function Re(G){x.value=x.value.filter(de=>de.id!==G)}function Ge(G){return G<1024?`${G} B`:G<1024*1024?`${(G/1024).toFixed(1)} KB`:`${(G/(1024*1024)).toFixed(1)} MB`}function Ue(G){return new Promise((de,se)=>{const ve=new FileReader;ve.onload=()=>{typeof ve.result=="string"?de(ve.result):se(new Error("Failed to read image"))},ve.onerror=()=>se(ve.error||new Error("Failed to read image")),ve.readAsDataURL(G)})}async function pe(G){const de=G.target,se=de.files?Array.from(de.files):[];if(se.length===0)return;const{useToast:ve}=await cs(async()=>{const{useToast:He}=await import("./BuAdOXGq.js").then(lt=>lt.n);return{useToast:He}},__vite__mapDeps([0,1,2]),import.meta.url),Be=ve();let qe=Ap-x.value.length;if(qe<=0){Be.warning(`You can attach up to ${Ap} images per message.`),de.value="";return}for(const He of se){if(qe<=0)break;if(!He.type.startsWith("image/")){Be.warning(`Skipped "${He.name}": only image files are supported.`);continue}if(He.size>jB){Be.warning(`Skipped "${He.name}": max size is 5 MB.`);continue}try{const lt=await Ue(He);x.value.push({id:`att-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,name:He.name,mimeType:He.type,size:He.size,dataUrl:lt}),qe--}catch{Be.error(`Failed to attach "${He.name}".`)}}de.value=""}const Qe=ee(()=>{if(t.isActiveConversationStreaming||f.value)return!1;const G=t.lastMessage;return G?.role==="assistant"&&G?.status==="error"});function le(G){const de=G.instructionFiles.length>0?G.instructionFiles.map(ve=>{const Be=ve.source==="cwd"?"cwd":"ancestor",qe=ve.mtime?` (mtime: ${ve.mtime})`:"";return`- \`${ve.path}\` [${Be}] - ${ve.hint}${qe}`}):["- (none detected from current cwd ancestry)"],se=G.specContext.files.length>0?G.specContext.files.map(ve=>`- \`${ve}\``):["- (none)"];return["## Context Snapshot","",`- Time: ${G.generatedAt}`,`- Session state: **${G.sessionState}**`,`- Provider session ID: \`${G.providerSessionId??"(empty)"}\``,`- Provider: \`${G.providerId}\` / \`${G.providerModelKey}\``,`- Permission mode: \`${G.permissionMode}\``,`- CWD (requested): \`${G.requestedCwd}\``,`- CWD (effective): \`${G.effectiveCwd}\``,`- Feature: \`${G.featureId??"(none)"}\``,"","### Spec Context Injection",`- Active on next turn: **${G.specContext.active?"yes":"no"}**`,`- Reason: ${G.specContext.reason}`,...se,"","### Detected Instruction Files",...de].join(`
|
|
68
|
+
`)}function he(G){return(G.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(se=>se.startsWith('"')&&se.endsWith('"')||se.startsWith("'")&&se.endsWith("'")?se.slice(1,-1):se)}function Y(G){const de=G.match(/^\/(?:spec-search|specsearch)\b(.*)$/i);if(!de)return null;const se=he(de[1]?.trim()??""),ve=[],Be={q:""};for(let qe=0;qe<se.length;qe++){const He=se[qe];if(He==="--mode"&&se[qe+1]){const lt=se[++qe];(lt==="keyword"||lt==="semantic"||lt==="hybrid")&&(Be.mode=lt);continue}if(He.startsWith("--mode=")){const lt=He.slice(7);(lt==="keyword"||lt==="semantic"||lt==="hybrid")&&(Be.mode=lt);continue}if(He==="--feature"&&se[qe+1]){Be.featureId=se[++qe];continue}if(He.startsWith("--feature=")){Be.featureId=He.slice(10);continue}if(He==="--file-type"&&se[qe+1]){Be.fileType=se[++qe];continue}if(He.startsWith("--file-type=")){Be.fileType=He.slice(12);continue}if(He==="--limit"&&se[qe+1]){const lt=Number.parseInt(se[++qe],10);Number.isFinite(lt)&<>0&&(Be.limit=lt);continue}if(He.startsWith("--limit=")){const lt=Number.parseInt(He.slice(8),10);Number.isFinite(lt)&<>0&&(Be.limit=lt);continue}ve.push(He)}return Be.q=ve.join(" ").trim(),Be}function Me(G,de=1400){const se=G.trim();return se.length<=de?se:`${se.slice(0,de)}
|
|
69
|
+
...`}function Ve(G,de){const se=[];if(se.push("## Spec Search Results"),se.push(""),se.push(`- Query: \`${G.q}\``),se.push(`- Mode: \`${de.mode}\``),G.featureId&&se.push(`- Feature filter: \`${G.featureId}\``),G.fileType&&se.push(`- File type filter: \`${G.fileType}\``),se.push(`- Hits: **${de.totalCount}** (${de.searchTime}ms)`),de.warning&&se.push(`- Warning: ${de.warning}`),de.results.length===0)return se.push(""),se.push("No matching indexed chunks were found."),se.join(`
|
|
70
|
+
`);se.push("");for(const[ve,Be]of de.results.entries()){const qe=Be.chunk;se.push(`### ${ve+1}. \`${qe.sourcePath}:${qe.lineStart}\``),se.push(`- Match: \`${Be.matchType}\` (score: ${Be.score.toFixed(3)})`),qe.headingHierarchy.length>0&&se.push(`- Headings: ${qe.headingHierarchy.join(" > ")}`),se.push(""),se.push(Me(qe.content)),se.push("")}return se.join(`
|
|
71
|
+
`)}async function Ne(G){const de=t.activeConversationId??await t.createConversation(),se=t.addAssistantMessage(de);if(!G.q){t.updateMessage(se.id,{content:["Usage: `/spec-search <query> [--mode keyword|semantic|hybrid] [--feature <feature-id>] [--file-type <type>] [--limit <n>]`","","Examples:","- `/spec-search FR-001`",'- `/spec-search "indexing indicator" --mode hybrid --feature 008-spec-search --limit 5`'].join(`
|
|
72
|
+
`),status:"complete"},de);return}const ve=t.activeConversation,Be={q:G.q,mode:G.mode??"hybrid",featureId:G.featureId??ve?.featureId,fileType:G.fileType,limit:String(G.limit??5)};try{const qe=await $fetch("/api/specs/search",{query:Be});t.updateMessage(se.id,{content:Ve({...G,mode:Be.mode,featureId:Be.featureId},qe),status:"complete"},de)}catch(qe){const He=qe instanceof Error?qe.message:"Failed to run spec search";t.updateMessage(se.id,{content:`Spec search failed: ${He}`,status:"error"},de)}}async function Rt(){const G=t.activeConversation,de={permissionMode:t.permissionMode};G?.hasWorktree&&G.worktreePath?de.cwd=G.worktreePath:G?.cwd&&(de.cwd=G.cwd),G?.featureId&&(de.featureId=G.featureId),G?.providerId&&(de.providerId=G.providerId),G?.providerModelKey&&(de.providerModelKey=G.providerModelKey),G?.providerSessionId&&(de.providerSessionId=G.providerSessionId);const se=await $fetch("/api/chat/context",{query:de}),ve=t.activeConversationId??await t.createConversation(),Be=t.addAssistantMessage(ve);t.updateMessage(Be.id,{content:le(se),status:"complete"},ve)}function qt(G=[]){const de=wa(t.activeConversation,!0)??{};return G.length>0?{...de,attachments:G}:Object.keys(de).length>0?de:void 0}function an(G){const de=t.addAssistantMessage(G);return t.startSession(`session-${Date.now()}`,G),t.startConversationStreaming(G),t.saveConversation(G,!0),de}function sr(G,de,se,ve){const Be=se instanceof Error?se.message:ve;t.setSessionError(Be,G),t.updateMessage(de,{status:"error"},G),t.endSession(G),t.endConversationStreaming(G)}async function Dr(){const G=u.value.trim(),de=[...x.value];if(G.length===0&&de.length===0||t.isActiveConversationStreaming||f.value||e.disabled)return;const se=!!t.activeConversationId;let ve=null,Be=null;if(G==="/reset"||G==="/reset-context"||G==="/new"||G==="/clear"){await jn();return}if(G==="/context"||G==="/ctx"){await Rt(),u.value="",Xe(),xt();return}const qe=Y(G);if(qe){await Ne(qe),u.value="",Xe(),xt();return}f.value=!0,u.value="",Xe(),xt();try{if(await t.addUserMessageWithConversation(G,de),ve=t.activeConversationId,!ve)throw new Error("Failed to create or select a conversation");se||q(ve);const He=an(ve);Be=He.id,await s(G,He.id,ve,qt(de))}catch(He){if(ve&&Be)sr(ve,Be,He,"Failed to send message");else{const lt=He instanceof Error?He.message:"Failed to send message";t.setSessionError(lt)}}finally{f.value=!1}}async function Pr(){try{l(t.activeConversationId)}catch{}}async function jn(){if(t.activeConversationId){u.value="",Xe(),xt(),f.value=!0;try{await c(t.activeConversationId);const G=t.addAssistantMessage(t.activeConversationId);t.updateMessage(G.id,{content:"✨ **Context cleared** — The AI conversation context has been reset. Starting fresh from here.",status:"complete"},t.activeConversationId);const{useToast:de}=await cs(async()=>{const{useToast:ve}=await import("./BuAdOXGq.js").then(Be=>Be.n);return{useToast:ve}},__vite__mapDeps([0,1,2]),import.meta.url);de().success("AI context has been reset. The conversation will start fresh.")}catch(G){console.error("Failed to reset context:",G);const{useToast:de}=await cs(async()=>{const{useToast:ve}=await import("./BuAdOXGq.js").then(Be=>Be.n);return{useToast:ve}},__vite__mapDeps([0,1,2]),import.meta.url);de().error("Failed to reset context. Please try again.")}finally{f.value=!1}}}async function ln(){const G=t.messages;let de=null;for(let Be=G.length-1;Be>=0;Be--)if(G[Be].role==="user"){de={content:G[Be].content,attachments:G[Be].attachments??[]};break}if(!de||!t.activeConversationId)return;const se=t.activeConversationId;t.clearError(),f.value=!0;let ve=null;try{const Be=an(se);ve=Be.id,await s(de.content,Be.id,se,qt(de.attachments))}catch(Be){if(ve)sr(se,ve,Be,"Failed to retry message");else{const qe=Be instanceof Error?Be.message:"Failed to retry message";t.setSessionError(qe,se)}}finally{f.value=!1}}function cn(G){G.key==="Enter"&&!G.shiftKey&&(G.preventDefault(),Dr())}function $n(){const G=h.value;if(G){if(!u.value.trim()){G.style.height="";return}G.style.height="auto",G.style.height=Math.min(G.scrollHeight,200)+"px"}}function qn(){if(b!==null)return;b=(typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame.bind(window):de=>setTimeout(()=>de(Date.now()),16))(()=>{b=null,$n()})}function xt(){const G=h.value;G&&(G.style.height="")}function Lr(){nr(()=>{h.value?.focus()})}return We(u,qn),We(()=>t.isActiveConversationStreaming,(G,de)=>{de&&!G&&Lr()}),We(()=>t.activeConversationId,()=>{t.activeConversationId&&(w.value=null),Xe(),Lr()}),(G,de)=>(v(),y("div",fB,[d("div",pB,[d("div",mB,[d("button",{disabled:r.disabled||m(t).isActiveConversationStreaming||m(k)||m(A)||m(P)||m(z).length===0,class:"flex items-center justify-between gap-1.5 w-full px-2 py-1 rounded border border-retro-border/50 hover:border-retro-border text-xs font-mono text-retro-muted transition-colors disabled:opacity-60 disabled:cursor-not-allowed",onClick:de[0]||(de[0]=se=>O.value=!m(O))},[d("span",OB,_(m(Z)),1),te(m(Mp),{class:"w-3 h-3 flex-shrink-0"})],8,gB),m(O)?(v(),y("div",vB,[m(z).length===0?(v(),y("div",bB," Loading models... ")):K("",!0),(v(!0),y($e,null,Fe(m(ae),se=>(v(),y("div",{key:se.providerId,class:"py-0.5"},[d("div",xB,_(se.providerName),1),(v(!0),y($e,null,Fe(se.options,ve=>(v(),y("button",{key:ve.key,disabled:!ve.compatible,class:Ze(["flex items-center gap-2 w-full px-3 py-1.5 text-xs font-mono text-left hover:bg-retro-panel transition-colors disabled:opacity-50 disabled:cursor-not-allowed",m(W)===ve.key?"bg-retro-panel text-retro-text":"text-retro-muted"]),onClick:Be=>N(ve)},[d("span",kB,_(ve.modelLabel)+_(ve.compatible?"":" (unsupported for current permission mode)"),1)],10,yB))),128))]))),128))])):K("",!0)]),d("div",wB,[d("button",{class:Ze(["flex items-center gap-1.5 px-2 py-1 rounded border border-retro-border/50 hover:border-retro-border text-xs font-mono transition-colors",I[m(t).permissionMode]]),onClick:de[1]||(de[1]=se=>g.value=!m(g))},[(v(),be(Xs(X[m(t).permissionMode]),{class:"w-4 h-4"})),d("span",null,_(m(Qs)[m(t).permissionMode]),1),te(m(Mp),{class:"w-3 h-3"})],2),m(g)?(v(),y("div",SB,[(v(),y($e,null,Fe(["plan","ask","auto","bypass"],se=>d("button",{key:se,class:Ze(["flex items-center gap-2 w-full px-3 py-1.5 text-xs font-mono text-left hover:bg-retro-panel transition-colors",[I[se],m(t).permissionMode===se?"bg-retro-panel":""]]),onClick:ve=>xe(se)},[(v(),be(Xs(X[se]),{class:"w-4 h-4"})),d("span",null,_(m(Qs)[se]),1)],10,$B)),64))])):K("",!0)]),d("span",CB,_(m(t).permissionMode==="plan"?"Plan only":m(t).permissionMode==="ask"?"Ask before actions":m(t).permissionMode==="auto"?"Auto approve":"All permissions"),1)]),m(k)?(v(),y("div",QB,[d("div",PB,[d("div",TB,[de[4]||(de[4]=d("div",{class:"text-xs font-mono text-retro-yellow font-bold mb-1"}," Permission Required ",-1)),d("div",MB,[d("span",AB,_(m(t).pendingPermission?.tool),1),m(t).pendingPermission?.filePath?(v(),y("span",_B," - "+_(m(t).pendingPermission.filePath),1)):m(t).pendingPermission?.command?(v(),y("span",RB," - "+_(m(t).pendingPermission.command),1)):K("",!0)])]),d("div",{class:"flex gap-2 flex-shrink-0"},[d("button",{class:"px-3 py-1.5 text-xs font-mono rounded bg-retro-green/20 text-retro-green border border-retro-green/50 hover:bg-retro-green/30 transition-colors",onClick:R}," Allow "),d("button",{class:"px-3 py-1.5 text-xs font-mono rounded bg-retro-red/20 text-retro-red border border-retro-red/50 hover:bg-retro-red/30 transition-colors",onClick:H}," Deny ")])])])):K("",!0),m(A)?(v(),y("div",BB,[d("div",{class:"flex items-center justify-between gap-3"},[de[5]||(de[5]=d("div",{class:"flex-1 min-w-0"},[d("div",{class:"text-xs font-mono text-retro-cyan font-bold mb-1"}," Plan Ready for Review "),d("div",{class:"text-xs font-mono text-retro-muted"}," Approve to switch to Auto mode and start implementation. ")],-1)),d("div",{class:"flex gap-2 flex-shrink-0"},[d("button",{class:"px-3 py-1.5 text-xs font-mono rounded bg-retro-green/20 text-retro-green border border-retro-green/50 hover:bg-retro-green/30 transition-colors",onClick:oe}," Approve & Implement "),d("button",{class:"px-3 py-1.5 text-xs font-mono rounded bg-retro-red/20 text-retro-red border border-retro-red/50 hover:bg-retro-red/30 transition-colors",onClick:ye}," Reject ")])])])):K("",!0),m(x).length>0?(v(),y("div",ZB,[(v(!0),y($e,null,Fe(m(x),se=>(v(),y("div",{key:se.id,class:"relative w-24 rounded border border-retro-border/70 bg-retro-black/80 p-1"},[d("img",{src:se.dataUrl,alt:se.name,class:"h-16 w-full rounded object-cover"},null,8,EB),d("div",DB,_(se.name),1),d("div",LB,_(Ge(se.size)),1),d("button",{class:"absolute -right-2 -top-2 rounded-full border border-retro-border bg-retro-panel p-0.5 text-retro-red hover:bg-retro-red/20",type:"button",onClick:ve=>Re(se.id)},[te(m(At),{class:"h-3 w-3"})],8,XB)]))),128))])):K("",!0),d("div",IB,[d("input",{ref_key:"fileInputRef",ref:p,type:"file",accept:"image/*",multiple:"",class:"hidden",onChange:pe},null,544),d("button",{class:"flex-shrink-0 h-10 w-10 inline-flex items-center justify-center p-0 rounded bg-retro-panel/70 text-retro-muted hover:text-retro-cyan hover:bg-retro-panel disabled:opacity-50 disabled:cursor-not-allowed transition-colors",type:"button",title:"Attach images",disabled:r.disabled||m(t).isActiveConversationStreaming||m(k)||m(A),onClick:de[2]||(de[2]=se=>m(p)?.click())},[te(m(ov),{class:"w-5 h-5"})],8,VB),d("div",zB,[Je(d("textarea",{ref_key:"inputRef",ref:h,"onUpdate:modelValue":de[3]||(de[3]=se=>nt(u)?u.value=se:null),disabled:r.disabled||m(t).isActiveConversationStreaming||m(k)||m(A),placeholder:r.disabled?"This conversation is finalized (read-only)":"Type a message...",rows:"1",class:"w-full h-full min-h-[40px] px-3 py-2 bg-retro-black border border-retro-border rounded text-sm font-mono text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan disabled:opacity-50 disabled:cursor-not-allowed resize-none overflow-hidden",onKeydown:cn},null,40,NB),[[Lt,m(u)]])]),m(Qe)?(v(),y("button",{key:0,class:"flex-shrink-0 h-10 w-10 inline-flex items-center justify-center p-0 rounded bg-retro-yellow/20 text-retro-yellow hover:bg-retro-yellow/30 transition-colors",title:"Retry last message",onClick:ln},[te(m(uB),{class:"w-5 h-5"})])):K("",!0),!m(S)&&!m(k)?(v(),y("button",{key:1,disabled:!m(fe),class:"flex-shrink-0 h-10 w-10 inline-flex items-center justify-center p-0 rounded bg-retro-cyan/20 text-retro-cyan hover:bg-retro-cyan/30 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",onClick:Dr},[te(m(hB),{class:"w-5 h-5"})],8,WB)):m(S)?(v(),y("button",{key:2,class:"flex-shrink-0 h-10 w-10 inline-flex items-center justify-center p-0 rounded bg-retro-red/20 text-retro-red hover:bg-retro-red/30 transition-colors",onClick:Pr},[te(m(dB),{class:"w-5 h-5"})])):K("",!0)]),de[6]||(de[6]=d("div",{class:"mt-1 text-xs font-mono text-retro-muted"}," Press Enter to send, Shift+Enter for new line. Slash commands: `/context`, `/reset`, `/new`, `/clear`, `/spec-search`. You can attach up to 4 images (5 MB each). ",-1))]))}}),YB={class:"h-64 border-t border-retro-border bg-retro-dark/50 flex flex-col"},FB={class:"h-9 flex items-center justify-between px-3 border-b border-retro-border/40"},UB={key:0,class:"flex-1 flex items-center justify-center text-xs font-mono text-retro-muted"},GB={key:1,class:"flex-1 overflow-y-auto scrollbar-custom"},HB={class:"flex items-center gap-2 text-[10px] font-mono"},KB={class:"text-retro-muted"},JB={class:"text-retro-muted"},e7={class:"text-retro-green truncate"},t7={class:"mt-1 text-[11px] font-mono text-retro-text whitespace-pre-wrap break-words"},r7=ze({__name:"ChatDebugPanel",setup(r){const e=gr(),{debugEvents:t}=p1(e);function n(i){return new Date(i).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}function s(i){return i==="in"?"text-retro-cyan":i==="out"?"text-retro-yellow":"text-retro-muted"}return(i,o)=>(v(),y("div",YB,[d("div",FB,[o[1]||(o[1]=d("div",{class:"text-[11px] font-mono text-retro-text"}," Debug Stream (CLI/Provider) ",-1)),d("button",{class:"p-1 rounded hover:bg-retro-panel transition-colors",title:"Clear debug events",onClick:o[0]||(o[0]=a=>m(e).clearDebugEvents())},[te(m(bn),{class:"w-3.5 h-3.5 text-retro-muted"})])]),m(t).length===0?(v(),y("div",UB," No debug events yet ")):(v(),y("div",GB,[(v(!0),y($e,null,Fe(m(t),a=>(v(),y("div",{key:a.id,class:"px-3 py-2 border-b border-retro-border/20"},[d("div",HB,[d("span",KB,_(n(a.timestamp)),1),d("span",{class:Ze(s(a.direction))},_(a.direction.toUpperCase()),3),d("span",JB,_(a.channel),1),d("span",e7,_(a.eventType),1)]),d("pre",t7,_(a.payload),1)]))),128))]))]))}}),n7={class:"px-4 py-3 border-b border-retro-border bg-retro-dark/80 space-y-3"},s7={class:"flex items-center justify-between"},i7={class:"space-y-1 text-xs font-mono"},o7={class:"flex items-center gap-2"},a7={class:"relative"},l7=["disabled"],c7=["value"],u7=["value"],h7={class:"flex items-center gap-2"},d7={class:"text-retro-text"},f7={class:"relative"},p7=["disabled"],m7=["disabled"],g7={class:"flex items-center gap-2"},O7=["disabled"],v7=["disabled"],b7=ze({__name:"FinalizeConfirm",props:{baseBranch:{},worktreeBranch:{},worktreePath:{}},emits:["confirm","cancel"],setup(r,{emit:e}){const t=r,n=e,s=M(""),i=M(null),o=M(!1),a=M(!1),l=M(t.baseBranch),c=M([]),u=M(!1),h=yu(),p=M(null);async function f(){a.value=!0;try{const O=await $fetch("/api/chat/generate-commit-message",{method:"POST",body:{conversationId:t.worktreePath.split("/").pop()?.replace("sc-","")||"",worktreePath:t.worktreePath}});O.success&&O.message&&(s.value=O.message)}catch{}finally{a.value=!1}}Ot(async()=>{const O=(async()=>{try{const b=t.worktreePath.split("/").pop()||"",w=await $fetch(`/api/commits/${encodeURIComponent(b)}`,{params:{workingDirectory:t.worktreePath}});i.value=w.aheadCount}catch{i.value=null}})(),x=(async()=>{u.value=!0;try{await h.initialize();const b=await $fetch("/api/git/branches",{query:{workingDirectory:h.workingDirectory}});c.value=b.branches.filter(w=>!w.isRemote&&!w.name.startsWith("sc/")).map(w=>w.name),c.value.length>0&&!c.value.includes(l.value)&&(l.value=c.value.includes("main")?"main":c.value.includes("master")?"master":c.value[0])}catch{c.value=[]}finally{u.value=!1}})();await Promise.all([O,x]),nr(()=>p.value?.focus())});function g(){s.value.trim()&&(o.value=!0,n("confirm",s.value.trim(),l.value))}return(O,x)=>(v(),y("div",n7,[d("div",s7,[x[4]||(x[4]=d("span",{class:"text-xs font-mono text-retro-text font-semibold uppercase tracking-wide"}," Finalize ",-1)),d("button",{type:"button",class:"p-0.5 text-retro-muted hover:text-retro-text transition-colors",title:"Cancel",onClick:x[0]||(x[0]=b=>n("cancel"))},[te(m(At),{class:"w-4 h-4"})])]),d("div",i7,[d("div",o7,[x[5]||(x[5]=d("span",{class:"text-retro-muted"},"target:",-1)),d("div",a7,[Je(d("select",{"onUpdate:modelValue":x[1]||(x[1]=b=>l.value=b),disabled:o.value||u.value,class:"appearance-none bg-retro-black border border-retro-border rounded px-2 py-0.5 pr-6 text-xs font-mono text-retro-cyan focus:outline-none focus:border-retro-cyan cursor-pointer disabled:opacity-40"},[u.value?(v(),y("option",{key:0,value:r.baseBranch},_(r.baseBranch),9,c7)):K("",!0),(v(!0),y($e,null,Fe(c.value,b=>(v(),y("option",{key:b,value:b},_(b),9,u7))),128))],8,l7),[[Os,l.value]]),te(m(Su),{class:"absolute right-1 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-retro-muted pointer-events-none"})])]),d("div",h7,[x[6]||(x[6]=d("span",{class:"text-retro-muted"},"commits:",-1)),d("span",d7,_(i.value!==null?i.value:"..."),1)])]),d("div",f7,[Je(d("textarea",{ref_key:"textareaRef",ref:p,"onUpdate:modelValue":x[2]||(x[2]=b=>s.value=b),placeholder:"Squash commit message...",rows:"2",class:"w-full px-2 py-1.5 pr-8 text-xs font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan resize-none",disabled:o.value||a.value},null,8,p7),[[Lt,s.value]]),d("button",{type:"button",disabled:o.value||a.value,class:"absolute right-1.5 top-1.5 p-0.5 rounded text-retro-muted hover:text-retro-cyan transition-colors disabled:opacity-40",title:"Generate commit message",onClick:f},[te(m($a),{class:Ze(["w-4 h-4",{"animate-spin":a.value}])},null,8,["class"])],8,m7)]),d("div",g7,[d("button",{type:"button",disabled:!s.value.trim()||o.value,class:"flex items-center gap-1 px-3 py-1 text-xs font-mono rounded border transition-colors bg-retro-green/10 border-retro-green/50 text-retro-green hover:bg-retro-green/20 disabled:opacity-40 disabled:cursor-not-allowed",onClick:g},[te(m(wu),{class:"w-3.5 h-3.5"}),Ie(" "+_(o.value?"Finalizing...":"Confirm"),1)],8,O7),d("button",{type:"button",disabled:o.value,class:"px-3 py-1 text-xs font-mono rounded border border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text/30 transition-colors disabled:opacity-40",onClick:x[3]||(x[3]=b=>n("cancel"))}," Cancel ",8,v7)])]))}}),x7={class:"px-4 py-3 border-b border-retro-border bg-retro-dark/80 space-y-3"},y7={class:"flex items-center justify-between"},k7={class:"space-y-1 text-xs font-mono"},w7={class:"flex items-center gap-2"},S7={class:"text-retro-cyan"},$7={class:"flex items-center gap-2"},C7={class:"relative"},Q7=["disabled"],P7=["value"],T7=["value"],M7={class:"flex items-center gap-2"},A7={class:"text-retro-text"},_7={class:"flex items-center gap-2"},R7=["disabled"],B7=["disabled"],Z7=ze({__name:"RebaseConfirm",props:{baseBranch:{},worktreeBranch:{},worktreePath:{}},emits:["confirm","cancel"],setup(r,{emit:e}){const t=r,n=e,s=M(null),i=M(!1),o=M(t.baseBranch),a=M([]),l=M(!1),c=yu();async function u(p){try{const f=await $fetch("/api/chat/compare",{params:{worktreePath:t.worktreePath,baseBranch:p}});s.value=f.ahead}catch{s.value=null}}Ot(async()=>{const p=u(o.value),f=(async()=>{l.value=!0;try{await c.initialize();const g=await $fetch("/api/git/branches",{query:{workingDirectory:c.workingDirectory}});a.value=g.branches.filter(O=>!O.isRemote&&!O.name.startsWith("sc/")).map(O=>O.name),a.value.length>0&&!a.value.includes(o.value)&&(o.value=a.value.includes("main")?"main":a.value.includes("master")?"master":a.value[0])}catch{a.value=[]}finally{l.value=!1}})();await Promise.all([p,f])}),We(o,p=>{u(p)});function h(){i.value=!0,n("confirm",o.value)}return(p,f)=>(v(),y("div",x7,[d("div",y7,[f[3]||(f[3]=d("span",{class:"text-xs font-mono text-retro-text font-semibold uppercase tracking-wide"}," Rebase Worktree ",-1)),d("button",{type:"button",class:"p-0.5 text-retro-muted hover:text-retro-text transition-colors",title:"Cancel",onClick:f[0]||(f[0]=g=>n("cancel"))},[te(m(At),{class:"w-4 h-4"})])]),d("div",k7,[d("div",w7,[f[4]||(f[4]=d("span",{class:"text-retro-muted"},"worktree:",-1)),d("span",S7,_(r.worktreeBranch),1)]),d("div",$7,[f[5]||(f[5]=d("span",{class:"text-retro-muted"},"target:",-1)),d("div",C7,[Je(d("select",{"onUpdate:modelValue":f[1]||(f[1]=g=>o.value=g),disabled:i.value||l.value,class:"appearance-none bg-retro-black border border-retro-border rounded px-2 py-0.5 pr-6 text-xs font-mono text-retro-cyan focus:outline-none focus:border-retro-cyan cursor-pointer disabled:opacity-40"},[l.value?(v(),y("option",{key:0,value:r.baseBranch},_(r.baseBranch),9,P7)):K("",!0),(v(!0),y($e,null,Fe(a.value,g=>(v(),y("option",{key:g,value:g},_(g),9,T7))),128))],8,Q7),[[Os,o.value]]),te(m(Su),{class:"absolute right-1 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-retro-muted pointer-events-none"})])]),d("div",M7,[f[6]||(f[6]=d("span",{class:"text-retro-muted"},"commits ahead:",-1)),d("span",A7,_(s.value!==null?s.value:"..."),1)])]),d("div",_7,[d("button",{type:"button",disabled:i.value,class:"flex items-center gap-1 px-3 py-1 text-xs font-mono rounded border transition-colors bg-retro-cyan/10 border-retro-cyan/50 text-retro-cyan hover:bg-retro-cyan/20 disabled:opacity-40 disabled:cursor-not-allowed",onClick:h},[te(m(wu),{class:"w-3.5 h-3.5"}),Ie(" "+_(i.value?"Rebasing...":"Confirm"),1)],8,R7),d("button",{type:"button",disabled:i.value,class:"px-3 py-1 text-xs font-mono rounded border border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text/30 transition-colors disabled:opacity-40",onClick:f[2]||(f[2]=g=>n("cancel"))}," Cancel ",8,B7)])]))}}),E7={class:"flex-1 flex flex-col overflow-hidden"},D7={class:"flex-shrink-0 px-4 py-2 border-b border-retro-border flex items-center justify-between bg-retro-dark"},L7={class:"text-xs font-mono text-retro-text truncate"},X7={class:"flex items-center gap-2 flex-shrink-0"},I7={key:0,class:"text-xs font-mono text-retro-green"},V7={key:1,class:"text-[11px] font-mono text-retro-muted"},z7={key:0,class:"flex items-center justify-center h-full text-retro-muted text-xs font-mono"},N7=["innerHTML"],W7={key:0,class:"flex-shrink-0 px-4 py-2 border-t border-retro-border bg-retro-yellow/10 text-retro-yellow text-xs font-mono"},j7=ze({__name:"ConflictFileEditor",props:{file:{},resolved:{type:Boolean},isAiResolving:{type:Boolean},strategy:{}},emits:["resolve","aiResolve","retry"],setup(r,{emit:e}){const t=r;M(t.file.content);const n=M(""),s=M(!1);We(()=>t.file.path,()=>{a()}),We(()=>t.file.content,()=>{a()});const i=ee(()=>{const c=/^<{7}\s/gm;return(t.file.content.match(c)||[]).length});function o(c){const u=c.split(".").pop()?.toLowerCase()||"";return{ts:"typescript",tsx:"tsx",js:"javascript",jsx:"jsx",vue:"vue",html:"html",css:"css",scss:"scss",less:"less",json:"json",yaml:"yaml",yml:"yaml",md:"markdown",py:"python",rb:"ruby",go:"go",rs:"rust",java:"java",kt:"kotlin",swift:"swift",sh:"bash",zsh:"bash",sql:"sql",graphql:"graphql",xml:"xml",svg:"xml",toml:"toml",ini:"ini",dockerfile:"dockerfile"}[u]||"text"}async function a(){s.value=!0;try{const{codeToHtml:c}=await cs(async()=>{const{codeToHtml:b}=await import("./C3xB8Cgs.js");return{codeToHtml:b}},__vite__mapDeps([3,1,2]),import.meta.url),u=o(t.file.path),p=t.file.content.split(`
|
|
73
|
+
`);let f="",g=!1,O=!1,x=0;for(const b of p){x++;const w=/^<{7}\s/.test(b),Q=/^={7}$/.test(b),P=/^>{7}\s/.test(b);if(w){g=!0,O=!1,f+=`<div class="conflict-line conflict-marker-line" data-line="${x}"><span class="line-number">${x}</span><span class="line-content conflict-marker">${l(b)}</span></div>
|
|
74
|
+
`;continue}if(Q&&g){g=!1,O=!0,f+=`<div class="conflict-line conflict-marker-line" data-line="${x}"><span class="line-number">${x}</span><span class="line-content conflict-marker">${l(b)}</span></div>
|
|
75
|
+
`;continue}if(P){O=!1,f+=`<div class="conflict-line conflict-marker-line" data-line="${x}"><span class="line-number">${x}</span><span class="line-content conflict-marker">${l(b)}</span></div>
|
|
76
|
+
`;continue}let E=l(b);try{const ae=(await c(b||" ",{lang:u,theme:"vitesse-dark"})).match(/<code[^>]*><span class="line">(.*?)<\/span><\/code>/s);ae&&(E=ae[1])}catch{}let j="";g?j="conflict-ours":O&&(j="conflict-theirs"),f+=`<div class="conflict-line ${j}" data-line="${x}"><span class="line-number">${x}</span><span class="line-content">${E}</span></div>
|
|
77
|
+
`}n.value=f}catch{const c=t.file.content.split(`
|
|
78
|
+
`);n.value=c.map((u,h)=>{const p=h+1;return`<div class="conflict-line" data-line="${p}"><span class="line-number">${p}</span><span class="line-content">${l(u)}</span></div>`}).join(`
|
|
79
|
+
`)}finally{s.value=!1}}function l(c){return c.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}return Ot(()=>{a()}),(c,u)=>(v(),y("div",E7,[d("div",D7,[d("span",L7,_(r.file.path),1),d("div",X7,[r.resolved?(v(),y("span",I7," Resolved ")):i.value>0?(v(),y("span",V7,_(i.value)+" conflict "+_(i.value===1?"block":"blocks"),1)):K("",!0)])]),d("div",{class:Ze(["flex-1 overflow-auto bg-retro-black conflict-viewer",{"opacity-60":r.resolved}])},[s.value?(v(),y("div",z7," Highlighting... ")):(v(),y("div",{key:1,class:"conflict-code",innerHTML:n.value},null,8,N7))],2),i.value>0&&!r.resolved?(v(),y("div",W7," File contains "+_(i.value)+" conflict "+_(i.value===1?"block":"blocks")+". Use AI resolution to resolve. ",1)):K("",!0)]))}}),q7={class:"flex flex-col h-full border-l border-retro-border bg-retro-dark"},Y7={class:"flex-shrink-0 px-3 py-2 border-b border-retro-border"},F7={class:"flex items-center gap-2"},U7={class:"text-[10px] font-mono text-retro-muted mt-1"},G7={key:0,class:"text-xs font-mono text-retro-muted text-center py-8"},H7={key:0,class:"bg-retro-panel/50 rounded px-2 py-1.5 border border-retro-border"},K7={class:"mt-0.5"},J7={class:"inline-block w-3 text-center opacity-70"},eZ={key:1,class:"flex items-center gap-2 text-xs font-mono text-retro-cyan"},tZ={class:"flex-shrink-0 border-t border-retro-border p-3 space-y-2"},rZ=["disabled"],nZ=["disabled"],sZ={key:0},iZ={key:1},oZ=ze({__name:"ConflictChatPanel",setup(r){const e=gr(),t=Oo(),n=M(""),s=M(null),i=ee(()=>e.conflictState?.chatMessages??[]),o=ee(()=>e.conflictState?.lifecycleState==="resolving"),a=ee(()=>{if(!e.conflictState)return!1;const g=e.conflictState.files.length,O=e.conflictState.resolvedFiles.size;return g>0&&O>=g}),l=ee(()=>e.conflictState?e.conflictState.files.length-e.conflictState.resolvedFiles.size:0),c=ee(()=>`${t.providerId}/${t.providerModelKey}`);We(()=>i.value.length,async()=>{await nr(),s.value&&(s.value.scrollTop=s.value.scrollHeight)});function u(){!e.conflictState||o.value||(e.conflictState.userGuidance=n.value.trim(),e.aiResolveAllConflicts())}function h(){e.cancelConflictResolution()}function p(g){switch(g.type){case"success":return"text-retro-green";case"error":return"text-retro-red";case"progress":return"text-retro-cyan";case"summary":return"text-retro-yellow";default:return"text-retro-muted"}}function f(g){switch(g.type){case"success":return"✓";case"error":return"✗";case"progress":return"▶";case"summary":return"─";default:return"●"}}return(g,O)=>(v(),y("div",q7,[d("div",Y7,[d("div",F7,[te(m($a),{class:"w-4 h-4 text-retro-orange"}),O[1]||(O[1]=d("span",{class:"text-xs font-mono text-retro-text font-semibold"},"AI Conflict Resolution",-1))]),d("div",U7," Model: "+_(c.value),1)]),d("div",{ref_key:"messagesContainer",ref:s,class:"flex-1 overflow-y-auto px-3 py-2 space-y-2"},[i.value.length===0?(v(),y("div",G7," Enter optional guidance below and click resolve to start AI conflict resolution. ")):K("",!0),(v(!0),y($e,null,Fe(i.value,x=>(v(),y("div",{key:x.id,class:Ze(["text-xs font-mono leading-relaxed",x.role==="user"?"text-retro-text":p(x)])},[x.role==="user"?(v(),y("div",H7,[O[2]||(O[2]=d("span",{class:"text-retro-muted text-[10px]"},"Guidance:",-1)),d("div",K7,_(x.content),1)])):(v(),y($e,{key:1},[d("span",J7,_(f(x)),1),Ie(" "+_(x.content),1)],64))],2))),128)),o.value?(v(),y("div",eZ,[...O[3]||(O[3]=[d("span",{class:"animate-pulse"},"●",-1),Ie(" Processing... ",-1)])])):K("",!0)],512),d("div",tZ,[Je(d("textarea",{"onUpdate:modelValue":O[0]||(O[0]=x=>n.value=x),disabled:o.value,placeholder:'Optional: Add guidance for AI resolution (e.g., "prefer feature branch API changes", "keep both import sets")...',class:"w-full h-16 px-2 py-1.5 text-xs font-mono bg-retro-black text-retro-text border border-retro-border rounded resize-none focus:outline-none focus:border-retro-cyan/50 placeholder:text-retro-muted/50 disabled:opacity-50",spellcheck:"false"},null,8,rZ),[[Lt,n.value]]),o.value?(v(),y("button",{key:1,type:"button",class:"w-full flex items-center justify-center gap-2 px-3 py-2 text-xs font-mono rounded border transition-colors bg-retro-red/10 border-retro-red/50 text-retro-red hover:bg-retro-red/20",onClick:h},[te(m(lv),{class:"w-4 h-4"}),O[4]||(O[4]=Ie(" Stop Resolution ",-1))])):(v(),y("button",{key:0,type:"button",disabled:a.value||l.value===0,class:"w-full flex items-center justify-center gap-2 px-3 py-2 text-xs font-mono rounded border transition-colors bg-retro-orange/10 border-retro-orange/50 text-retro-orange hover:bg-retro-orange/20 disabled:opacity-40 disabled:cursor-not-allowed",onClick:u},[te(m($a),{class:"w-4 h-4"}),a.value?(v(),y("span",sZ,"All Conflicts Resolved")):(v(),y("span",iZ,"Resolve Conflicts Automatically ("+_(l.value)+")",1))],8,nZ))])]))}}),aZ={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60"},lZ={class:"w-full max-w-7xl mx-4 my-8 h-[85vh] bg-retro-dark border border-retro-border rounded-lg shadow-xl flex flex-col overflow-hidden"},cZ={class:"flex-shrink-0 px-4 py-3 border-b border-retro-border flex items-center justify-between"},uZ={class:"flex items-center gap-3"},hZ={class:"text-xs font-mono text-retro-muted"},dZ={class:"flex items-center gap-2"},fZ=["disabled"],pZ=["disabled"],mZ={key:0,class:"flex-1 flex items-center justify-center text-retro-muted text-sm font-mono"},gZ={key:1,class:"flex-1 flex items-center justify-center text-retro-red text-sm font-mono"},OZ={key:2,class:"flex-1 flex overflow-hidden"},vZ={class:"w-56 flex-shrink-0 border-r border-retro-border overflow-y-auto bg-retro-dark"},bZ={class:"py-1"},xZ=["onClick"],yZ={class:"flex-1 flex flex-col overflow-hidden min-w-0"},kZ={key:1,class:"flex-1 flex items-center justify-center text-retro-muted text-sm font-mono"},wZ={class:"w-80 flex-shrink-0"},SZ=ze({__name:"ConflictResolutionModal",emits:["close"],setup(r,{emit:e}){const t=e,n=gr(),s=M(null),i=M(!1),o=M(!1),a=ee(()=>n.conflictState?.files??[]),l=ee(()=>n.conflictState?.resolvedFiles??new Set),c=ee(()=>a.value.length),u=ee(()=>l.value.size),h=ee(()=>c.value>0&&u.value>=c.value),p=ee(()=>s.value?a.value.find(b=>b.path===s.value)??null:null);function f(b){return l.value.has(b)}function g(b){s.value=b}async function O(){i.value=!0;const b=await n.continueRebase();i.value=!1,b.success&&t("close")}async function x(){o.value=!0,await n.cancelConflictResolution(),o.value=!1,t("close")}return(b,w)=>(v(),be(Sr,{to:"body"},[te(vn,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ht(()=>[m(n).conflictState?(v(),y("div",aZ,[d("div",lZ,[d("div",cZ,[d("div",uZ,[te(m(Zn),{class:"w-5 h-5 text-retro-yellow"}),w[0]||(w[0]=d("h3",{class:"text-sm font-mono text-retro-text font-semibold"},"Resolve Conflicts",-1)),d("span",hZ,_(u.value)+"/"+_(c.value)+" resolved ",1)]),d("div",dZ,[d("button",{type:"button",disabled:!h.value||i.value||o.value,class:"flex items-center gap-1 px-3 py-1.5 text-xs font-mono rounded border transition-colors bg-retro-green/10 border-retro-green/50 text-retro-green hover:bg-retro-green/20 disabled:opacity-40 disabled:cursor-not-allowed",onClick:O},_(i.value?"Continuing...":"Continue Rebase"),9,fZ),d("button",{type:"button",disabled:i.value||o.value,class:"px-3 py-1.5 text-xs font-mono rounded border border-retro-red/50 text-retro-red hover:bg-retro-red/10 transition-colors disabled:opacity-40",onClick:x},_(o.value?"Aborting...":"Abort"),9,pZ)])]),m(n).conflictState?.loading?(v(),y("div",mZ," Loading conflict files... ")):m(n).conflictState?.error?(v(),y("div",gZ,_(m(n).conflictState.error),1)):(v(),y("div",OZ,[d("div",vZ,[d("div",bZ,[(v(!0),y($e,null,Fe(a.value,Q=>(v(),y("button",{key:Q.path,type:"button",class:Ze(["w-full text-left px-3 py-2 text-xs font-mono flex items-center gap-2 transition-colors hover:bg-retro-panel",{"bg-retro-panel":s.value===Q.path}]),onClick:P=>g(Q.path)},[f(Q.path)?(v(),be(m(ku),{key:0,class:"w-3.5 h-3.5 text-retro-green flex-shrink-0"})):(v(),be(m(mo),{key:1,class:"w-3.5 h-3.5 text-retro-yellow flex-shrink-0"})),d("span",{class:Ze(["truncate",f(Q.path)?"text-retro-green":"text-retro-yellow"])},_(Q.path),3)],10,xZ))),128))])]),d("div",yZ,[p.value?(v(),be(j7,{key:0,file:p.value,resolved:f(p.value.path)},null,8,["file","resolved"])):(v(),y("div",kZ," Select a file to view "))]),d("div",wZ,[te(oZ)])]))])])):K("",!0)]),_:1})]))}}),$Z={key:0,class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},CZ={class:"flex items-center justify-between p-4 border-b border-retro-border"},QZ={class:"flex items-center gap-2"},PZ={class:"p-4"},TZ={class:"mt-2 text-sm text-retro-text font-mono truncate"},MZ={class:"flex justify-end gap-3 p-4 border-t border-retro-border"},AZ=ze({__name:"DeleteConfirmModal",props:{show:{type:Boolean},title:{}},emits:["confirm","cancel"],setup(r,{emit:e}){const t=e;function n(s){s.target===s.currentTarget&&t("cancel")}return(s,i)=>(v(),be(Sr,{to:"body"},[te(vn,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ht(()=>[r.show?(v(),y("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:n},[te(vn,{"enter-active-class":"transition-all duration-200","enter-from-class":"opacity-0 scale-95","enter-to-class":"opacity-100 scale-100","leave-active-class":"transition-all duration-200","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-95"},{default:ht(()=>[r.show?(v(),y("div",$Z,[d("div",CZ,[d("div",QZ,[te(m(Zn),{class:"w-5 h-5 text-retro-red"}),i[3]||(i[3]=d("h3",{class:"text-lg font-mono text-retro-text"},"Delete Conversation",-1))]),d("button",{onClick:i[0]||(i[0]=o=>t("cancel")),class:"p-1 hover:bg-retro-panel rounded transition-colors"},[te(m(At),{class:"w-5 h-5 text-retro-muted"})])]),d("div",PZ,[i[4]||(i[4]=d("p",{class:"text-sm text-retro-muted font-mono"}," Are you sure you want to delete this conversation? ",-1)),d("p",TZ,' "'+_(r.title)+'" ',1),i[5]||(i[5]=d("p",{class:"mt-3 text-xs text-retro-muted"}," This action cannot be undone. ",-1))]),d("div",MZ,[d("button",{onClick:i[1]||(i[1]=o=>t("cancel")),class:"px-4 py-2 text-sm font-mono text-retro-muted border border-retro-border rounded hover:bg-retro-panel transition-colors"}," Cancel "),d("button",{onClick:i[2]||(i[2]=o=>t("confirm")),class:"px-4 py-2 text-sm font-mono text-white bg-retro-red/80 border border-retro-red rounded hover:bg-retro-red transition-colors"}," Delete ")])])):K("",!0)]),_:1})])):K("",!0)]),_:1})]))}}),_Z={class:"h-full flex flex-col bg-retro-black"},RZ={class:"flex-shrink-0 h-12 flex items-center justify-between px-4 border-b border-retro-border bg-retro-dark"},BZ={class:"flex items-center gap-2 min-w-0"},ZZ={class:"text-xs font-mono text-retro-text truncate"},EZ={class:"flex items-center gap-1"},DZ=["disabled","title"],LZ=["title"],XZ=["title"],IZ=["disabled"],VZ={key:4,class:"flex-shrink-0 px-4 py-2 border-b border-retro-border bg-retro-green/10 text-retro-green text-xs font-mono text-center"},zZ={class:"flex-1 min-h-0 flex flex-col"},NZ=ze({__name:"ChatPanel",setup(r){const e=gr(),t=s1(),{disconnectConversation:n}=Sl();Ot(async()=>{try{const X=await $fetch("/api/cwd");e.setCwd(X.cwd)}catch{}});const s=ee(()=>e.activeConversation?.title||"New Chat"),i=M(!1),o=ee(()=>t.isChatFullscreen),a=M(!1);We(a,X=>{e.setDebugStreamEnabled(X)}),Qt(()=>{e.setDebugStreamEnabled(!1)});function l(){t.toggleChatFullscreen()}async function c(){i.value=!1;const X=e.activeConversationId;X&&(n(X),await e.deleteConversation(X)),e.clearMessages()}function u(){e.hasMessages&&(i.value=!0)}function h(){i.value=!1}const p=M(!1),f=M(null),g=ee(()=>e.activeConversation?.finalized===!0),O=ee(()=>g.value),x=M(null),b=M(!1);async function w(){const X=e.activeConversation;if(!X?.worktreePath||!X?.baseBranch){x.value=null;return}b.value=!0;try{const I=await $fetch("/api/chat/compare",{params:{worktreePath:X.worktreePath,baseBranch:X.baseBranch}});x.value=I}catch{x.value=null}finally{b.value=!1}}We(()=>[e.activeConversationId,e.activeConversation?.worktreePath,e.activeConversation?.baseBranch,e.activeConversation?.lastCommitTime],()=>{w()},{immediate:!0}),We(()=>e.activeConversationId,()=>{p.value=!1,Z.value=!1,f.value=null});const Q=ee(()=>x.value?x.value.ahead===0&&x.value.behind===0:!1),P=ee(()=>{const X=e.activeConversation;return X?.hasWorktree&&!X?.finalized}),E=ee(()=>{const X=e.activeConversation;return!!X?.hasWorktree&&!X?.finalized&&!e.isActiveConversationStreaming&&!Q.value});function j(){p.value=!0,f.value=null}async function z(X,I){const xe=e.activeConversationId;if(!xe)return;const J=await e.finalizeConversation(xe,X,I);if(p.value=!1,J.success)f.value={type:"success",message:`Merged to ${I}`},setTimeout(()=>{f.value=null},5e3);else if(J.rebaseInProgress)f.value=null;else{const fe=J.conflictFiles?.length?`Conflict in: ${J.conflictFiles.join(", ")}`:J.error||"Finalize failed";f.value={type:"error",message:fe}}}function ae(){p.value=!1}function ce(){if(!e.conflictState&&e.activeConversation?.hasWorktree){const X=e.activeConversation?.baseBranch||"main";f.value={type:"success",message:`Rebased onto ${X}`},setTimeout(()=>{f.value=null},5e3)}else f.value=null}const Oe=M(!1),W=ee(()=>!!e.activeConversation?.previewBranch);async function L(){const X=e.activeConversationId;if(!X)return;Oe.value=!0,f.value=null;const I=W.value,xe=await e.togglePreview(X);if(xe.success){const J=I?`Switched back to ${e.activeConversation?.baseBranch}`:"Preview active — main worktree updated";f.value={type:"success",message:J},setTimeout(()=>{f.value=null},3e3)}else f.value={type:"error",message:xe.error||"Preview toggle failed"};Oe.value=!1}const Z=M(!1);function F(){Z.value=!0,f.value=null}async function q(X){const I=e.activeConversationId;if(!I)return;const xe=await e.rebaseConversation(I,X);Z.value=!1,xe.success?(f.value={type:"success",message:`Rebased onto ${X}`},setTimeout(()=>{f.value=null},5e3)):xe.rebaseInProgress?f.value=null:f.value={type:"error",message:xe.error||"Rebase failed"}}function N(){Z.value=!1}return(X,I)=>(v(),y("div",_Z,[d("div",RZ,[d("div",BZ,[d("span",ZZ,_(m(s)),1)]),d("div",EZ,[m(P)?(v(),y("button",{key:0,disabled:m(Oe),class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors disabled:opacity-40 disabled:cursor-not-allowed",title:m(W)?"End preview: switch back to base branch":"Preview: test worktree changes in main worktree",onClick:L},[m(W)?(v(),be(m(K1),{key:0,class:"w-4 h-4 text-retro-cyan"})):(v(),be(m(J1),{key:1,class:"w-4 h-4"}))],8,DZ)):K("",!0),m(E)?(v(),y("button",{key:1,class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Rebase: sync worktree onto target base branch",onClick:F},[...I[2]||(I[2]=[Bp('<svg class="w-4 h-4" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><circle cx="7" cy="4.5" r="1.5" fill="currentColor"></circle><circle cx="18" cy="20" r="1.5" fill="currentColor"></circle><circle cx="12" cy="7" r="1.4" fill="currentColor" opacity="0.9"></circle><path d="M7 6V16M7 16L4.5 13.5M7 16L9.5 13.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path><path d="M8.4 7H12.5C15.5376 7 18 9.46243 18 12.5V18.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path><path d="M15.5 16L18 18.5L20.5 16" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg>',1)])])):K("",!0),m(E)?(v(),y("button",{key:2,class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Finalize: squash & merge to base branch",onClick:j},[te(m(ku),{class:"w-4 h-4"})])):K("",!0),d("button",{class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:m(o)?"Exit fullscreen chat":"Fullscreen chat",onClick:l},[m(o)?(v(),be(m(Vp),{key:0,class:"w-4 h-4"})):(v(),be(m(zp),{key:1,class:"w-4 h-4"}))],8,LZ),d("button",{class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:m(a)?"Hide debug stream":"Show debug stream",onClick:I[0]||(I[0]=xe=>a.value=!m(a))},[te(m(z1),{class:Ze(["w-4 h-4",m(a)?"text-retro-cyan":""])},null,8,["class"])],8,XZ),d("button",{disabled:!m(e).hasMessages,class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel disabled:opacity-30 disabled:cursor-not-allowed transition-colors",title:"New conversation",onClick:u},[te(m(bn),{class:"w-4 h-4"})],8,IZ)])]),te(AZ,{show:m(i),title:m(s),onConfirm:c,onCancel:h},null,8,["show","title"]),m(p)&&m(e).activeConversation?.hasWorktree?(v(),be(b7,{key:0,"base-branch":m(e).activeConversation.baseBranch||"main","worktree-branch":m(e).activeConversation.worktreeBranch||"","worktree-path":m(e).activeConversation.worktreePath||"",onConfirm:z,onCancel:ae},null,8,["base-branch","worktree-branch","worktree-path"])):K("",!0),m(Z)&&m(e).activeConversation?.hasWorktree?(v(),be(Z7,{key:1,"base-branch":m(e).activeConversation.baseBranch||"main","worktree-branch":m(e).activeConversation.worktreeBranch||"","worktree-path":m(e).activeConversation.worktreePath||"",onConfirm:q,onCancel:N},null,8,["base-branch","worktree-branch","worktree-path"])):K("",!0),m(e).conflictState?(v(),be(SZ,{key:2,onClose:ce})):K("",!0),m(f)?(v(),y("div",{key:3,class:Ze(["flex-shrink-0 px-4 py-2 border-b border-retro-border text-xs font-mono",m(f).type==="success"?"bg-retro-green/10 text-retro-green":"bg-retro-red/10 text-retro-red"])},[Ie(_(m(f).message)+" ",1),m(f).type==="error"?(v(),y("button",{key:0,class:"ml-2 underline hover:no-underline",onClick:I[1]||(I[1]=xe=>f.value=null)}," dismiss ")):K("",!0)],2)):K("",!0),m(g)?(v(),y("div",VZ," This conversation has been finalized and is read-only. ")):K("",!0),d("div",zZ,[te(cB,{class:"flex-1 overflow-hidden"}),m(a)?(v(),be(r7,{key:0})):K("",!0)]),te(qB,{disabled:m(O)},null,8,["disabled"])]))}}),WZ={class:"flex-shrink-0 flex items-center justify-between px-4 py-2 border-b border-retro-border bg-retro-panel"},jZ={class:"flex items-center gap-2 min-w-0"},qZ=["title"],YZ={class:"text-retro-text font-mono text-sm truncate"},FZ={class:"text-retro-muted"},UZ={class:"text-retro-text"},GZ={class:"text-retro-muted font-mono text-xs flex-shrink-0"},HZ={class:"flex-1 overflow-auto"},KZ={key:0,class:"flex items-center justify-center gap-2 text-retro-muted text-sm py-8"},JZ={key:1,class:"flex items-center justify-center text-retro-muted text-sm py-8"},e8={key:2,class:"flex items-center justify-center text-retro-muted text-sm py-8"},t8={key:3,class:"w-full text-xs font-mono border-collapse diff-table"},r8={key:0,class:"diff-warning"},n8={key:0,colspan:"3",class:"diff-hunk-header px-4 py-1"},s8={class:"diff-line-num select-none text-right px-2 w-12"},i8={class:"diff-line-num select-none text-right px-2 w-12 border-r border-retro-border"},o8={class:"diff-line-content px-3 whitespace-pre-wrap break-all"},a8={key:0,class:"diff-sign"},l8={key:1,class:"diff-sign"},c8={key:2,class:"diff-sign"},u8={key:4,class:"flex items-center justify-center text-retro-muted text-sm py-8"},h8=ze({__name:"GitFileDiffViewer",props:{file:{},commitHash:{},content:{},loading:{type:Boolean}},emits:["close"],setup(r,{emit:e}){const t=r,n=e,s=M(null),i=ee(()=>t.commitHash.substring(0,7)),o=ee(()=>zs[t.file.status]||{label:t.file.status,colorClass:"text-retro-muted"}),a=ee(()=>t.file.status==="R"&&t.file.oldPath);function l(c){c.key==="Escape"&&(c.preventDefault(),c.stopPropagation(),n("close"))}return Ot(()=>{s.value?.focus()}),(c,u)=>(v(),y("div",{ref_key:"containerRef",ref:s,tabindex:0,onKeydown:l,class:"flex flex-col h-full bg-retro-dark focus:outline-none","aria-label":"File diff viewer",role:"region"},[d("div",WZ,[d("div",jZ,[d("span",{class:Ze(["flex-shrink-0 w-5 h-5 flex items-center justify-center text-xs font-bold rounded",o.value.colorClass]),title:o.value.label},_(r.file.status),11,qZ),d("span",YZ,[a.value&&r.file.oldPath?(v(),y($e,{key:0},[d("span",FZ,_(r.file.oldPath),1),u[1]||(u[1]=d("span",{class:"text-retro-yellow mx-1"},"→",-1)),d("span",UZ,_(r.file.path),1)],64)):(v(),y($e,{key:1},[Ie(_(r.file.path),1)],64))]),d("span",GZ," @ "+_(i.value),1)]),d("button",{onClick:u[0]||(u[0]=h=>n("close")),class:"p-1 hover:bg-retro-dark rounded transition-colors flex-shrink-0 focus:outline-none focus:ring-2 focus:ring-retro-cyan","aria-label":"Close diff viewer",title:"Close (Esc)"},[te(m(At),{class:"w-5 h-5 text-retro-muted hover:text-retro-text"})])]),d("div",HZ,[r.loading?(v(),y("div",KZ,[...u[2]||(u[2]=[d("div",{class:"w-4 h-4 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"},null,-1),Ie(" Loading diff... ",-1)])])):r.content&&r.content.binary?(v(),y("div",JZ,[...u[3]||(u[3]=[d("span",{class:"bg-retro-panel px-4 py-2 rounded font-mono"}," Binary file — cannot display diff ",-1)])])):r.content&&r.content.lines.length===0?(v(),y("div",e8,[...u[4]||(u[4]=[d("span",{class:"bg-retro-panel px-4 py-2 rounded font-mono"}," No changes in this file ",-1)])])):r.content?(v(),y("table",t8,[d("tbody",null,[r.content.truncated?(v(),y("tr",r8,[...u[5]||(u[5]=[d("td",{colspan:"3",class:"px-4 py-2 text-retro-yellow bg-retro-panel text-center"}," Diff truncated — file has more than 10,000 lines ",-1)])])):K("",!0),(v(!0),y($e,null,Fe(r.content.lines,(h,p)=>(v(),y("tr",{key:p,class:Ze({"diff-add":h.type==="add","diff-delete":h.type==="delete","diff-context":h.type==="context","diff-header":h.type==="header"})},[h.type==="header"?(v(),y("td",n8,_(h.content),1)):(v(),y($e,{key:1},[d("td",s8,_(h.oldLineNumber??""),1),d("td",i8,_(h.newLineNumber??""),1),d("td",o8,[h.type==="add"?(v(),y("span",a8,"+")):h.type==="delete"?(v(),y("span",l8,"-")):(v(),y("span",c8," ")),Ie(" "+_(h.content),1)])],64))],2))),128))])])):(v(),y("div",u8," Failed to load diff content. "))])],544))}}),d8=ei(h8,[["__scopeId","data-v-74bf9bf3"]]),f8={class:"fixed inset-0 z-50 flex items-center justify-center"},p8={class:"relative w-[90vw] max-w-lg bg-retro-black border border-retro-border rounded-lg shadow-2xl flex flex-col overflow-hidden"},m8={class:"flex-shrink-0 h-12 flex items-center justify-between px-4 border-b border-retro-border bg-retro-dark"},g8={class:"flex items-center gap-2"},O8={class:"text-sm font-mono text-retro-text"},v8={class:"p-6 overflow-y-auto max-h-[70vh] space-y-6"},b8={key:0},x8={class:"space-y-6"},y8={class:"space-y-1.5"},k8=["value","checked","onChange"],w8={class:"flex-1"},S8={class:"text-sm font-mono text-retro-text"},$8={class:"text-xs text-retro-muted leading-tight"},C8={class:"text-xs font-mono text-retro-muted"},Q8={class:"text-xs text-retro-muted mb-3"},P8=["disabled"],T8={class:"space-y-1.5"},M8=["value","checked","onChange"],A8={class:"flex-1"},_8={class:"text-sm font-mono text-retro-text"},R8={class:"text-xs text-retro-muted leading-tight"},B8={key:1,class:"space-y-4"},Z8={class:"space-y-1.5"},E8=["checked"],D8=["checked"],L8={class:"flex items-center justify-between px-3 py-2 rounded border border-retro-border bg-retro-panel"},X8={class:"text-xs font-mono text-retro-cyan"},I8=ze({__name:"SettingsModal",emits:["close"],setup(r,{emit:e}){const t=e,n=Oo(),s=m1(),i=go(),o=M("main"),a=M(!1),l=ee(()=>s.public.appVersion||"unknown"),c=[{value:"dark",label:"Dark",description:"Retro terminal theme with dark backgrounds"},{value:"light",label:"Light",description:"Bright theme for well-lit environments"}],u=[{value:"plan",label:Qs.plan,description:Ro.plan,icon:$u,color:"text-retro-cyan"},{value:"ask",label:Qs.ask,description:Ro.ask,icon:Cu,color:"text-retro-green"},{value:"auto",label:Qs.auto,description:Ro.auto,icon:Wp,color:"text-retro-yellow"},{value:"bypass",label:Qs.bypass,description:Ro.bypass,icon:Qu,color:"text-retro-red"}],{data:h,pending:p,error:f}=gc("ai-providers",()=>$fetch("/api/ai/providers"),{server:!1}),g=ee(()=>h.value?.providers??[]),O=ee(()=>{const Z=f.value;return Z?Z instanceof Error?Z.message:String(Z):null}),{data:x,refresh:b}=gc("spec-search-status",()=>$fetch("/api/specs/status"),{server:!1,default:()=>null}),w=ee(()=>{const Z=x.value;return Z?Z.isIndexing?`Indexing (${Z.currentJob||"running"})`:Z.schedulerActive?`Indexed ${Z.fileCount} files / ${Z.chunkCount} chunks`:"Scheduler inactive":"Status unavailable"});Ot(()=>{n.hydrate()});const Q=Z=>{n.setProviderSelection(Z),i.success("Settings saved")},P=()=>{o.value="provider"},E=()=>{o.value="main"},j=Z=>{n.setTheme(Z),i.success("Settings saved")},z=Z=>{n.setPermissionMode(Z),i.success("Settings saved")},ae=Z=>{n.setAutoGenerateCommitMessages(Z),i.success("Settings saved")},ce=()=>{t("close")},Oe=async()=>{if(!a.value){a.value=!0;try{const Z=await $fetch("/api/specs/reindex",{method:"POST",body:{}});!Z.success&&Z.status==="already-indexing"?i.info("Spec index is already running"):i.success("Spec reindex started"),await b()}catch(Z){i.error(Z instanceof Error?Z.message:"Failed to start spec reindex")}finally{a.value=!1}}},W=Z=>{Z.key==="Escape"&&t("close")};Ot(()=>{window.addEventListener("keydown",W)}),Qt(()=>{window.removeEventListener("keydown",W)});let L=null;return Ot(()=>{L=Tu(()=>{b()},5e3)}),Qt(()=>{L&&clearInterval(L)}),(Z,F)=>(v(),be(Sr,{to:"body"},[d("div",f8,[d("div",{class:"absolute inset-0 bg-black/70",onClick:ce}),d("div",p8,[d("div",m8,[d("div",g8,[o.value==="provider"?(v(),y("button",{key:0,type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Back",onClick:E},[te(m(I1),{class:"h-4 w-4"})])):K("",!0),d("h2",O8,_(o.value==="provider"?"AI Provider Settings":"Settings"),1)]),d("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Close",onClick:F[0]||(F[0]=q=>t("close"))},[te(m(At),{class:"h-4 w-4"})])]),d("div",v8,[o.value==="main"?(v(),y("section",b8,[d("div",x8,[d("section",null,[F[3]||(F[3]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Theme",-1)),F[4]||(F[4]=d("p",{class:"text-xs text-retro-muted mb-3"}," Choose between dark and light appearance. ",-1)),d("div",y8,[(v(),y($e,null,Fe(c,q=>d("label",{key:q.value,class:Ze(["flex items-center gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[m(n).theme===q.value?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted"]])},[d("input",{type:"radio",name:"theme",value:q.value,checked:m(n).theme===q.value,class:"w-3.5 h-3.5 text-retro-cyan accent-retro-cyan",onChange:N=>j(q.value)},null,40,k8),d("div",w8,[d("div",S8,_(q.label),1),d("div",$8,_(q.description),1)])],2)),64))])]),F[11]||(F[11]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[F[6]||(F[6]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"AI Provider",-1)),F[7]||(F[7]=d("p",{class:"text-xs text-retro-muted mb-3"}," Configure provider and model settings for new conversations. ",-1)),d("button",{type:"button",class:"w-full flex items-center justify-between px-3 py-2 rounded border border-retro-border bg-retro-panel hover:border-retro-muted transition-colors",onClick:P},[F[5]||(F[5]=d("span",{class:"text-sm font-mono text-retro-text"},"Provider Settings",-1)),d("span",C8,_(m(n).providerSelection.providerId)+" / "+_(m(n).providerSelection.modelKey),1)])]),F[12]||(F[12]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[F[8]||(F[8]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Spec Search Index",-1)),d("p",Q8,_(w.value),1),d("button",{type:"button",class:"w-full flex items-center justify-center px-3 py-2 rounded border border-retro-border bg-retro-panel text-retro-text hover:border-retro-muted transition-colors disabled:opacity-60",disabled:a.value||m(x)?.isIndexing,onClick:Oe},_(a.value?"Starting reindex...":"Reindex Specs"),9,P8)]),F[13]||(F[13]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[F[9]||(F[9]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Default Permission Mode",-1)),F[10]||(F[10]=d("p",{class:"text-xs text-retro-muted mb-3"}," Set the default permission mode for all new chat conversations. ",-1)),d("div",T8,[(v(),y($e,null,Fe(u,q=>d("label",{key:q.value,class:Ze(["flex items-center gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[m(n).permissionMode===q.value?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted"]])},[d("input",{type:"radio",name:"permission-mode",value:q.value,checked:m(n).permissionMode===q.value,class:"w-3.5 h-3.5 text-retro-cyan accent-retro-cyan",onChange:N=>z(q.value)},null,40,M8),(v(),be(Xs(q.icon),{class:Ze(["w-4 h-4 flex-shrink-0",q.color])},null,8,["class"])),d("div",A8,[d("div",_8,_(q.label),1),d("div",R8,_(q.description),1)])],2)),64))])]),F[14]||(F[14]=d("div",{class:"border-t border-retro-border"},null,-1))])])):(v(),y("section",B8,[F[15]||(F[15]=d("div",null,[d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"AI Provider"),d("p",{class:"text-xs text-retro-muted mb-3"}," Choose which registered provider and model powers new conversations. ")],-1)),te(Z1,{providers:g.value,selected:m(n).providerSelection,permissionMode:m(n).permissionMode,pending:m(p),errorMessage:O.value,onSelect:Q},null,8,["providers","selected","permissionMode","pending","errorMessage"])])),F[23]||(F[23]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[F[18]||(F[18]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Commit Messages",-1)),F[19]||(F[19]=d("p",{class:"text-xs text-retro-muted mb-3"}," Choose whether to use AI to generate commit messages automatically. ",-1)),d("div",Z8,[d("label",{class:Ze(["flex items-center gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[m(n).autoGenerateCommitMessages?"border-retro-border bg-retro-panel hover:border-retro-muted":"border-retro-cyan bg-retro-cyan/10"]])},[d("input",{type:"radio",name:"commit-messages",value:!1,checked:!m(n).autoGenerateCommitMessages,class:"w-3.5 h-3.5 text-retro-cyan accent-retro-cyan",onChange:F[1]||(F[1]=q=>ae(!1))},null,40,E8),F[16]||(F[16]=d("div",{class:"flex-1"},[d("div",{class:"text-sm font-mono text-retro-text"},"Template (Recommended)"),d("div",{class:"text-xs text-retro-muted leading-tight"},"Simple template-based messages. No token usage.")],-1))],2),d("label",{class:Ze(["flex items-center gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[m(n).autoGenerateCommitMessages?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted"]])},[d("input",{type:"radio",name:"commit-messages",value:!0,checked:m(n).autoGenerateCommitMessages,class:"w-3.5 h-3.5 text-retro-cyan accent-retro-cyan",onChange:F[2]||(F[2]=q=>ae(!0))},null,40,D8),F[17]||(F[17]=d("div",{class:"flex-1"},[d("div",{class:"text-sm font-mono text-retro-text"},"AI-Generated"),d("div",{class:"text-xs text-retro-muted leading-tight"},"Uses Claude Haiku to create meaningful commit messages. ~300-500 tokens per commit.")],-1))],2)])]),F[24]||(F[24]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[F[21]||(F[21]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Spec-Cat",-1)),F[22]||(F[22]=d("p",{class:"text-xs text-retro-muted mb-3"}," Application version. ",-1)),d("div",L8,[F[20]||(F[20]=d("span",{class:"text-sm font-mono text-retro-text"},"Version",-1)),d("span",X8,_(l.value),1)])])])])])]))}}),V8={class:"fixed top-4 right-4 z-50 flex flex-col gap-2 max-w-sm"},z8={class:"flex-1 text-sm font-mono text-retro-text"},N8=["onClick"],W8=ze({__name:"ToastContainer",setup(r){const{toasts:e,remove:t}=go(),n={success:{bg:"bg-retro-green/20",icon:"text-retro-green",border:"border-retro-green/50"},error:{bg:"bg-retro-red/20",icon:"text-retro-red",border:"border-retro-red/50"},info:{bg:"bg-retro-cyan/20",icon:"text-retro-cyan",border:"border-retro-cyan/50"},warning:{bg:"bg-retro-yellow/20",icon:"text-retro-yellow",border:"border-retro-yellow/50"}},s=i=>{switch(i){case"success":return ku;case"error":return mo;case"warning":return Zn;default:return nv}};return(i,o)=>(v(),be(Sr,{to:"body"},[d("div",V8,[te(g1,{"enter-active-class":"transition-all duration-300 ease-out","leave-active-class":"transition-all duration-200 ease-in","enter-from-class":"opacity-0 translate-x-4","enter-to-class":"opacity-100 translate-x-0","leave-from-class":"opacity-100 translate-x-0","leave-to-class":"opacity-0 translate-x-4"},{default:ht(()=>[(v(!0),y($e,null,Fe(m(e),a=>(v(),y("div",{key:a.id,class:Ze(["flex items-start gap-3 p-3 rounded-lg border shadow-lg",[n[a.type].bg,n[a.type].border]])},[(v(),be(Xs(s(a.type)),{class:Ze(["h-5 w-5 flex-shrink-0 mt-0.5",n[a.type].icon])},null,8,["class"])),d("p",z8,_(a.message),1),d("button",{type:"button",class:"p-0.5 rounded text-retro-muted hover:text-retro-text transition-colors",onClick:l=>m(t)(a.id)},[te(m(At),{class:"h-4 w-4"})],8,N8)],2))),128))]),_:1})])]))}}),j8=ze({__name:"SplashScreen",setup(r){const e=M(!0),t=M(!1);return Ot(()=>{setTimeout(()=>{t.value=!0,setTimeout(()=>{e.value=!1},600)},1800)}),(n,s)=>(v(),be(Sr,{to:"body"},[e.value?(v(),y("div",{key:0,class:Ze(["fixed inset-0 z-[9999] flex items-center justify-center bg-retro-black transition-opacity duration-500",{"opacity-0":t.value}])},[...s[0]||(s[0]=[d("div",{class:"flex flex-col items-center gap-6"},[d("pre",{class:"text-retro-cyan font-mono text-xs leading-tight select-none splash-glow"},` ____ ____ _
|
|
80
|
+
/ ___| _ __ ___ ___ / ___|__ _| |_
|
|
81
|
+
\\___ \\| '_ \\ / _ \\/ __|| | / _\` | __|
|
|
82
|
+
___) | |_) | __/ (__ | |__| (_| | |_
|
|
83
|
+
|____/| .__/ \\___|\\___| \\____\\__,_|\\__|
|
|
84
|
+
|_|
|
|
85
|
+
`),d("div",{class:"flex items-center gap-2"},[d("span",{class:"inline-block w-2 h-2 rounded-full bg-retro-cyan animate-pulse"}),d("span",{class:"text-retro-muted font-mono text-xs tracking-widest uppercase"},"initializing")])],-1)])],2)):K("",!0)]))}}),q8=ei(j8,[["__scopeId","data-v-7fddb179"]]);let zt=null,Ss=null,Jn=null;const Y8=5e3,F8=500;let ur=null;const ca=new Map;function U8(){return typeof window>"u"?"":`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/_ws`}function G8(){const r=gr();async function e(){console.log("[GlobalNotifications] Executing debounced refresh");const f=await r.refreshServerConversations();console.log("[GlobalNotifications] Refresh result:",f);for(const[g,O]of ca)ca.delete(g),n(g,O)}function t(){Jn&&clearTimeout(Jn),Jn=setTimeout(()=>{Jn=null,e()},F8)}function n(f,g){if(!zt||zt.readyState!==WebSocket.OPEN||r.isConversationStreaming(f))return;const O=r.conversations.find(w=>w.id===f);if(!O){console.warn("[GlobalNotifications] Conversation not found for streaming:",f);return}O.messages.length===0&&g&&r.addUserMessage(g,f);const x=[...O.messages].reverse().find(w=>w.role==="assistant");if(x){r.resetMessageForReplay(x.id,f),r.startConversationStreaming(f),ur={conversationId:f,messageId:x.id,currentTextBlockId:null,isReplaying:!1,replayBuffer:[]},zt.send(JSON.stringify({type:"subscribe",conversationId:f,cursor:0})),console.log("[GlobalNotifications] Resumed server job streaming (existing msg):",f);return}const b=r.addAssistantMessage(f);r.initContentBlocks(b.id,f),r.startConversationStreaming(f),ur={conversationId:f,messageId:b.id,currentTextBlockId:null,isReplaying:!1,replayBuffer:[]},zt.send(JSON.stringify({type:"subscribe",conversationId:f,cursor:0})),console.log("[GlobalNotifications] Subscribed to server job streaming:",f)}function s(f){try{const g=JSON.parse(f.data);if(g.type==="notification"){i(g);return}ur&&o(g)}catch{}}function i(f){if(console.log("[GlobalNotifications] Received:",f.notificationEvent,f.conversationId),f.notificationEvent==="job_created"){ca.set(f.conversationId,f.message||""),t();return}if(f.notificationEvent==="job_persisted"){ur?.conversationId===f.conversationId&&(r.endConversationStreaming(f.conversationId),ur=null),ca.delete(f.conversationId),t();return}if(f.notificationEvent!=="job_completed"&&f.notificationEvent==="conversation_archived"){t();return}}function o(f){const g=ur,O=g.conversationId;if(f.type==="replay_start"){g.isReplaying=!0,g.replayBuffer=[];return}if(f.type==="replay_end"){a(g),g.isReplaying=!1,g.replayBuffer=[];return}if(g.isReplaying){(f.type==="ui_event"||f.type==="done"||f.type==="error")&&g.replayBuffer.push(f);return}if(f.type==="ui_event"&&f.event){l(g,f.event,O);return}if(f.type!=="done"&&f.type==="error"){r.updateMessage(g.messageId,{status:"error"},O),r.setSessionError(f.error||"Server job error",O),r.endConversationStreaming(O),ur=null;return}}function a(f){const g=[];let O="",x=null;for(const b of f.replayBuffer){if(b.type!=="ui_event"||!b.event)continue;const w=b.event;switch(w.type){case"block_start":if(w.blockType==="text"){const Q=w.blockId||Mr();g.push({id:Q,type:"text",text:w.text||""}),x=Q,w.text&&(O+=w.text)}break;case"block_delta":if(w.text&&x){const Q=g.find(P=>P.id===x);Q&&(Q.text+=w.text,O+=w.text)}break;case"block_end":x&&(x=null);break}}g.length>0&&r.batchSetMessageBlocks(f.messageId,g,O,"streaming",f.conversationId),f.currentTextBlockId=x,console.log(`[GlobalNotifications] Replay batch: ${f.replayBuffer.length} events → ${g.length} text blocks`)}function l(f,g,O){switch(g.type){case"block_start":{if(g.blockType==="text"){const x=g.blockId||Mr(),b={id:x,type:"text",text:g.text||""};r.appendContentBlock(f.messageId,b,O),f.currentTextBlockId=x,g.text&&r.appendToMessage(f.messageId,g.text,O)}break}case"block_delta":{g.text&&f.currentTextBlockId&&(r.updateBlockById(f.messageId,f.currentTextBlockId,x=>{x.type==="text"&&(x.text+=g.text)},O),r.appendToMessage(f.messageId,g.text,O));break}case"block_end":{f.currentTextBlockId&&(f.currentTextBlockId=null);break}}}function c(){if(typeof window>"u"||zt&&(zt.readyState===WebSocket.OPEN||zt.readyState===WebSocket.CONNECTING))return;const f=U8();zt=new WebSocket(f),zt.onopen=()=>{console.log("[GlobalNotifications] WebSocket connected")},zt.onmessage=s,zt.onclose=g=>{console.log("[GlobalNotifications] WebSocket closed",{code:g.code,reason:g.reason}),zt=null,ur&&(r.endConversationStreaming(ur.conversationId),ur=null),u()},zt.onerror=g=>{console.warn("[GlobalNotifications] WebSocket error",g)}}function u(){Ss||(Ss=setTimeout(()=>{Ss=null,c()},Y8))}function h(){Ss&&(clearTimeout(Ss),Ss=null),Jn&&(clearTimeout(Jn),Jn=null),ur&&(r.endConversationStreaming(ur.conversationId),ur=null),zt&&(zt.close(),zt=null)}async function p(){try{const g=(await $fetch("/api/jobs")).filter(O=>O.source!=="user"&&(O.status==="running"||O.status==="waiting_permission"||O.status==="queued"||O.status==="completed"&&O.eventCount>0));if(g.length===0)return;await r.refreshServerConversations();for(const O of g){if(r.isConversationStreaming(O.conversationId))continue;const x=r.conversations.find(w=>w.id===O.conversationId);if(!x)continue;const b=[...x.messages].reverse().find(w=>w.role==="assistant");b&&(b.status==="complete"||b.status==="error"||b.status==="stopped")||(console.log("[GlobalNotifications] Resuming active server job:",O.id,"for conversation:",O.conversationId),n(O.conversationId,""))}}catch(f){console.warn("[GlobalNotifications] Failed to check for active server jobs:",f)}}return Ot(()=>{c(),p()}),Qt(()=>{h()}),{connect:c,disconnect:h}}const H8={class:"flex h-screen min-w-[320px] overflow-x-auto bg-retro-black text-retro-text"},K8={class:"flex flex-col overflow-hidden",style:{flex:"3"}},J8={class:"flex-shrink-0 h-14 flex items-center justify-between px-4 border-b border-retro-border bg-retro-panel"},e6={class:"flex items-center gap-2 min-w-0"},t6={key:0,class:"text-xs text-retro-muted font-mono truncate"},r6={class:"flex items-center gap-1"},n6=["title"],s6={class:"flex-1 min-h-0 overflow-y-auto"},i6={class:"relative flex min-w-0",style:{flex:"7"}},o6={key:0,class:"flex flex-col overflow-hidden border-l border-retro-border",style:{flex:"2"}},a6={key:1,class:"flex flex-col overflow-hidden border-l border-retro-border",style:{flex:"2"}},l6={key:2,class:"absolute inset-0 z-30 flex flex-col overflow-hidden border-l border-retro-border bg-retro-black"},y6=ze({__name:"default",setup(r){const e=s1(),t=Oo(),n=gr(),s=ll(),{isDark:i,toggleTheme:o}=Q1(),{tryResumeStreaming:a}=Sl();G8();const l=ee(()=>s.diffViewerFile!==null),c=ee(()=>e.isChatFullscreen),u=ee(()=>c.value),h=ee(()=>c.value?7:3),p=M(!1),f=M(""),g=ee(()=>{if(!f.value)return"";const b=f.value.replace(/\/+$/,"").split("/");return b[b.length-1]||""}),O=ee(()=>g.value?`spec cat :: ${g.value}`:"spec cat");O1(()=>({title:O.value}));const x=()=>{typeof window<"u"&&e.updateViewport(window.innerWidth)};return Ot(async()=>{typeof window<"u"&&(e.updateViewport(window.innerWidth),window.addEventListener("resize",x)),await t.hydrate(),await n.initialize(),await n.loadConversations(),n.activeConversationId&&a(n.activeConversationId);try{const b=await $fetch("/api/cwd");f.value=b.cwd}catch{f.value=""}}),Qt(()=>{typeof window<"u"&&window.removeEventListener("resize",x)}),(b,w)=>{const Q=vS;return v(),y("div",H8,[d("div",K8,[d("div",J8,[d("div",e6,[w[4]||(w[4]=d("img",{alt:"SpecCat",src:bS,class:"w-5 h-5 text-retro-cyan mb-1"},null,-1)),w[5]||(w[5]=d("span",{class:"text-sm font-bold text-retro-cyan font-mono uppercase tracking-wider flex-shrink-0"},"SPECCAT",-1)),g.value?(v(),y("span",t6,"/ "+_(g.value),1)):K("",!0)]),d("div",r6,[d("button",{type:"button",class:"p-2 rounded transition-colors text-retro-muted hover:text-retro-text hover:bg-retro-panel",title:m(i)?"Switch to light theme":"Switch to dark theme",onClick:w[0]||(w[0]=(...P)=>m(o)&&m(o)(...P))},[m(i)?(v(),be(m(P1),{key:0,class:"w-5 h-5"})):(v(),be(m(T1),{key:1,class:"w-5 h-5"}))],8,n6),d("button",{type:"button",class:"p-2 rounded transition-colors text-retro-muted hover:text-retro-text hover:bg-retro-panel",title:"Settings",onClick:w[1]||(w[1]=P=>p.value=!0)},[te(m(qp),{class:"w-5 h-5"})])])]),d("div",s6,[te(Q,{"working-directory":f.value},null,8,["working-directory"])])]),d("div",i6,[u.value?K("",!0):(v(),y("div",o6,[te(xR)])),u.value?K("",!0):(v(),y("div",a6,[te(YR)])),d("div",{class:"flex flex-col overflow-hidden border-l border-retro-border",style:er({flex:h.value})},[te(NZ)],4),l.value?(v(),y("div",l6,[te(d8,{file:m(s).diffViewerFile,"commit-hash":m(s).diffViewerCommitHash,content:m(s).diffViewerContent,loading:m(s).diffViewerLoading,onClose:w[2]||(w[2]=P=>m(s).closeFileDiff())},null,8,["file","commit-hash","content","loading"])])):K("",!0)]),p.value?(v(),be(I8,{key:0,onClose:w[3]||(w[3]=P=>p.value=!1)})):K("",!0),te(W8),te(q8),Rp(b.$slots,"default")])}}});export{y6 as default};
|