@hydra-acp/browser 0.1.28 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/ui/index.html +80 -25
  2. package/package.json +1 -1
@@ -31,6 +31,7 @@
31
31
  --fg: #d6deeb;
32
32
  --muted: #7c8aa8;
33
33
  --accent: #6ea8fe;
34
+ --accent-fg: #0a0d12;
34
35
  --good: #4ec9b0;
35
36
  --bad: #f97583;
36
37
  --warn: #d4a17e;
@@ -41,6 +42,31 @@
41
42
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
42
43
  font-size: 15px;
43
44
  }
45
+ /* Light theme — applied via theme.ts setting data-theme on <html> (an
46
+ attribute selector on the same element as :root, so it wins on
47
+ specificity without needing !important). "system" resolves to one of
48
+ these two concrete values rather than being its own CSS state — see
49
+ theme.ts's resolvedTheme(). The highlight.js code-block palette isn't
50
+ variable-driven (upstream theme, copied in wholesale) so it gets its
51
+ own override block down by the dark one, not folded in here. */
52
+ html[data-theme="light"] {
53
+ color-scheme: light;
54
+ --bg: #ffffff;
55
+ --panel: #f6f8fa;
56
+ --panel-2: #eaeef2;
57
+ --border: #d0d7de;
58
+ --fg: #1f2328;
59
+ --muted: #59636e;
60
+ --accent: #0969da;
61
+ --accent-fg: #ffffff;
62
+ --good: #1a7f37;
63
+ --bad: #cf222e;
64
+ --warn: #9a6700;
65
+ --user-bg: #dbeafe;
66
+ --agent-bg: #f6f8fa;
67
+ --tool-bg: #eaeef2;
68
+ --code-bg: #f6f8fa;
69
+ }
44
70
  * { box-sizing: border-box; }
45
71
  /* touch-action: manipulation disables iOS Safari's double-tap-to-zoom
46
72
  (and the ~300ms tap-to-click delay that comes with it) without
@@ -63,7 +89,7 @@ html, body { height: 100%; margin: 0; touch-action: manipulation; }
63
89
  body { position: fixed; top: 0; left: 0; right: 0; height: var(--app-height, 100%); transform: translateY(var(--app-offset-top, 0px)); background: var(--bg); color: var(--fg); }
64
90
  button { font: inherit; color: inherit; background: transparent; border: 1px solid var(--border); border-radius: 6px; padding: 0.35rem 0.75rem; cursor: pointer; }
65
91
  button:hover { background: var(--panel-2); }
66
- button.primary { background: var(--accent); color: #0a0d12; border-color: var(--accent); font-weight: 600; }
92
+ button.primary { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); font-weight: 600; }
67
93
  button.primary:hover { filter: brightness(0.9); }
68
94
  button.danger { color: var(--bad); border-color: var(--bad); }
69
95
  button.danger:hover { background: rgba(249, 117, 131, 0.12); }
@@ -90,6 +116,28 @@ pre code { background: transparent; padding: 0; }
90
116
  its comment for why the plain 100% chain isn't enough on iOS. */
91
117
  #app { height: var(--app-height, 100%); display: flex; flex-direction: column; overflow: hidden; }
92
118
 
119
+ /* Split (wide-layout) view — session-list rail alongside the active
120
+ chat instead of either taking the whole screen. Breakpoint mirrors
121
+ dom.ts's isWideLayout() (min-width: 1000px); keep the two in sync.
122
+ .split-detail's flex-grow:0 caps it at 58rem (the chat-body/composer
123
+ content column's own ~56rem clamp, calc(50% - 28rem), plus its
124
+ 1rem-each-side floor) — past that, widening the window further does
125
+ nothing for the chat, so .rail (the only flex-grow item left, no
126
+ max-width of its own) is what absorbs the extra width instead of it
127
+ going to dead padding. Unlike the chat's cap, .rail's isn't a
128
+ readability constraint — a wider list of session cards doesn't get
129
+ harder to use, so there's no reason to freeze it too. Named
130
+ "split-detail", not "detail" — the latter is already a generic
131
+ label+control row class used all over the app (options modal,
132
+ chat-details panel, permission rows, …); reusing it here silently
133
+ applied this wrapper's column-flex/max-width to every one of those
134
+ rows too. */
135
+ .split { flex: 1; display: flex; overflow: hidden; }
136
+ .rail { flex: 1 1 20rem; min-width: 18rem; display: flex; flex-direction: column; overflow: hidden; border-right: 1px solid var(--border); }
137
+ .rail:focus { outline: none; box-shadow: inset 3px 0 0 var(--accent); }
138
+ .split-detail { flex: 0 1 58rem; max-width: 58rem; min-width: 0; display: flex; flex-direction: column; overflow: hidden; }
139
+ .split-detail-empty { flex: 1; display: flex; align-items: center; justify-content: center; color: var(--muted); }
140
+
93
141
  /* Header */
94
142
  .topbar { display: flex; align-items: center; gap: 0.5rem; padding: calc(0.6rem + env(safe-area-inset-top)) calc(0.6rem + env(safe-area-inset-right)) 0.6rem calc(0.6rem + env(safe-area-inset-left)); border-bottom: 1px solid var(--border); background: var(--panel); }
95
143
  .topbar .spacer { flex: 1; }
@@ -99,6 +147,7 @@ pre code { background: transparent; padding: 0; }
99
147
  .host-select { font-size: 0.8rem; color: var(--muted); padding: 0.15rem 0.5rem; border-radius: 999px; background: transparent; border: 1px solid var(--border); cursor: pointer; }
100
148
  .host-select:hover { background: var(--panel-2); color: var(--fg); }
101
149
  .pill.ready { color: var(--good); border-color: var(--good); }
150
+ .pill.cold { color: var(--warn); border-color: var(--warn); }
102
151
  .pill.working { color: var(--warn); border-color: var(--warn); }
103
152
  .pill.working .dot { animation: pill-pulse 1.1s ease-in-out infinite; }
104
153
  .pill.waiting { color: var(--accent); border-color: var(--accent); }
@@ -255,7 +304,7 @@ pre code { background: transparent; padding: 0; }
255
304
  top-right corner; the M1 (superseded) bubble dims with a small
256
305
  "amended ↓" chip pointing at its replacement. */
257
306
  .msg.user { position: relative; }
258
- .amend-badge { position: absolute; top: -0.45rem; right: -0.45rem; width: 1.25rem; height: 1.25rem; border-radius: 999px; background: var(--accent); color: #0a0d12; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; font-size: 0.8rem; line-height: 1; border: 2px solid var(--bg); cursor: help; }
307
+ .amend-badge { position: absolute; top: -0.45rem; right: -0.45rem; width: 1.25rem; height: 1.25rem; border-radius: 999px; background: var(--accent); color: var(--accent-fg); font-weight: 700; display: inline-flex; align-items: center; justify-content: center; font-size: 0.8rem; line-height: 1; border: 2px solid var(--bg); cursor: help; }
259
308
  .msg.user.amended-target { opacity: 0.55; }
260
309
  .queue-amended { color: var(--accent); border: 1px solid var(--accent); background: rgba(110,168,254,0.08); }
261
310
  /* The button itself is the tap target (invisible, no background of its
@@ -284,18 +333,21 @@ pre code { background: transparent; padding: 0; }
284
333
  }
285
334
 
286
335
  /* Composer */
287
- /* Bottom padding encroaches ~12px into the home-indicator inset (34pt
288
- on notch devices): the indicator bar itself is a thin strip centered
289
- in that inset, so the button row can sit this much closer to the
290
- screen edge without landing in the swipe-up gesture zone. The max()
291
- keeps the normal 0.6rem when there's no inset (browser tabs). */
292
- .composer { display: flex; flex-direction: column; gap: 0.4rem; padding: 0.6rem max(0.6rem, calc(50% - 28rem)) max(0.6rem, calc(env(safe-area-inset-bottom) - 0.75rem)); border-top: 1px solid var(--border); background: var(--panel); }
336
+ /* Bottom padding encroaches into the home-indicator inset (34pt on
337
+ notch devices): the indicator bar itself is a thin strip centered in
338
+ that inset, so the button row can sit this much closer to the screen
339
+ edge without landing in the swipe-up gesture zone. The max() keeps
340
+ the normal 0.6rem when there's no inset (browser tabs). */
341
+ .composer { display: flex; flex-direction: column; gap: 0.4rem; padding: 0.6rem max(0.6rem, calc(50% - 28rem)) max(0.6rem, calc(env(safe-area-inset-bottom) - 1.1rem)); border-top: 1px solid var(--border); background: var(--panel); }
293
342
  /* The keyboard already bounds the composer's bottom edge, so the
294
343
  safe-area reserve (there for the home indicator when it's not up)
295
344
  would just leave a dead gap above it — see viewport.ts. */
296
345
  html.keyboard-open .composer { padding-bottom: 0.6rem; }
297
346
  .composer textarea { width: 100%; min-height: 2.4rem; max-height: 12rem; resize: none; }
298
- .composer-buttons { display: flex; justify-content: flex-end; gap: 0.5rem; }
347
+ /* padding-right shifts the row (Send/Enqueue lands rightmost) off the
348
+ screen's rounded bottom-right corner — the swipe-gesture margin above
349
+ is vertical-only and doesn't protect against the corner mask. */
350
+ .composer-buttons { display: flex; justify-content: flex-end; gap: 0.5rem; padding-right: 0.8rem; }
299
351
  .composer .stop { color: var(--bad); border-color: var(--bad); }
300
352
 
301
353
  /* Pasted-image attachments: pending chips above the composer, and
@@ -337,6 +389,9 @@ html.keyboard-open .composer { padding-bottom: 0.6rem; }
337
389
 
338
390
  /* highlight.js — github-dark, background removed (pre supplies it) */
339
391
  .hljs{color:#c9d1d9}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}
392
+ /* highlight.js — github (light), same non-variable-driven reasoning as
393
+ the dark block above. */
394
+ html[data-theme="light"] .hljs{color:#24292e}html[data-theme="light"] .hljs-doctag,html[data-theme="light"] .hljs-keyword,html[data-theme="light"] .hljs-meta .hljs-keyword,html[data-theme="light"] .hljs-template-tag,html[data-theme="light"] .hljs-template-variable,html[data-theme="light"] .hljs-type,html[data-theme="light"] .hljs-variable.language_{color:#d73a49}html[data-theme="light"] .hljs-title,html[data-theme="light"] .hljs-title.class_,html[data-theme="light"] .hljs-title.class_.inherited__,html[data-theme="light"] .hljs-title.function_{color:#6f42c1}html[data-theme="light"] .hljs-attr,html[data-theme="light"] .hljs-attribute,html[data-theme="light"] .hljs-literal,html[data-theme="light"] .hljs-meta,html[data-theme="light"] .hljs-number,html[data-theme="light"] .hljs-operator,html[data-theme="light"] .hljs-selector-attr,html[data-theme="light"] .hljs-selector-class,html[data-theme="light"] .hljs-selector-id,html[data-theme="light"] .hljs-variable{color:#005cc5}html[data-theme="light"] .hljs-meta .hljs-string,html[data-theme="light"] .hljs-regexp,html[data-theme="light"] .hljs-string{color:#032f62}html[data-theme="light"] .hljs-built_in,html[data-theme="light"] .hljs-symbol{color:#e36209}html[data-theme="light"] .hljs-code,html[data-theme="light"] .hljs-comment,html[data-theme="light"] .hljs-formula{color:#6a737d}html[data-theme="light"] .hljs-name,html[data-theme="light"] .hljs-quote,html[data-theme="light"] .hljs-selector-pseudo,html[data-theme="light"] .hljs-selector-tag{color:#22863a}html[data-theme="light"] .hljs-subst{color:#24292e}html[data-theme="light"] .hljs-section{color:#005cc5;font-weight:700}html[data-theme="light"] .hljs-bullet{color:#735c0f}html[data-theme="light"] .hljs-emphasis{color:#24292e;font-style:italic}html[data-theme="light"] .hljs-strong{color:#24292e;font-weight:700}html[data-theme="light"] .hljs-addition{color:#22863a;background-color:#f0fff4}html[data-theme="light"] .hljs-deletion{color:#b31d28;background-color:#ffeef0}
340
395
 
341
396
  /* Banner */
342
397
  .banner { padding: 0.4rem 0.9rem; font-size: 0.85rem; text-align: center; }
@@ -398,26 +453,26 @@ html.keyboard-open .composer { padding-bottom: 0.6rem; }
398
453
  </head>
399
454
  <body>
400
455
  <div id="app"></div>
401
- <script nonce="__CSP_NONCE__">"use strict";(()=>{var Ui=Object.create;var Hn=Object.defineProperty;var qi=Object.getOwnPropertyDescriptor;var Ki=Object.getOwnPropertyNames;var zi=Object.getPrototypeOf,Gi=Object.prototype.hasOwnProperty;var Wi=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Yi=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ki(t))!Gi.call(e,r)&&r!==n&&Hn(e,r,{get:()=>t[r],enumerable:!(s=qi(t,r))||s.enumerable});return e};var Qi=(e,t,n)=>(n=e!=null?Ui(zi(e)):{},Yi(t||!e||!e.__esModule?Hn(n,"default",{value:e,enumerable:!0}):n,e));var us=Wi((vl,ls)=>{function Zn(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],s=typeof n;(s==="object"||s==="function")&&!Object.isFrozen(n)&&Zn(n)}),e}var ht=class{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function Jn(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function ge(e,...t){let n=Object.create(null);for(let s in e)n[s]=e[s];return t.forEach(function(s){for(let r in s)n[r]=s[r]}),n}var Vi="</span>",Gn=e=>!!e.scope,Zi=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((s,r)=>`${s}${"_".repeat(r+1)}`)].join(" ")}return`${t}${e}`},on=class{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Jn(t)}openNode(t){if(!Gn(t))return;let n=Zi(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Gn(t)&&(this.buffer+=Vi)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}},Wn=(e={})=>{let t={children:[]};return Object.assign(t,e),t},an=class e{constructor(){this.rootNode=Wn(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){let n=Wn({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(s=>this._walk(t,s)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{e._collapse(n)}))}},cn=class extends an{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let s=t.root;n&&(s.scope=`language:${n}`),this.add(s)}toHTML(){return new on(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function Ve(e){return e?typeof e=="string"?e:e.source:null}function jn(e){return ve("(?=",e,")")}function Ji(e){return ve("(?:",e,")*")}function ji(e){return ve("(?:",e,")?")}function ve(...e){return e.map(n=>Ve(n)).join("")}function eo(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function un(...e){return"("+(eo(e).capture?"":"?:")+e.map(s=>Ve(s)).join("|")+")"}function es(e){return new RegExp(e.toString()+"|").exec("").length-1}function to(e,t){let n=e&&e.exec(t);return n&&n.index===0}var no=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function dn(e,{joinWith:t}){let n=0;return e.map(s=>{n+=1;let r=n,o=Ve(s),a="";for(;o.length>0;){let c=no.exec(o);if(!c){a+=o;break}a+=o.substring(0,c.index),o=o.substring(c.index+c[0].length),c[0][0]==="\\"&&c[1]?a+="\\"+String(Number(c[1])+r):(a+=c[0],c[0]==="("&&n++)}return a}).map(s=>`(${s})`).join(t)}var so=/\b\B/,ts="[a-zA-Z]\\w*",fn="[a-zA-Z_]\\w*",ns="\\b\\d+(\\.\\d+)?",ss="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",rs="\\b(0b[01]+)",ro="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",io=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=ve(t,/.*\b/,e.binary,/\b.*/)),ge({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,s)=>{n.index!==0&&s.ignoreMatch()}},e)},Ze={begin:"\\\\[\\s\\S]",relevance:0},oo={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Ze]},ao={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Ze]},co={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Et=function(e,t,n={}){let s=ge({scope:"comment",begin:e,end:t,contains:[]},n);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let r=un("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:ve(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},lo=Et("//","$"),uo=Et("/\\*","\\*/"),fo=Et("#","$"),po={scope:"number",begin:ns,relevance:0},go={scope:"number",begin:ss,relevance:0},mo={scope:"number",begin:rs,relevance:0},ho={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Ze,{begin:/\[/,end:/\]/,relevance:0,contains:[Ze]}]},bo={scope:"title",begin:ts,relevance:0},Eo={scope:"title",begin:fn,relevance:0},_o={begin:"\\.\\s*"+fn,relevance:0},yo=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},mt=Object.freeze({__proto__:null,APOS_STRING_MODE:oo,BACKSLASH_ESCAPE:Ze,BINARY_NUMBER_MODE:mo,BINARY_NUMBER_RE:rs,COMMENT:Et,C_BLOCK_COMMENT_MODE:uo,C_LINE_COMMENT_MODE:lo,C_NUMBER_MODE:go,C_NUMBER_RE:ss,END_SAME_AS_BEGIN:yo,HASH_COMMENT_MODE:fo,IDENT_RE:ts,MATCH_NOTHING_RE:so,METHOD_GUARD:_o,NUMBER_MODE:po,NUMBER_RE:ns,PHRASAL_WORDS_MODE:co,QUOTE_STRING_MODE:ao,REGEXP_MODE:ho,RE_STARTERS_RE:ro,SHEBANG:io,TITLE_MODE:bo,UNDERSCORE_IDENT_RE:fn,UNDERSCORE_TITLE_MODE:Eo});function vo(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function wo(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function So(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=vo,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function To(e,t){Array.isArray(e.illegal)&&(e.illegal=un(...e.illegal))}function Io(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Ao(e,t){e.relevance===void 0&&(e.relevance=1)}var No=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(s=>{delete e[s]}),e.keywords=n.keywords,e.begin=ve(n.beforeMatch,jn(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ko=["of","and","for","in","not","or","if","then","parent","list","value"],xo="keyword";function is(e,t,n=xo){let s=Object.create(null);return typeof e=="string"?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(o){Object.assign(s,is(e[o],t,o))}),s;function r(o,a){t&&(a=a.map(c=>c.toLowerCase())),a.forEach(function(c){let u=c.split("|");s[u[0]]=[o,Co(u[0],u[1])]})}}function Co(e,t){return t?Number(t):Mo(e)?0:1}function Mo(e){return ko.includes(e.toLowerCase())}var Yn={},ye=e=>{console.error(e)},Qn=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Re=(e,t)=>{Yn[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Yn[`${e}/${t}`]=!0)},bt=new Error;function os(e,t,{key:n}){let s=0,r=e[n],o={},a={};for(let c=1;c<=t.length;c++)a[c+s]=r[c],o[c+s]=!0,s+=es(t[c-1]);e[n]=a,e[n]._emit=o,e[n]._multi=!0}function Ro(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw ye("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),bt;if(typeof e.beginScope!="object"||e.beginScope===null)throw ye("beginScope must be object"),bt;os(e,e.begin,{key:"beginScope"}),e.begin=dn(e.begin,{joinWith:""})}}function Oo(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw ye("skip, excludeEnd, returnEnd not compatible with endScope: {}"),bt;if(typeof e.endScope!="object"||e.endScope===null)throw ye("endScope must be object"),bt;os(e,e.end,{key:"endScope"}),e.end=dn(e.end,{joinWith:""})}}function Lo(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Do(e){Lo(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Ro(e),Oo(e)}function Po(e){function t(a,c){return new RegExp(Ve(a),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(c?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(c,u){u.position=this.position++,this.matchIndexes[this.matchAt]=u,this.regexes.push([u,c]),this.matchAt+=es(c)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let c=this.regexes.map(u=>u[1]);this.matcherRe=t(dn(c,{joinWith:"|"}),!0),this.lastIndex=0}exec(c){this.matcherRe.lastIndex=this.lastIndex;let u=this.matcherRe.exec(c);if(!u)return null;let d=u.findIndex((p,g)=>g>0&&p!==void 0),f=this.matchIndexes[d];return u.splice(0,d),Object.assign(u,f)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(c){if(this.multiRegexes[c])return this.multiRegexes[c];let u=new n;return this.rules.slice(c).forEach(([d,f])=>u.addRule(d,f)),u.compile(),this.multiRegexes[c]=u,u}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(c,u){this.rules.push([c,u]),u.type==="begin"&&this.count++}exec(c){let u=this.getMatcher(this.regexIndex);u.lastIndex=this.lastIndex;let d=u.exec(c);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let f=this.getMatcher(0);f.lastIndex=this.lastIndex+1,d=f.exec(c)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function r(a){let c=new s;return a.contains.forEach(u=>c.addRule(u.begin,{rule:u,type:"begin"})),a.terminatorEnd&&c.addRule(a.terminatorEnd,{type:"end"}),a.illegal&&c.addRule(a.illegal,{type:"illegal"}),c}function o(a,c){let u=a;if(a.isCompiled)return u;[wo,Io,Do,No].forEach(f=>f(a,c)),e.compilerExtensions.forEach(f=>f(a,c)),a.__beforeBegin=null,[So,To,Ao].forEach(f=>f(a,c)),a.isCompiled=!0;let d=null;return typeof a.keywords=="object"&&a.keywords.$pattern&&(a.keywords=Object.assign({},a.keywords),d=a.keywords.$pattern,delete a.keywords.$pattern),d=d||/\w+/,a.keywords&&(a.keywords=is(a.keywords,e.case_insensitive)),u.keywordPatternRe=t(d,!0),c&&(a.begin||(a.begin=/\B|\b/),u.beginRe=t(u.begin),!a.end&&!a.endsWithParent&&(a.end=/\B|\b/),a.end&&(u.endRe=t(u.end)),u.terminatorEnd=Ve(u.end)||"",a.endsWithParent&&c.terminatorEnd&&(u.terminatorEnd+=(a.end?"|":"")+c.terminatorEnd)),a.illegal&&(u.illegalRe=t(a.illegal)),a.contains||(a.contains=[]),a.contains=[].concat(...a.contains.map(function(f){return Bo(f==="self"?a:f)})),a.contains.forEach(function(f){o(f,u)}),a.starts&&o(a.starts,c),u.matcher=r(u),u}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=ge(e.classNameAliases||{}),o(e)}function as(e){return e?e.endsWithParent||as(e.starts):!1}function Bo(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return ge(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:as(e)?ge(e,{starts:e.starts?ge(e.starts):null}):Object.isFrozen(e)?ge(e):e}var Fo="11.11.1",ln=class extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}},rn=Jn,Xn=ge,Vn=Symbol("nomatch"),Ho=7,cs=function(e){let t=Object.create(null),n=Object.create(null),s=[],r=!0,o="Could not find the language '{}', did you forget to load/include a language module?",a={disableAutodetect:!0,name:"Plain text",contains:[]},c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:cn};function u(h){return c.noHighlightRe.test(h)}function d(h){let T=h.className+" ";T+=h.parentNode?h.parentNode.className:"";let S=c.languageDetectRe.exec(T);if(S){let C=P(S[1]);return C||(Qn(o.replace("{}",S[1])),Qn("Falling back to no-highlight mode for this block.",h)),C?S[1]:"no-highlight"}return T.split(/\s+/).find(C=>u(C)||P(C))}function f(h,T,S){let C="",B="";typeof T=="object"?(C=h,S=T.ignoreIllegals,B=T.language):(Re("10.7.0","highlight(lang, code, ...args) has been deprecated."),Re("10.7.0",`Please use highlight(code, options) instead.
402
- https://github.com/highlightjs/highlight.js/issues/2277`),B=h,C=T),S===void 0&&(S=!0);let U={code:C,language:B};Y("before:highlight",U);let G=U.result?U.result:p(U.language,U.code,S);return G.code=U.code,Y("after:highlight",G),G}function p(h,T,S,C){let B=Object.create(null);function U(v,N){return v.keywords[N]}function G(){if(!k.keywords){X.addText(q);return}let v=0;k.keywordPatternRe.lastIndex=0;let N=k.keywordPatternRe.exec(q),O="";for(;N;){O+=q.substring(v,N.index);let F=ie.case_insensitive?N[0].toLowerCase():N[0],V=U(k,F);if(V){let[ue,Hi]=V;if(X.addText(O),O="",B[F]=(B[F]||0)+1,B[F]<=Ho&&(gt+=Hi),ue.startsWith("_"))O+=N[0];else{let $i=ie.classNameAliases[ue]||ue;te(N[0],$i)}}else O+=N[0];v=k.keywordPatternRe.lastIndex,N=k.keywordPatternRe.exec(q)}O+=q.substring(v),X.addText(O)}function re(){if(q==="")return;let v=null;if(typeof k.subLanguage=="string"){if(!t[k.subLanguage]){X.addText(q);return}v=p(k.subLanguage,q,!0,pt[k.subLanguage]),pt[k.subLanguage]=v._top}else v=b(q,k.subLanguage.length?k.subLanguage:null);k.relevance>0&&(gt+=v.relevance),X.__addSublanguage(v._emitter,v.language)}function Z(){k.subLanguage!=null?re():G(),q=""}function te(v,N){v!==""&&(X.startScope(N),X.addText(v),X.endScope())}function xe(v,N){let O=1,F=N.length-1;for(;O<=F;){if(!v._emit[O]){O++;continue}let V=ie.classNameAliases[v[O]]||v[O],ue=N[O];V?te(ue,V):(q=ue,G(),q=""),O++}}function dt(v,N){return v.scope&&typeof v.scope=="string"&&X.openNode(ie.classNameAliases[v.scope]||v.scope),v.beginScope&&(v.beginScope._wrap?(te(q,ie.classNameAliases[v.beginScope._wrap]||v.beginScope._wrap),q=""):v.beginScope._multi&&(xe(v.beginScope,N),q="")),k=Object.create(v,{parent:{value:k}}),k}function Qe(v,N,O){let F=to(v.endRe,O);if(F){if(v["on:end"]){let V=new ht(v);v["on:end"](N,V),V.isMatchIgnored&&(F=!1)}if(F){for(;v.endsParent&&v.parent;)v=v.parent;return v}}if(v.endsWithParent)return Qe(v.parent,N,O)}function Vt(v){return k.matcher.regexIndex===0?(q+=v[0],1):(tn=!0,0)}function Zt(v){let N=v[0],O=v.rule,F=new ht(O),V=[O.__beforeBegin,O["on:begin"]];for(let ue of V)if(ue&&(ue(v,F),F.isMatchIgnored))return Vt(N);return O.skip?q+=N:(O.excludeBegin&&(q+=N),Z(),!O.returnBegin&&!O.excludeBegin&&(q=N)),dt(O,v),O.returnBegin?0:N.length}function Jt(v){let N=v[0],O=T.substring(v.index),F=Qe(k,v,O);if(!F)return Vn;let V=k;k.endScope&&k.endScope._wrap?(Z(),te(N,k.endScope._wrap)):k.endScope&&k.endScope._multi?(Z(),xe(k.endScope,v)):V.skip?q+=N:(V.returnEnd||V.excludeEnd||(q+=N),Z(),V.excludeEnd&&(q=N));do k.scope&&X.closeNode(),!k.skip&&!k.subLanguage&&(gt+=k.relevance),k=k.parent;while(k!==F.parent);return F.starts&&dt(F.starts,v),V.returnEnd?0:N.length}function jt(){let v=[];for(let N=k;N!==ie;N=N.parent)N.scope&&v.unshift(N.scope);v.forEach(N=>X.openNode(N))}let Ce={};function ft(v,N){let O=N&&N[0];if(q+=v,O==null)return Z(),0;if(Ce.type==="begin"&&N.type==="end"&&Ce.index===N.index&&O===""){if(q+=T.slice(N.index,N.index+1),!r){let F=new Error(`0 width match regex (${h})`);throw F.languageName=h,F.badRule=Ce.rule,F}return 1}if(Ce=N,N.type==="begin")return Zt(N);if(N.type==="illegal"&&!S){let F=new Error('Illegal lexeme "'+O+'" for mode "'+(k.scope||"<unnamed>")+'"');throw F.mode=k,F}else if(N.type==="end"){let F=Jt(N);if(F!==Vn)return F}if(N.type==="illegal"&&O==="")return q+=`
403
- `,1;if(en>1e5&&en>N.index*3)throw new Error("potential infinite loop, way more iterations than matches");return q+=O,O.length}let ie=P(h);if(!ie)throw ye(o.replace("{}",h)),new Error('Unknown language: "'+h+'"');let H=Po(ie),fe="",k=C||H,pt={},X=new c.__emitter(c);jt();let q="",gt=0,_e=0,en=0,tn=!1;try{if(ie.__emitTokens)ie.__emitTokens(T,X);else{for(k.matcher.considerAll();;){en++,tn?tn=!1:k.matcher.considerAll(),k.matcher.lastIndex=_e;let v=k.matcher.exec(T);if(!v)break;let N=T.substring(_e,v.index),O=ft(N,v);_e=v.index+O}ft(T.substring(_e))}return X.finalize(),fe=X.toHTML(),{language:h,value:fe,relevance:gt,illegal:!1,_emitter:X,_top:k}}catch(v){if(v.message&&v.message.includes("Illegal"))return{language:h,value:rn(T),illegal:!0,relevance:0,_illegalBy:{message:v.message,index:_e,context:T.slice(_e-100,_e+100),mode:v.mode,resultSoFar:fe},_emitter:X};if(r)return{language:h,value:rn(T),illegal:!1,relevance:0,errorRaised:v,_emitter:X,_top:k};throw v}}function g(h){let T={value:rn(h),illegal:!1,relevance:0,_top:a,_emitter:new c.__emitter(c)};return T._emitter.addText(h),T}function b(h,T){T=T||c.languages||Object.keys(t);let S=g(h),C=T.filter(P).filter(j).map(Z=>p(Z,h,!1));C.unshift(S);let B=C.sort((Z,te)=>{if(Z.relevance!==te.relevance)return te.relevance-Z.relevance;if(Z.language&&te.language){if(P(Z.language).supersetOf===te.language)return 1;if(P(te.language).supersetOf===Z.language)return-1}return 0}),[U,G]=B,re=U;return re.secondBest=G,re}function _(h,T,S){let C=T&&n[T]||S;h.classList.add("hljs"),h.classList.add(`language-${C}`)}function y(h){let T=null,S=d(h);if(u(S))return;if(Y("before:highlightElement",{el:h,language:S}),h.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",h);return}if(h.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(h)),c.throwUnescapedHTML))throw new ln("One of your code blocks includes unescaped HTML.",h.innerHTML);T=h;let C=T.textContent,B=S?f(C,{language:S,ignoreIllegals:!0}):b(C);h.innerHTML=B.value,h.dataset.highlighted="yes",_(h,S,B.language),h.result={language:B.language,re:B.relevance,relevance:B.relevance},B.secondBest&&(h.secondBest={language:B.secondBest.language,relevance:B.secondBest.relevance}),Y("after:highlightElement",{el:h,result:B,text:C})}function m(h){c=Xn(c,h)}let E=()=>{R(),Re("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function I(){R(),Re("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let M=!1;function R(){function h(){R()}if(document.readyState==="loading"){M||window.addEventListener("DOMContentLoaded",h,!1),M=!0;return}document.querySelectorAll(c.cssSelector).forEach(y)}function D(h,T){let S=null;try{S=T(e)}catch(C){if(ye("Language definition for '{}' could not be registered.".replace("{}",h)),r)ye(C);else throw C;S=a}S.name||(S.name=h),t[h]=S,S.rawDefinition=T.bind(null,e),S.aliases&&z(S.aliases,{languageName:h})}function x(h){delete t[h];for(let T of Object.keys(n))n[T]===h&&delete n[T]}function K(){return Object.keys(t)}function P(h){return h=(h||"").toLowerCase(),t[h]||t[n[h]]}function z(h,{languageName:T}){typeof h=="string"&&(h=[h]),h.forEach(S=>{n[S.toLowerCase()]=T})}function j(h){let T=P(h);return T&&!T.disableAutodetect}function ae(h){h["before:highlightBlock"]&&!h["before:highlightElement"]&&(h["before:highlightElement"]=T=>{h["before:highlightBlock"](Object.assign({block:T.el},T))}),h["after:highlightBlock"]&&!h["after:highlightElement"]&&(h["after:highlightElement"]=T=>{h["after:highlightBlock"](Object.assign({block:T.el},T))})}function se(h){ae(h),s.push(h)}function oe(h){let T=s.indexOf(h);T!==-1&&s.splice(T,1)}function Y(h,T){let S=h;s.forEach(function(C){C[S]&&C[S](T)})}function Q(h){return Re("10.7.0","highlightBlock will be removed entirely in v12.0"),Re("10.7.0","Please use highlightElement now."),y(h)}Object.assign(e,{highlight:f,highlightAuto:b,highlightAll:R,highlightElement:y,highlightBlock:Q,configure:m,initHighlighting:E,initHighlightingOnLoad:I,registerLanguage:D,unregisterLanguage:x,listLanguages:K,getLanguage:P,registerAliases:z,autoDetection:j,inherit:Xn,addPlugin:se,removePlugin:oe}),e.debugMode=function(){r=!1},e.safeMode=function(){r=!0},e.versionString=Fo,e.regex={concat:ve,lookahead:jn,either:un,optional:ji,anyNumberOfTimes:Ji};for(let h in mt)typeof mt[h]=="object"&&Zn(mt[h]);return Object.assign(e,mt),e},Oe=cs({});Oe.newInstance=()=>cs({});ls.exports=Oe;Oe.HighlightJS=Oe;Oe.default=Oe});function l(e,t,...n){let s=document.createElement(e);if(t)for(let[r,o]of Object.entries(t))o==null||o===!1||(r==="class"?s.className=o:r.startsWith("on")&&typeof o=="function"?s.addEventListener(r.slice(2).toLowerCase(),o):r==="html"?s.innerHTML=o:s.setAttribute(r,String(o)));for(let r of n)if(!(r==null||r===!1))if(Array.isArray(r))for(let o of r)Un(s,o);else Un(s,r);return s}var nn=10;function $n(){let e=window.getSelection();return!!e&&!e.isCollapsed&&e.toString().length>0}function pe(e){return e instanceof HTMLElement?e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||e.isContentEditable:!1}function qn(){return window.matchMedia("(hover: hover) and (pointer: fine)").matches}function A(e){let t=!1,n=0,s=0;return{onpointerdown:r=>{if(pe(r.target))return;let o=r;o.pointerType==="mouse"&&o.button!==0||(n=o.clientX,s=o.clientY,r.preventDefault(),r.stopPropagation())},onpointerup:r=>{if(pe(r.target))return;let o=r;o.pointerType==="mouse"&&o.button!==0||(r.stopPropagation(),!(Math.hypot(o.clientX-n,o.clientY-s)>nn)&&($n()||(t=!0,e(r))))},onclick:r=>{if(!pe(r.target)){if(r.stopPropagation(),t){t=!1;return}$n()||e(r)}}}}function Un(e,t){t==null||t===!1||(t instanceof Node?e.appendChild(t):e.appendChild(document.createTextNode(String(t))))}function ne(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Me(e){return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>"),e=e.replace(/(^|[^*])\*([^*\n]+)\*/g,"$1<em>$2</em>"),e=e.replace(/__([^_\n]+)__/g,"<strong>$1</strong>"),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>{let r=s.match(/^hydra:\/\/(?:[^/\s]+\/)?sessions\/([A-Za-z0-9_-]+)(?:#turn-\d+)?$/);if(r){let o=r[1];return`<a href="#/session/${ne(o)}">${n}</a>`}return/^(https?:\/\/|\/|\.)/i.test(s)?`<a href="${ne(s)}" target="_blank" rel="noopener noreferrer">${n}</a>`:`[${n}](${s})`}),e}function sn(e){let t=e.trim();if(!t.includes("|"))return null;let n=t;return n.startsWith("|")&&(n=n.slice(1)),n.endsWith("|")&&(n=n.slice(0,-1)),n.split("|").map(s=>s.trim())}function Xi(e){let t=sn(e);if(!t||t.length===0)return null;let n=[];for(let s of t){if(!/^:?-+:?$/.test(s))return null;let r=s.startsWith(":"),o=s.endsWith(":");r&&o?n.push("center"):o?n.push("right"):r?n.push("left"):n.push(null)}return n}function Kn(e,t,n){let s="<tr>";for(let r=0;r<e.length;r++){let o=t[r]??null,a=o?` style="text-align:${o}"`:"";s+=`<${n}${a}>${Me(ne(e[r]))}</${n}>`}return s+="</tr>",s}function zn(e){typeof e!="string"&&(e=String(e??""));let t=e.split(`
404
- `),n="",s=!1,r="",o=[],a=null,c=[];function u(){c.length!==0&&(n+=`<p>${Me(c.join(" "))}</p>`,c=[])}function d(){a&&(n+=`</${a}>`,a=null)}let f=0;for(;f<t.length;){let p=t[f];if(s){if(/^```/.test(p)){n+=`<pre><code data-lang="${ne(r)}">${ne(o.join(`
405
- `))}</code></pre>`,s=!1,o=[],r="",f++;continue}o.push(p),f++;continue}if(/^```/.test(p)){u(),d(),s=!0,r=p.slice(3).trim(),f++;continue}if(f+1<t.length&&p.includes("|")){let b=sn(p),_=Xi(t[f+1]);if(b&&_&&b.length>0&&_.length>0){u(),d();let y=Math.max(b.length,_.length),m=[];for(let I=0;I<y;I++)m.push(_[I]??null);n+="<table><thead>",n+=Kn(b,m,"th"),n+="</thead><tbody>";let E=f+2;for(;E<t.length;){let I=sn(t[E]);if(!I)break;n+=Kn(I,m,"td"),E++}n+="</tbody></table>",f=E;continue}}if(/^\s*$/.test(p)){u(),d(),f++;continue}let g;if(g=p.match(/^(#{1,3})\s+(.+)$/)){u(),d();let b=g[1].length;n+=`<h${b}>${Me(ne(g[2]))}</h${b}>`,f++;continue}if(g=p.match(/^\s*[-*]\s+(.*)$/)){u(),a!=="ul"&&(d(),n+="<ul>",a="ul"),n+=`<li>${Me(ne(g[1]))}</li>`,f++;continue}if(g=p.match(/^\s*\d+\.\s+(.*)$/)){u(),a!=="ol"&&(d(),n+="<ol>",a="ol"),n+=`<li>${Me(ne(g[1]))}</li>`,f++;continue}if(g=p.match(/^\s*>\s?(.*)$/)){u(),d(),n+=`<blockquote>${Me(ne(g[1]))}</blockquote>`,f++;continue}d(),c.push(ne(p)),f++}return s&&(n+=`<pre><code>${ne(o.join(`
406
- `))}</code></pre>`),u(),d(),n}function Xe(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(Xe).join("");if(e&&typeof e=="object"){let t=e;if(typeof t.text=="string")return t.text;if(typeof t.content=="string")return t.content}return""}var ds=Qi(us(),1);var W=ds.default;function fs(e){let t=e.regex,n={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});let r={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},o=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),a={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,r]};r.contains.push(c);let u={match:/\\"/},d={className:"string",begin:/'/,end:/'/},f={match:/\\'/},p={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},g=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],b=e.SHEBANG({binary:`(${g.join("|")})`,relevance:10}),_={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},y=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],m=["true","false"],E={match:/(\/[a-z._-]+)+/},I=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],M=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],R=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],D=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:y,literal:m,built_in:[...I,...M,"set","shopt",...R,...D]},contains:[b,e.SHEBANG(),_,p,o,a,E,c,u,d,f,n]}}function ps(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},f={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},p={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},g={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},b=t.optional(r)+e.IDENT_RE+"\\s*\\(",m={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},E=[p,c,n,e.C_BLOCK_COMMENT_MODE,f,d],I={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:m,contains:E.concat([{begin:/\(/,end:/\)/,keywords:m,contains:E.concat(["self"]),relevance:0}]),relevance:0},M={begin:"("+a+"[\\*&\\s]+)+"+b,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:m,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:m,relevance:0},{begin:b,returnBegin:!0,contains:[e.inherit(g,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,d,f,c,{begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,d,f,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,p]};return{name:"C",aliases:["h"],keywords:m,disableAutodetect:!0,illegal:"</",contains:[].concat(I,M,E,[p,{begin:e.IDENT_RE+"::",keywords:m},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:p,strings:d,keywords:m}}}function gs(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="(?!struct)("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},f={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},p={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},g={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},b=t.optional(r)+e.IDENT_RE+"\\s*\\(",_=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],m=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],E=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],R={type:y,keyword:_,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:m},D={className:"function.dispatch",relevance:0,keywords:{_hint:E},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},x=[D,p,c,n,e.C_BLOCK_COMMENT_MODE,f,d],K={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:R,contains:x.concat([{begin:/\(/,end:/\)/,keywords:R,contains:x.concat(["self"]),relevance:0}]),relevance:0},P={className:"function",begin:"("+a+"[\\*&\\s]+)+"+b,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:R,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:R,relevance:0},{begin:b,returnBegin:!0,contains:[g],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[d,f]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:R,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,d,f,c,{begin:/\(/,end:/\)/,keywords:R,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,d,f,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,p]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:R,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(K,P,D,x,[p,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:R,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:R},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}var $o=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Uo=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],qo=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],Ko=[...Uo,...qo],zo=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),Go=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Wo=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Yo=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function ms(e){let t=e.regex,n=$o(e),s={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},r="and or not only",o=/@-?\w[\w]*(-\w+)*/,a="[a-zA-Z-][a-zA-Z0-9_-]*",c=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,s,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+a,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+Go.join("|")+")"},{begin:":(:)?("+Wo.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Yo.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...c,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...c,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:o},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:r,attribute:zo.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...c,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+Ko.join("|")+")\\b"}]}}function hs(e){return{name:"Dockerfile",aliases:["docker"],case_insensitive:!0,keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"],contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}function bs(e){let o={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:o,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:o,illegal:/["']/}]}]}}function Es(e){let t=e.regex,n={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let r={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},o={className:"literal",begin:/\bon|off|true|false|yes|no\b/},a={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[s,o,r,a,n,"self"],relevance:0},u=/[A-Za-z0-9_-]+/,d=/"(\\"|[^"])*"/,f=/'[^']*'/,p=t.either(u,d,f),g=t.concat(p,"(\\s*\\.\\s*",p,")*",t.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{begin:g,className:"attr",starts:{end:/$/,contains:[s,c,o,r,a,n]}}]}}var Le="[0-9](_*[0-9])*",_t=`\\.(${Le})`,yt="[0-9a-fA-F](_*[0-9a-fA-F])*",_s={className:"number",variants:[{begin:`(\\b(${Le})((${_t})|\\.)?|(${_t}))[eE][+-]?(${Le})[fFdD]?\\b`},{begin:`\\b(${Le})((${_t})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${_t})[fFdD]?\\b`},{begin:`\\b(${Le})[fFdD]\\b`},{begin:`\\b0[xX]((${yt})\\.?|(${yt})?\\.(${yt}))[pP][+-]?(${Le})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${yt})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function ys(e,t,n){return n===-1?"":e.replace(t,s=>ys(e,t,n-1))}function vs(e){let t=e.regex,n="[\xC0-\u02B8a-zA-Z_$][\xC0-\u02B8a-zA-Z_$0-9]*",s=n+ys("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),u={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},d={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},f={className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:u,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[t.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[f,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+s+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:u,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[d,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_s,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},_s,d]}}var ws="[A-Za-z$_][0-9A-Za-z$_]*",Qo=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Xo=["true","false","null","undefined","NaN","Infinity"],Ss=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Ts=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Is=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Vo=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Zo=[].concat(Is,Ss,Ts);function As(e){let t=e.regex,n=(S,{after:C})=>{let B="</"+S[0].slice(1);return S.input.indexOf(B,C)!==-1},s=ws,r={begin:"<>",end:"</>"},o=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(S,C)=>{let B=S[0].length+S.index,U=S.input[B];if(U==="<"||U===","){C.ignoreMatch();return}U===">"&&(n(S,{after:B})||C.ignoreMatch());let G,re=S.input.substring(B);if(G=re.match(/^\s*=/)){C.ignoreMatch();return}if((G=re.match(/^\s+extends\s+/))&&G.index===0){C.ignoreMatch();return}}},c={$pattern:ws,keyword:Qo,literal:Xo,built_in:Zo,"variable.language":Vo},u="[0-9](_?[0-9])*",d=`\\.(${u})`,f="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${f})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${f})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},b={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},_={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,g]},I={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},M=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,b,_,y,m,{match:/\$\d+/},p];g.contains=M.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(M)});let R=[].concat(I,g.contains),D=R.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(R)}]),x={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:D},K={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},P={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Ss,...Ts]}},z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[x],illegal:/%/},ae={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function se(S){return t.concat("(?!",S.join("|"),")")}let oe={match:t.concat(/\b/,se([...Is,"super","import"].map(S=>`${S}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Y={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Q={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},x]},h="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",T={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(h)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[x]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:D,CLASS_REFERENCE:P},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,b,_,y,m,I,{match:/\$\d+/},p,P,{scope:"attr",match:s+t.lookahead(":"),relevance:0},T,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[I,e.REGEXP_MODE,{className:"function",begin:h,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:D}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:o},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[x,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},Y,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[x]},oe,ae,K,Q,{match:/\$[(.]/}]}}function Ns(e){let t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},s=["true","false","null"],r={scope:"literal",beginKeywords:s.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:s},contains:[t,n,e.QUOTE_STRING_MODE,r,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var De="[0-9](_*[0-9])*",vt=`\\.(${De})`,wt="[0-9a-fA-F](_*[0-9a-fA-F])*",Jo={className:"number",variants:[{begin:`(\\b(${De})((${vt})|\\.)?|(${vt}))[eE][+-]?(${De})[fFdD]?\\b`},{begin:`\\b(${De})((${vt})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${vt})[fFdD]?\\b`},{begin:`\\b(${De})[fFdD]\\b`},{begin:`\\b0[xX]((${wt})\\.?|(${wt})?\\.(${wt}))[pP][+-]?(${De})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${wt})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function ks(e){let t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},s={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},o={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},a={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[o,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,o,r]}]};r.contains.push(a);let c={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},u={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(a,{className:"string"}),"self"]}]},d=Jo,f=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),p={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},g=p;return g.variants[1].contains=[p],p.variants[1].contains=[g],{name:"Kotlin",aliases:["kt","kts"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,f,n,s,c,u,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[p,e.C_LINE_COMMENT_MODE,f],relevance:0},e.C_LINE_COMMENT_MODE,f,c,u,a,e.C_NUMBER_MODE]},f]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},c,u]},a,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
407
- `},d]}}function xs(e){let t=e.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},s={begin:"^[-\\*]{3,}",end:"$"},r={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},o={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},a={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},c=/[A-Za-z][A-Za-z0-9+.-]*/,u={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:t.concat(/\[.+?\]\(/,c,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},d={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},f={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},p=e.inherit(d,{contains:[]}),g=e.inherit(f,{contains:[]});d.contains.push(g),f.contains.push(p);let b=[n,u];return[d,f,p,g].forEach(E=>{E.contains=E.contains.concat(b)}),b=b.concat(d,f),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:b},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:b}]}]},n,o,d,f,{className:"quote",begin:"^>\\s+",contains:b,end:"$"},r,s,u,a,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function Cs(e){let t=e.regex,n=/(?![A-Za-z0-9])(?![$])/,s=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),r=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),o=t.concat(/[A-Z]+/,n),a={scope:"variable",match:"\\$+"+s},c={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},u={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},d=e.inherit(e.APOS_STRING_MODE,{illegal:null}),f=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(u)}),p={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(u),"on:begin":(Y,Q)=>{Q.data._beginMatch=Y[1]||Y[2]},"on:end":(Y,Q)=>{Q.data._beginMatch!==Y[1]&&Q.ignoreMatch()}},g=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),b=`[
408
- ]`,_={scope:"string",variants:[f,d,p,g]},y={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},m=["false","null","true"],E=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],I=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],R={keyword:E,literal:(Y=>{let Q=[];return Y.forEach(h=>{Q.push(h),h.toLowerCase()===h?Q.push(h.toUpperCase()):Q.push(h.toLowerCase())}),Q})(m),built_in:I},D=Y=>Y.map(Q=>Q.replace(/\|\d+$/,"")),x={variants:[{match:[/new/,t.concat(b,"+"),t.concat("(?!",D(I).join("\\b|"),"\\b)"),r],scope:{1:"keyword",4:"title.class"}}]},K=t.concat(s,"\\b(?!\\()"),P={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),K],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[r,t.concat(/::/,t.lookahead(/(?!class\b)/)),K],scope:{1:"title.class",3:"variable.constant"}},{match:[r,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[r,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},z={scope:"attr",match:t.concat(s,t.lookahead(":"),t.lookahead(/(?!::)/))},j={relevance:0,begin:/\(/,end:/\)/,keywords:R,contains:[z,a,P,e.C_BLOCK_COMMENT_MODE,_,y,x]},ae={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",D(E).join("\\b|"),"|",D(I).join("\\b|"),"\\b)"),s,t.concat(b,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[j]};j.contains.push(ae);let se=[z,P,e.C_BLOCK_COMMENT_MODE,_,y,x],oe={begin:t.concat(/#\[\s*\\?/,t.either(r,o)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:m,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:m,keyword:["new","array"]},contains:["self",...se]},...se,{scope:"meta",variants:[{match:r},{match:o}]}]};return{case_insensitive:!1,keywords:R,contains:[oe,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},c,{scope:"variable.language",match:/\$this\b/},a,ae,P,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},x,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:R,contains:["self",oe,a,P,e.C_BLOCK_COMMENT_MODE,_,y]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},_,y]}}function Ms(e){let t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],c={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},u={className:"meta",begin:/^(>>>|\.\.\.) /},d={className:"subst",begin:/\{/,end:/\}/,keywords:c,illegal:/#/},f={begin:/\{\{/,relevance:0},p={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,u,f,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,u,f,d]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,f,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,f,d]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},g="[0-9](_?[0-9])*",b=`(\\b(${g}))?\\.(${g})|\\b(${g})\\.`,_=`\\b|${s.join("|")}`,y={className:"number",relevance:0,variants:[{begin:`(\\b(${g})|(${b}))[eE][+-]?(${g})[jJ]?(?=${_})`},{begin:`(${b})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${_})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${_})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${_})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${_})`},{begin:`\\b(${g})[jJ](?=${_})`}]},m={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:c,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},E={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:["self",u,y,p,e.HASH_COMMENT_MODE]}]};return d.contains=[p,y,u],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:c,illegal:/(<\/|\?)|=>/,contains:[u,y,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},p,m,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[E]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[y,E,p]}]}}function Rs(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),r=t.concat(s,/(::\w+)*/),a={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},c={className:"doctag",begin:"@[A-Za-z]+"},u={begin:"#<",end:">"},d=[e.COMMENT("#","$",{contains:[c]}),e.COMMENT("^=begin","^=end",{contains:[c],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],f={className:"subst",begin:/#\{/,end:/\}/,keywords:a},p={className:"string",contains:[e.BACKSLASH_ESCAPE,f],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,f]})]}]},g="[1-9](_?[0-9])*|0",b="[0-9](_?[0-9])*",_={className:"number",relevance:0,variants:[{begin:`\\b(${g})(\\.(${b}))?([eE][+-]?(${b})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},y={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:a}]},x=[p,{variants:[{match:[/class\s+/,r,/\s+<\s+/,r]},{match:[/\b(class|module)\s+/,r]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:a},{match:[/(include|extend)\s+/,r],scope:{2:"title.class"},keywords:a},{relevance:0,match:[r,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:s,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[y]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[p,{begin:n}],relevance:0},_,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,f],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(u,d),relevance:0}].concat(u,d);f.contains=x,y.contains=x;let j=[{begin:/^\s*=>/,starts:{end:"$",contains:x}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:a,contains:x}}];return d.unshift(u),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(j).concat(d).concat(x)}}function Os(e){let t=e.regex,n=/(r#)?/,s=t.concat(n,e.UNDERSCORE_IDENT_RE),r=t.concat(n,e.IDENT_RE),o={className:"title.function.invoke",relevance:0,begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,r,t.lookahead(/\s*\(/))},a="([ui](8|16|32|64|128|size)|f(32|64))?",c=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],u=["true","false","Some","None","Ok","Err"],d=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],f=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:f,keyword:c,literal:u,built_in:d},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{begin:"\\b0x([A-Fa-f0-9_]+)"+a},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{begin:[/fn/,/\s+/,s],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:d,type:f}},{className:"punctuation",begin:"->"},o]}}function Ls(e){let t=e.regex,n=e.COMMENT("--","$"),s={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},r={begin:/"/,end:/"/,contains:[{match:/""/}]},o=["true","false","unknown"],a=["double precision","large object","with timezone","without timezone"],c=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],u=["add","asc","collation","desc","final","first","last","view"],d=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],f=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],p=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],g=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],b=f,_=[...d,...u].filter(D=>!f.includes(D)),y={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},m={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},E={match:t.concat(/\b/,t.either(...b),/\s*\(/),relevance:0,keywords:{built_in:b}};function I(D){return t.concat(/\b/,t.either(...D.map(x=>x.replace(/\s+/,"\\s+"))),/\b/)}let M={scope:"keyword",match:I(g),relevance:0};function R(D,{exceptions:x,when:K}={}){let P=K;return x=x||[],D.map(z=>z.match(/\|\d+$/)||x.includes(z)?z:P(z)?`${z}|0`:z)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:R(_,{when:D=>D.length<3}),literal:o,type:c,built_in:p},contains:[{scope:"type",match:I(a)},M,E,y,s,r,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,m]}}function Fs(e){return e?typeof e=="string"?e:e.source:null}function Je(e){return $("(?=",e,")")}function $(...e){return e.map(n=>Fs(n)).join("")}function jo(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function J(...e){return"("+(jo(e).capture?"":"?:")+e.map(s=>Fs(s)).join("|")+")"}var mn=e=>$(/\b/,e,/\w$/.test(e)?/\b/:/\B/),ea=["Protocol","Type"].map(mn),Ds=["init","self"].map(mn),ta=["Any","Self"],pn=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],Ps=["false","nil","true"],na=["assignment","associativity","higherThan","left","lowerThan","none","right"],sa=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],Bs=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Hs=J(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),$s=J(Hs,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),gn=$(Hs,$s,"*"),Us=J(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Tt=J(Us,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),ce=$(Us,Tt,"*"),St=$(/[A-Z]/,Tt,"*"),ra=["attached","autoclosure",$(/convention\(/,J("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",$(/objc\(/,ce,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],ia=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function qs(e){let t={match:/\s+/,relevance:0},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,n],r={match:[/\./,J(...ea,...Ds)],className:{2:"keyword"}},o={match:$(/\./,J(...pn)),relevance:0},a=pn.filter(H=>typeof H=="string").concat(["_|0"]),c=pn.filter(H=>typeof H!="string").concat(ta).map(mn),u={variants:[{className:"keyword",match:J(...c,...Ds)}]},d={$pattern:J(/\b\w+/,/#\w+/),keyword:a.concat(sa),literal:Ps},f=[r,o,u],p={match:$(/\./,J(...Bs)),relevance:0},g={className:"built_in",match:$(/\b/,J(...Bs),/(?=\()/)},b=[p,g],_={match:/->/,relevance:0},y={className:"operator",relevance:0,variants:[{match:gn},{match:`\\.(\\.|${$s})+`}]},m=[_,y],E="([0-9]_*)+",I="([0-9a-fA-F]_*)+",M={className:"number",relevance:0,variants:[{match:`\\b(${E})(\\.(${E}))?([eE][+-]?(${E}))?\\b`},{match:`\\b0x(${I})(\\.(${I}))?([pP][+-]?(${E}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},R=(H="")=>({className:"subst",variants:[{match:$(/\\/,H,/[0\\tnr"']/)},{match:$(/\\/,H,/u\{[0-9a-fA-F]{1,8}\}/)}]}),D=(H="")=>({className:"subst",match:$(/\\/,H,/[\t ]*(?:[\r\n]|\r\n)/)}),x=(H="")=>({className:"subst",label:"interpol",begin:$(/\\/,H,/\(/),end:/\)/}),K=(H="")=>({begin:$(H,/"""/),end:$(/"""/,H),contains:[R(H),D(H),x(H)]}),P=(H="")=>({begin:$(H,/"/),end:$(/"/,H),contains:[R(H),x(H)]}),z={className:"string",variants:[K(),K("#"),K("##"),K("###"),P(),P("#"),P("##"),P("###")]},j=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],ae={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:j},se=H=>{let fe=$(H,/\//),k=$(/\//,H);return{begin:fe,end:k,contains:[...j,{scope:"comment",begin:`#(?!.*${k})`,end:/$/}]}},oe={scope:"regexp",variants:[se("###"),se("##"),se("#"),ae]},Y={match:$(/`/,ce,/`/)},Q={className:"variable",match:/\$\d+/},h={className:"variable",match:`\\$${Tt}+`},T=[Y,Q,h],S={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:ia,contains:[...m,M,z]}]}},C={scope:"keyword",match:$(/@/,J(...ra),Je(J(/\(/,/\s+/)))},B={scope:"meta",match:$(/@/,ce)},U=[S,C,B],G={match:Je(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:$(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Tt,"+")},{className:"type",match:St,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:$(/\s+&\s+/,Je(St)),relevance:0}]},re={begin:/</,end:/>/,keywords:d,contains:[...s,...f,...U,_,G]};G.contains.push(re);let Z={match:$(ce,/\s*:/),keywords:"_|0",relevance:0},te={begin:/\(/,end:/\)/,relevance:0,keywords:d,contains:["self",Z,...s,oe,...f,...b,...m,M,z,...T,...U,G]},xe={begin:/</,end:/>/,keywords:"repeat each",contains:[...s,G]},dt={begin:J(Je($(ce,/\s*:/)),Je($(ce,/\s+/,ce,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:ce}]},Qe={begin:/\(/,end:/\)/,keywords:d,contains:[dt,...s,...f,...m,M,z,...U,G,te],endsParent:!0,illegal:/["']/},Vt={match:[/(func|macro)/,/\s+/,J(Y.match,ce,gn)],className:{1:"keyword",3:"title.function"},contains:[xe,Qe,t],illegal:[/\[/,/%/]},Zt={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[xe,Qe,t],illegal:/\[|%/},Jt={match:[/operator/,/\s+/,gn],className:{1:"keyword",3:"title"}},jt={begin:[/precedencegroup/,/\s+/,St],className:{1:"keyword",3:"title"},contains:[G],keywords:[...na,...Ps],end:/}/},Ce={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},ft={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},ie={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,ce,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:d,contains:[xe,...f,{begin:/:/,end:/\{/,keywords:d,contains:[{scope:"title.class.inherited",match:St},...f],relevance:0}]};for(let H of z.variants){let fe=H.contains.find(pt=>pt.label==="interpol");fe.keywords=d;let k=[...f,...b,...m,M,z,...T];fe.contains=[...k,{begin:/\(/,end:/\)/,contains:["self",...k]}]}return{name:"Swift",keywords:d,contains:[...s,Vt,Zt,Ce,ft,ie,Jt,jt,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},oe,...f,...b,...m,M,z,...T,...U,G,te]}}var It="[A-Za-z$_][0-9A-Za-z$_]*",Ks=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],zs=["true","false","null","undefined","NaN","Infinity"],Gs=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Ws=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Ys=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Qs=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Xs=[].concat(Ys,Gs,Ws);function oa(e){let t=e.regex,n=(S,{after:C})=>{let B="</"+S[0].slice(1);return S.input.indexOf(B,C)!==-1},s=It,r={begin:"<>",end:"</>"},o=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(S,C)=>{let B=S[0].length+S.index,U=S.input[B];if(U==="<"||U===","){C.ignoreMatch();return}U===">"&&(n(S,{after:B})||C.ignoreMatch());let G,re=S.input.substring(B);if(G=re.match(/^\s*=/)){C.ignoreMatch();return}if((G=re.match(/^\s+extends\s+/))&&G.index===0){C.ignoreMatch();return}}},c={$pattern:It,keyword:Ks,literal:zs,built_in:Xs,"variable.language":Qs},u="[0-9](_?[0-9])*",d=`\\.(${u})`,f="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${f})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${f})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},b={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},_={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,g]},I={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},M=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,b,_,y,m,{match:/\$\d+/},p];g.contains=M.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(M)});let R=[].concat(I,g.contains),D=R.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(R)}]),x={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:D},K={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},P={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Gs,...Ws]}},z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[x],illegal:/%/},ae={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function se(S){return t.concat("(?!",S.join("|"),")")}let oe={match:t.concat(/\b/,se([...Ys,"super","import"].map(S=>`${S}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Y={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Q={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},x]},h="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",T={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(h)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[x]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:D,CLASS_REFERENCE:P},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,b,_,y,m,I,{match:/\$\d+/},p,P,{scope:"attr",match:s+t.lookahead(":"),relevance:0},T,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[I,e.REGEXP_MODE,{className:"function",begin:h,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:D}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:o},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[x,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},Y,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[x]},oe,ae,K,Q,{match:/\$[(.]/}]}}function Vs(e){let t=e.regex,n=oa(e),s=It,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],o={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},a={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[n.exports.CLASS_REFERENCE]},c={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},u=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],d={$pattern:It,keyword:Ks.concat(u),literal:zs,built_in:Xs.concat(r),"variable.language":Qs},f={className:"meta",begin:"@"+s},p=(y,m,E)=>{let I=y.contains.findIndex(M=>M.label===m);if(I===-1)throw new Error("can not find mode to replace");y.contains.splice(I,1,E)};Object.assign(n.keywords,d),n.exports.PARAMS_CONTAINS.push(f);let g=n.contains.find(y=>y.scope==="attr"),b=Object.assign({},g,{match:t.concat(s,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,g,b]),n.contains=n.contains.concat([f,o,a,b]),p(n,"shebang",e.SHEBANG()),p(n,"use_strict",c);let _=n.contains.find(y=>y.label==="func.def");return _.relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}function Zs(e){let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s=/[\p{L}0-9._:-]+/u,r={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},a=e.inherit(o,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{className:"string"}),u=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),d={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[o,u,c,a,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[o,a,u,c]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[u]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[d],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[d],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:d}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function Js(e){let t="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},r={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},o={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},a={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,r]},c=e.inherit(a,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),g={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},b={end:",",endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},_={begin:/\{/,end:/\}/,contains:[b],illegal:"\\n",relevance:0},y={begin:"\\[",end:"\\]",contains:[b],illegal:"\\n",relevance:0},m=[s,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},g,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},_,y,o,a],E=[...m];return E.pop(),E.push(c),b.contains=E,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:m}}W.registerLanguage("bash",fs);W.registerLanguage("c",ps);W.registerLanguage("cpp",gs);W.registerLanguage("css",ms);W.registerLanguage("dockerfile",hs);W.registerLanguage("go",bs);W.registerLanguage("ini",Es);W.registerLanguage("java",vs);W.registerLanguage("javascript",As);W.registerLanguage("json",Ns);W.registerLanguage("kotlin",ks);W.registerLanguage("markdown",xs);W.registerLanguage("php",Cs);W.registerLanguage("python",Ms);W.registerLanguage("ruby",Rs);W.registerLanguage("rust",Os);W.registerLanguage("sql",Ls);W.registerLanguage("swift",qs);W.registerLanguage("typescript",Vs);W.registerLanguage("xml",Zs);W.registerLanguage("yaml",Js);var aa={bash:"bash",sh:"bash",zsh:"bash",c:"c",h:"c",cc:"cpp",cpp:"cpp",cxx:"cpp",hpp:"cpp",hxx:"cpp",css:"css",dockerfile:"dockerfile",go:"go",ini:"ini",toml:"ini",java:"java",cjs:"javascript",js:"javascript",jsx:"javascript",mjs:"javascript",json:"json",jsonc:"json",kt:"kotlin",kts:"kotlin",md:"markdown",markdown:"markdown",php:"php",py:"python",rb:"ruby",rs:"rust",sql:"sql",swift:"swift",cts:"typescript",mts:"typescript",ts:"typescript",tsx:"typescript",htm:"xml",html:"xml",svg:"xml",xml:"xml",yaml:"yaml",yml:"yaml"};function js(e,t){let n=t.split(".").pop()?.toLowerCase()??"",s=aa[n]??(t.toLowerCase()==="dockerfile"?"dockerfile":null);return s?W.highlight(e,{language:s}).value:null}function er(e){let t=e.content;if(Array.isArray(t))for(let s of t){if(!s||typeof s!="object")continue;let r=s;if(r.type!=="diff")continue;let o=typeof r.oldText=="string"?r.oldText:void 0,a=typeof r.newText=="string"?r.newText:void 0;if(o===void 0&&a===void 0)continue;let c=typeof r.path=="string"?r.path:void 0;return{...c!==void 0?{path:c}:{},oldText:o??"",newText:a??""}}let n=e.rawInput;if(n&&typeof n=="object"&&!Array.isArray(n)){let s=n,r=typeof s.file_path=="string"?s.file_path:typeof s.path=="string"?s.path:void 0;if(typeof s.old_string=="string"&&typeof s.new_string=="string")return{...r!==void 0?{path:r}:{},oldText:s.old_string,newText:s.new_string};if(typeof s.content=="string")return{...r!==void 0?{path:r}:{},oldText:"",newText:s.content}}return null}function tr(e){let t=e.oldText.split(`
456
+ <script nonce="__CSP_NONCE__">"use strict";(()=>{var lo=Object.create;var Yn=Object.defineProperty;var uo=Object.getOwnPropertyDescriptor;var fo=Object.getOwnPropertyNames;var po=Object.getPrototypeOf,go=Object.prototype.hasOwnProperty;var mo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ho=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of fo(t))!go.call(e,r)&&r!==n&&Yn(e,r,{get:()=>t[r],enumerable:!(s=uo(t,r))||s.enumerable});return e};var bo=(e,t,n)=>(n=e!=null?lo(po(e)):{},ho(t||!e||!e.__esModule?Yn(n,"default",{value:e,enumerable:!0}):n,e));var Es=mo((Gl,bs)=>{function is(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],s=typeof n;(s==="object"||s==="function")&&!Object.isFrozen(n)&&is(n)}),e}var Et=class{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function os(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function he(e,...t){let n=Object.create(null);for(let s in e)n[s]=e[s];return t.forEach(function(s){for(let r in s)n[r]=s[r]}),n}var Eo="</span>",jn=e=>!!e.scope,yo=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((s,r)=>`${s}${"_".repeat(r+1)}`)].join(" ")}return`${t}${e}`},dn=class{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=os(t)}openNode(t){if(!jn(t))return;let n=yo(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){jn(t)&&(this.buffer+=Eo)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}},es=(e={})=>{let t={children:[]};return Object.assign(t,e),t},fn=class e{constructor(){this.rootNode=es(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){let n=es({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(s=>this._walk(t,s)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{e._collapse(n)}))}},pn=class extends fn{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let s=t.root;n&&(s.scope=`language:${n}`),this.add(s)}toHTML(){return new dn(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function Ve(e){return e?typeof e=="string"?e:e.source:null}function as(e){return we("(?=",e,")")}function _o(e){return we("(?:",e,")*")}function vo(e){return we("(?:",e,")?")}function we(...e){return e.map(n=>Ve(n)).join("")}function wo(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function mn(...e){return"("+(wo(e).capture?"":"?:")+e.map(s=>Ve(s)).join("|")+")"}function cs(e){return new RegExp(e.toString()+"|").exec("").length-1}function So(e,t){let n=e&&e.exec(t);return n&&n.index===0}var To=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function hn(e,{joinWith:t}){let n=0;return e.map(s=>{n+=1;let r=n,o=Ve(s),a="";for(;o.length>0;){let c=To.exec(o);if(!c){a+=o;break}a+=o.substring(0,c.index),o=o.substring(c.index+c[0].length),c[0][0]==="\\"&&c[1]?a+="\\"+String(Number(c[1])+r):(a+=c[0],c[0]==="("&&n++)}return a}).map(s=>`(${s})`).join(t)}var Io=/\b\B/,ls="[a-zA-Z]\\w*",bn="[a-zA-Z_]\\w*",us="\\b\\d+(\\.\\d+)?",ds="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",fs="\\b(0b[01]+)",Ao="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",No=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=we(t,/.*\b/,e.binary,/\b.*/)),he({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,s)=>{n.index!==0&&s.ignoreMatch()}},e)},Ze={begin:"\\\\[\\s\\S]",relevance:0},ko={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Ze]},xo={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Ze]},Co={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},_t=function(e,t,n={}){let s=he({scope:"comment",begin:e,end:t,contains:[]},n);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let r=mn("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:we(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},Mo=_t("//","$"),Ro=_t("/\\*","\\*/"),Oo=_t("#","$"),Lo={scope:"number",begin:us,relevance:0},Do={scope:"number",begin:ds,relevance:0},Po={scope:"number",begin:fs,relevance:0},Bo={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Ze,{begin:/\[/,end:/\]/,relevance:0,contains:[Ze]}]},Fo={scope:"title",begin:ls,relevance:0},Ho={scope:"title",begin:bn,relevance:0},Uo={begin:"\\.\\s*"+bn,relevance:0},$o=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},bt=Object.freeze({__proto__:null,APOS_STRING_MODE:ko,BACKSLASH_ESCAPE:Ze,BINARY_NUMBER_MODE:Po,BINARY_NUMBER_RE:fs,COMMENT:_t,C_BLOCK_COMMENT_MODE:Ro,C_LINE_COMMENT_MODE:Mo,C_NUMBER_MODE:Do,C_NUMBER_RE:ds,END_SAME_AS_BEGIN:$o,HASH_COMMENT_MODE:Oo,IDENT_RE:ls,MATCH_NOTHING_RE:Io,METHOD_GUARD:Uo,NUMBER_MODE:Lo,NUMBER_RE:us,PHRASAL_WORDS_MODE:Co,QUOTE_STRING_MODE:xo,REGEXP_MODE:Bo,RE_STARTERS_RE:Ao,SHEBANG:No,TITLE_MODE:Fo,UNDERSCORE_IDENT_RE:bn,UNDERSCORE_TITLE_MODE:Ho});function qo(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function Ko(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function zo(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=qo,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Go(e,t){Array.isArray(e.illegal)&&(e.illegal=mn(...e.illegal))}function Wo(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Yo(e,t){e.relevance===void 0&&(e.relevance=1)}var Qo=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(s=>{delete e[s]}),e.keywords=n.keywords,e.begin=we(n.beforeMatch,as(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Xo=["of","and","for","in","not","or","if","then","parent","list","value"],Vo="keyword";function ps(e,t,n=Vo){let s=Object.create(null);return typeof e=="string"?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(o){Object.assign(s,ps(e[o],t,o))}),s;function r(o,a){t&&(a=a.map(c=>c.toLowerCase())),a.forEach(function(c){let u=c.split("|");s[u[0]]=[o,Zo(u[0],u[1])]})}}function Zo(e,t){return t?Number(t):Jo(e)?0:1}function Jo(e){return Xo.includes(e.toLowerCase())}var ts={},ve=e=>{console.error(e)},ns=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Me=(e,t)=>{ts[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),ts[`${e}/${t}`]=!0)},yt=new Error;function gs(e,t,{key:n}){let s=0,r=e[n],o={},a={};for(let c=1;c<=t.length;c++)a[c+s]=r[c],o[c+s]=!0,s+=cs(t[c-1]);e[n]=a,e[n]._emit=o,e[n]._multi=!0}function jo(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw ve("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),yt;if(typeof e.beginScope!="object"||e.beginScope===null)throw ve("beginScope must be object"),yt;gs(e,e.begin,{key:"beginScope"}),e.begin=hn(e.begin,{joinWith:""})}}function ea(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw ve("skip, excludeEnd, returnEnd not compatible with endScope: {}"),yt;if(typeof e.endScope!="object"||e.endScope===null)throw ve("endScope must be object"),yt;gs(e,e.end,{key:"endScope"}),e.end=hn(e.end,{joinWith:""})}}function ta(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function na(e){ta(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),jo(e),ea(e)}function sa(e){function t(a,c){return new RegExp(Ve(a),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(c?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(c,u){u.position=this.position++,this.matchIndexes[this.matchAt]=u,this.regexes.push([u,c]),this.matchAt+=cs(c)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let c=this.regexes.map(u=>u[1]);this.matcherRe=t(hn(c,{joinWith:"|"}),!0),this.lastIndex=0}exec(c){this.matcherRe.lastIndex=this.lastIndex;let u=this.matcherRe.exec(c);if(!u)return null;let d=u.findIndex((p,g)=>g>0&&p!==void 0),f=this.matchIndexes[d];return u.splice(0,d),Object.assign(u,f)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(c){if(this.multiRegexes[c])return this.multiRegexes[c];let u=new n;return this.rules.slice(c).forEach(([d,f])=>u.addRule(d,f)),u.compile(),this.multiRegexes[c]=u,u}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(c,u){this.rules.push([c,u]),u.type==="begin"&&this.count++}exec(c){let u=this.getMatcher(this.regexIndex);u.lastIndex=this.lastIndex;let d=u.exec(c);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let f=this.getMatcher(0);f.lastIndex=this.lastIndex+1,d=f.exec(c)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function r(a){let c=new s;return a.contains.forEach(u=>c.addRule(u.begin,{rule:u,type:"begin"})),a.terminatorEnd&&c.addRule(a.terminatorEnd,{type:"end"}),a.illegal&&c.addRule(a.illegal,{type:"illegal"}),c}function o(a,c){let u=a;if(a.isCompiled)return u;[Ko,Wo,na,Qo].forEach(f=>f(a,c)),e.compilerExtensions.forEach(f=>f(a,c)),a.__beforeBegin=null,[zo,Go,Yo].forEach(f=>f(a,c)),a.isCompiled=!0;let d=null;return typeof a.keywords=="object"&&a.keywords.$pattern&&(a.keywords=Object.assign({},a.keywords),d=a.keywords.$pattern,delete a.keywords.$pattern),d=d||/\w+/,a.keywords&&(a.keywords=ps(a.keywords,e.case_insensitive)),u.keywordPatternRe=t(d,!0),c&&(a.begin||(a.begin=/\B|\b/),u.beginRe=t(u.begin),!a.end&&!a.endsWithParent&&(a.end=/\B|\b/),a.end&&(u.endRe=t(u.end)),u.terminatorEnd=Ve(u.end)||"",a.endsWithParent&&c.terminatorEnd&&(u.terminatorEnd+=(a.end?"|":"")+c.terminatorEnd)),a.illegal&&(u.illegalRe=t(a.illegal)),a.contains||(a.contains=[]),a.contains=[].concat(...a.contains.map(function(f){return ra(f==="self"?a:f)})),a.contains.forEach(function(f){o(f,u)}),a.starts&&o(a.starts,c),u.matcher=r(u),u}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=he(e.classNameAliases||{}),o(e)}function ms(e){return e?e.endsWithParent||ms(e.starts):!1}function ra(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return he(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:ms(e)?he(e,{starts:e.starts?he(e.starts):null}):Object.isFrozen(e)?he(e):e}var ia="11.11.1",gn=class extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}},un=os,ss=he,rs=Symbol("nomatch"),oa=7,hs=function(e){let t=Object.create(null),n=Object.create(null),s=[],r=!0,o="Could not find the language '{}', did you forget to load/include a language module?",a={disableAutodetect:!0,name:"Plain text",contains:[]},c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:pn};function u(h){return c.noHighlightRe.test(h)}function d(h){let T=h.className+" ";T+=h.parentNode?h.parentNode.className:"";let S=c.languageDetectRe.exec(T);if(S){let C=P(S[1]);return C||(ns(o.replace("{}",S[1])),ns("Falling back to no-highlight mode for this block.",h)),C?S[1]:"no-highlight"}return T.split(/\s+/).find(C=>u(C)||P(C))}function f(h,T,S){let C="",B="";typeof T=="object"?(C=h,S=T.ignoreIllegals,B=T.language):(Me("10.7.0","highlight(lang, code, ...args) has been deprecated."),Me("10.7.0",`Please use highlight(code, options) instead.
457
+ https://github.com/highlightjs/highlight.js/issues/2277`),B=h,C=T),S===void 0&&(S=!0);let $={code:C,language:B};Y("before:highlight",$);let G=$.result?$.result:p($.language,$.code,S);return G.code=$.code,Y("after:highlight",G),G}function p(h,T,S,C){let B=Object.create(null);function $(v,N){return v.keywords[N]}function G(){if(!k.keywords){X.addText(q);return}let v=0;k.keywordPatternRe.lastIndex=0;let N=k.keywordPatternRe.exec(q),L="";for(;N;){L+=q.substring(v,N.index);let F=re.case_insensitive?N[0].toLowerCase():N[0],V=$(k,F);if(V){let[de,ao]=V;if(X.addText(L),L="",B[F]=(B[F]||0)+1,B[F]<=oa&&(ht+=ao),de.startsWith("_"))L+=N[0];else{let co=re.classNameAliases[de]||de;te(N[0],co)}}else L+=N[0];v=k.keywordPatternRe.lastIndex,N=k.keywordPatternRe.exec(q)}L+=q.substring(v),X.addText(L)}function se(){if(q==="")return;let v=null;if(typeof k.subLanguage=="string"){if(!t[k.subLanguage]){X.addText(q);return}v=p(k.subLanguage,q,!0,mt[k.subLanguage]),mt[k.subLanguage]=v._top}else v=b(q,k.subLanguage.length?k.subLanguage:null);k.relevance>0&&(ht+=v.relevance),X.__addSublanguage(v._emitter,v.language)}function Z(){k.subLanguage!=null?se():G(),q=""}function te(v,N){v!==""&&(X.startScope(N),X.addText(v),X.endScope())}function xe(v,N){let L=1,F=N.length-1;for(;L<=F;){if(!v._emit[L]){L++;continue}let V=re.classNameAliases[v[L]]||v[L],de=N[L];V?te(de,V):(q=de,G(),q=""),L++}}function pt(v,N){return v.scope&&typeof v.scope=="string"&&X.openNode(re.classNameAliases[v.scope]||v.scope),v.beginScope&&(v.beginScope._wrap?(te(q,re.classNameAliases[v.beginScope._wrap]||v.beginScope._wrap),q=""):v.beginScope._multi&&(xe(v.beginScope,N),q="")),k=Object.create(v,{parent:{value:k}}),k}function Xe(v,N,L){let F=So(v.endRe,L);if(F){if(v["on:end"]){let V=new Et(v);v["on:end"](N,V),V.isMatchIgnored&&(F=!1)}if(F){for(;v.endsParent&&v.parent;)v=v.parent;return v}}if(v.endsWithParent)return Xe(v.parent,N,L)}function nn(v){return k.matcher.regexIndex===0?(q+=v[0],1):(cn=!0,0)}function sn(v){let N=v[0],L=v.rule,F=new Et(L),V=[L.__beforeBegin,L["on:begin"]];for(let de of V)if(de&&(de(v,F),F.isMatchIgnored))return nn(N);return L.skip?q+=N:(L.excludeBegin&&(q+=N),Z(),!L.returnBegin&&!L.excludeBegin&&(q=N)),pt(L,v),L.returnBegin?0:N.length}function rn(v){let N=v[0],L=T.substring(v.index),F=Xe(k,v,L);if(!F)return rs;let V=k;k.endScope&&k.endScope._wrap?(Z(),te(N,k.endScope._wrap)):k.endScope&&k.endScope._multi?(Z(),xe(k.endScope,v)):V.skip?q+=N:(V.returnEnd||V.excludeEnd||(q+=N),Z(),V.excludeEnd&&(q=N));do k.scope&&X.closeNode(),!k.skip&&!k.subLanguage&&(ht+=k.relevance),k=k.parent;while(k!==F.parent);return F.starts&&pt(F.starts,v),V.returnEnd?0:N.length}function on(){let v=[];for(let N=k;N!==re;N=N.parent)N.scope&&v.unshift(N.scope);v.forEach(N=>X.openNode(N))}let Ce={};function gt(v,N){let L=N&&N[0];if(q+=v,L==null)return Z(),0;if(Ce.type==="begin"&&N.type==="end"&&Ce.index===N.index&&L===""){if(q+=T.slice(N.index,N.index+1),!r){let F=new Error(`0 width match regex (${h})`);throw F.languageName=h,F.badRule=Ce.rule,F}return 1}if(Ce=N,N.type==="begin")return sn(N);if(N.type==="illegal"&&!S){let F=new Error('Illegal lexeme "'+L+'" for mode "'+(k.scope||"<unnamed>")+'"');throw F.mode=k,F}else if(N.type==="end"){let F=rn(N);if(F!==rs)return F}if(N.type==="illegal"&&L==="")return q+=`
458
+ `,1;if(an>1e5&&an>N.index*3)throw new Error("potential infinite loop, way more iterations than matches");return q+=L,L.length}let re=P(h);if(!re)throw ve(o.replace("{}",h)),new Error('Unknown language: "'+h+'"');let H=sa(re),ge="",k=C||H,mt={},X=new c.__emitter(c);on();let q="",ht=0,_e=0,an=0,cn=!1;try{if(re.__emitTokens)re.__emitTokens(T,X);else{for(k.matcher.considerAll();;){an++,cn?cn=!1:k.matcher.considerAll(),k.matcher.lastIndex=_e;let v=k.matcher.exec(T);if(!v)break;let N=T.substring(_e,v.index),L=gt(N,v);_e=v.index+L}gt(T.substring(_e))}return X.finalize(),ge=X.toHTML(),{language:h,value:ge,relevance:ht,illegal:!1,_emitter:X,_top:k}}catch(v){if(v.message&&v.message.includes("Illegal"))return{language:h,value:un(T),illegal:!0,relevance:0,_illegalBy:{message:v.message,index:_e,context:T.slice(_e-100,_e+100),mode:v.mode,resultSoFar:ge},_emitter:X};if(r)return{language:h,value:un(T),illegal:!1,relevance:0,errorRaised:v,_emitter:X,_top:k};throw v}}function g(h){let T={value:un(h),illegal:!1,relevance:0,_top:a,_emitter:new c.__emitter(c)};return T._emitter.addText(h),T}function b(h,T){T=T||c.languages||Object.keys(t);let S=g(h),C=T.filter(P).filter(j).map(Z=>p(Z,h,!1));C.unshift(S);let B=C.sort((Z,te)=>{if(Z.relevance!==te.relevance)return te.relevance-Z.relevance;if(Z.language&&te.language){if(P(Z.language).supersetOf===te.language)return 1;if(P(te.language).supersetOf===Z.language)return-1}return 0}),[$,G]=B,se=$;return se.secondBest=G,se}function y(h,T,S){let C=T&&n[T]||S;h.classList.add("hljs"),h.classList.add(`language-${C}`)}function _(h){let T=null,S=d(h);if(u(S))return;if(Y("before:highlightElement",{el:h,language:S}),h.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",h);return}if(h.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(h)),c.throwUnescapedHTML))throw new gn("One of your code blocks includes unescaped HTML.",h.innerHTML);T=h;let C=T.textContent,B=S?f(C,{language:S,ignoreIllegals:!0}):b(C);h.innerHTML=B.value,h.dataset.highlighted="yes",y(h,S,B.language),h.result={language:B.language,re:B.relevance,relevance:B.relevance},B.secondBest&&(h.secondBest={language:B.secondBest.language,relevance:B.secondBest.relevance}),Y("after:highlightElement",{el:h,result:B,text:C})}function m(h){c=ss(c,h)}let E=()=>{O(),Me("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function A(){O(),Me("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let R=!1;function O(){function h(){O()}if(document.readyState==="loading"){R||window.addEventListener("DOMContentLoaded",h,!1),R=!0;return}document.querySelectorAll(c.cssSelector).forEach(_)}function D(h,T){let S=null;try{S=T(e)}catch(C){if(ve("Language definition for '{}' could not be registered.".replace("{}",h)),r)ve(C);else throw C;S=a}S.name||(S.name=h),t[h]=S,S.rawDefinition=T.bind(null,e),S.aliases&&z(S.aliases,{languageName:h})}function x(h){delete t[h];for(let T of Object.keys(n))n[T]===h&&delete n[T]}function K(){return Object.keys(t)}function P(h){return h=(h||"").toLowerCase(),t[h]||t[n[h]]}function z(h,{languageName:T}){typeof h=="string"&&(h=[h]),h.forEach(S=>{n[S.toLowerCase()]=T})}function j(h){let T=P(h);return T&&!T.disableAutodetect}function ce(h){h["before:highlightBlock"]&&!h["before:highlightElement"]&&(h["before:highlightElement"]=T=>{h["before:highlightBlock"](Object.assign({block:T.el},T))}),h["after:highlightBlock"]&&!h["after:highlightElement"]&&(h["after:highlightElement"]=T=>{h["after:highlightBlock"](Object.assign({block:T.el},T))})}function ne(h){ce(h),s.push(h)}function ae(h){let T=s.indexOf(h);T!==-1&&s.splice(T,1)}function Y(h,T){let S=h;s.forEach(function(C){C[S]&&C[S](T)})}function Q(h){return Me("10.7.0","highlightBlock will be removed entirely in v12.0"),Me("10.7.0","Please use highlightElement now."),_(h)}Object.assign(e,{highlight:f,highlightAuto:b,highlightAll:O,highlightElement:_,highlightBlock:Q,configure:m,initHighlighting:E,initHighlightingOnLoad:A,registerLanguage:D,unregisterLanguage:x,listLanguages:K,getLanguage:P,registerAliases:z,autoDetection:j,inherit:ss,addPlugin:ne,removePlugin:ae}),e.debugMode=function(){r=!1},e.safeMode=function(){r=!0},e.versionString=ia,e.regex={concat:we,lookahead:as,either:mn,optional:vo,anyNumberOfTimes:_o};for(let h in bt)typeof bt[h]=="object"&&is(bt[h]);return Object.assign(e,bt),e},Re=hs({});Re.newInstance=()=>hs({});bs.exports=Re;Re.HighlightJS=Re;Re.default=Re});function l(e,t,...n){let s=document.createElement(e);if(t)for(let[r,o]of Object.entries(t))o==null||o===!1||(r==="class"?s.className=o:r.startsWith("on")&&typeof o=="function"?s.addEventListener(r.slice(2).toLowerCase(),o):r==="html"?s.innerHTML=o:s.setAttribute(r,String(o)));for(let r of n)if(!(r==null||r===!1))if(Array.isArray(r))for(let o of r)Xn(s,o);else Xn(s,r);return s}var ln=10;function Qn(){let e=window.getSelection();return!!e&&!e.isCollapsed&&e.toString().length>0}function me(e){return e instanceof HTMLElement?e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||e.isContentEditable:!1}function Vn(){return window.matchMedia("(hover: hover) and (pointer: fine)").matches}var Zn="(min-width: 1000px)";function ie(){return window.matchMedia(Zn).matches}function Jn(e){window.matchMedia(Zn).addEventListener("change",e)}function I(e){let t=!1,n=0,s=0;return{onpointerdown:r=>{if(me(r.target))return;let o=r;o.pointerType==="mouse"&&o.button!==0||(n=o.clientX,s=o.clientY,r.preventDefault(),r.stopPropagation())},onpointerup:r=>{if(me(r.target))return;let o=r;o.pointerType==="mouse"&&o.button!==0||(r.stopPropagation(),!(Math.hypot(o.clientX-n,o.clientY-s)>ln)&&(Qn()||(t=!0,e(r))))},onclick:r=>{if(!me(r.target)){if(r.stopPropagation(),t){t=!1;return}Qn()||e(r)}}}}function Xn(e,t){t==null||t===!1||(t instanceof Node?e.appendChild(t):e.appendChild(document.createTextNode(String(t))))}var ys=bo(Es(),1);var W=ys.default;function _s(e){let t=e.regex,n={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});let r={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},o=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),a={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,r]};r.contains.push(c);let u={match:/\\"/},d={className:"string",begin:/'/,end:/'/},f={match:/\\'/},p={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},g=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],b=e.SHEBANG({binary:`(${g.join("|")})`,relevance:10}),y={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},_=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],m=["true","false"],E={match:/(\/[a-z._-]+)+/},A=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],R=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],O=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],D=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:_,literal:m,built_in:[...A,...R,"set","shopt",...O,...D]},contains:[b,e.SHEBANG(),y,p,o,a,E,c,u,d,f,n]}}function vs(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},f={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},p={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},g={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},b=t.optional(r)+e.IDENT_RE+"\\s*\\(",m={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},E=[p,c,n,e.C_BLOCK_COMMENT_MODE,f,d],A={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:m,contains:E.concat([{begin:/\(/,end:/\)/,keywords:m,contains:E.concat(["self"]),relevance:0}]),relevance:0},R={begin:"("+a+"[\\*&\\s]+)+"+b,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:m,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:m,relevance:0},{begin:b,returnBegin:!0,contains:[e.inherit(g,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,d,f,c,{begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,d,f,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,p]};return{name:"C",aliases:["h"],keywords:m,disableAutodetect:!0,illegal:"</",contains:[].concat(A,R,E,[p,{begin:e.IDENT_RE+"::",keywords:m},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:p,strings:d,keywords:m}}}function ws(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="(?!struct)("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},f={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},p={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},g={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},b=t.optional(r)+e.IDENT_RE+"\\s*\\(",y=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],_=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],m=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],E=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],O={type:_,keyword:y,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:m},D={className:"function.dispatch",relevance:0,keywords:{_hint:E},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},x=[D,p,c,n,e.C_BLOCK_COMMENT_MODE,f,d],K={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:O,contains:x.concat([{begin:/\(/,end:/\)/,keywords:O,contains:x.concat(["self"]),relevance:0}]),relevance:0},P={className:"function",begin:"("+a+"[\\*&\\s]+)+"+b,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:O,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:O,relevance:0},{begin:b,returnBegin:!0,contains:[g],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[d,f]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:O,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,d,f,c,{begin:/\(/,end:/\)/,keywords:O,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,d,f,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,p]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:O,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(K,P,D,x,[p,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:O,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:O},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}var aa=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),ca=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],la=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],ua=[...ca,...la],da=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),fa=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),pa=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),ga=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function Ss(e){let t=e.regex,n=aa(e),s={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},r="and or not only",o=/@-?\w[\w]*(-\w+)*/,a="[a-zA-Z-][a-zA-Z0-9_-]*",c=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,s,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+a,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+fa.join("|")+")"},{begin:":(:)?("+pa.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+ga.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...c,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...c,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:o},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:r,attribute:da.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...c,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+ua.join("|")+")\\b"}]}}function Ts(e){return{name:"Dockerfile",aliases:["docker"],case_insensitive:!0,keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"],contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}function Is(e){let o={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:o,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:o,illegal:/["']/}]}]}}function As(e){let t=e.regex,n={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let r={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},o={className:"literal",begin:/\bon|off|true|false|yes|no\b/},a={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[s,o,r,a,n,"self"],relevance:0},u=/[A-Za-z0-9_-]+/,d=/"(\\"|[^"])*"/,f=/'[^']*'/,p=t.either(u,d,f),g=t.concat(p,"(\\s*\\.\\s*",p,")*",t.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{begin:g,className:"attr",starts:{end:/$/,contains:[s,c,o,r,a,n]}}]}}var Oe="[0-9](_*[0-9])*",vt=`\\.(${Oe})`,wt="[0-9a-fA-F](_*[0-9a-fA-F])*",Ns={className:"number",variants:[{begin:`(\\b(${Oe})((${vt})|\\.)?|(${vt}))[eE][+-]?(${Oe})[fFdD]?\\b`},{begin:`\\b(${Oe})((${vt})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${vt})[fFdD]?\\b`},{begin:`\\b(${Oe})[fFdD]\\b`},{begin:`\\b0[xX]((${wt})\\.?|(${wt})?\\.(${wt}))[pP][+-]?(${Oe})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${wt})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function ks(e,t,n){return n===-1?"":e.replace(t,s=>ks(e,t,n-1))}function xs(e){let t=e.regex,n="[\xC0-\u02B8a-zA-Z_$][\xC0-\u02B8a-zA-Z_$0-9]*",s=n+ks("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),u={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},d={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},f={className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:u,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[t.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[f,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+s+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:u,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[d,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,Ns,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},Ns,d]}}var Cs="[A-Za-z$_][0-9A-Za-z$_]*",ma=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],ha=["true","false","null","undefined","NaN","Infinity"],Ms=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Rs=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Os=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],ba=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Ea=[].concat(Os,Ms,Rs);function Ls(e){let t=e.regex,n=(S,{after:C})=>{let B="</"+S[0].slice(1);return S.input.indexOf(B,C)!==-1},s=Cs,r={begin:"<>",end:"</>"},o=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(S,C)=>{let B=S[0].length+S.index,$=S.input[B];if($==="<"||$===","){C.ignoreMatch();return}$===">"&&(n(S,{after:B})||C.ignoreMatch());let G,se=S.input.substring(B);if(G=se.match(/^\s*=/)){C.ignoreMatch();return}if((G=se.match(/^\s+extends\s+/))&&G.index===0){C.ignoreMatch();return}}},c={$pattern:Cs,keyword:ma,literal:ha,built_in:Ea,"variable.language":ba},u="[0-9](_?[0-9])*",d=`\\.(${u})`,f="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${f})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${f})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},b={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},y={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"css"}},_={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,g]},A={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},R=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,b,y,_,m,{match:/\$\d+/},p];g.contains=R.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(R)});let O=[].concat(A,g.contains),D=O.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(O)}]),x={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:D},K={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},P={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Ms,...Rs]}},z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[x],illegal:/%/},ce={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function ne(S){return t.concat("(?!",S.join("|"),")")}let ae={match:t.concat(/\b/,ne([...Os,"super","import"].map(S=>`${S}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Y={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Q={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},x]},h="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",T={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(h)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[x]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:D,CLASS_REFERENCE:P},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,b,y,_,m,A,{match:/\$\d+/},p,P,{scope:"attr",match:s+t.lookahead(":"),relevance:0},T,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[A,e.REGEXP_MODE,{className:"function",begin:h,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:D}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:o},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[x,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},Y,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[x]},ae,ce,K,Q,{match:/\$[(.]/}]}}function Ds(e){let t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},s=["true","false","null"],r={scope:"literal",beginKeywords:s.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:s},contains:[t,n,e.QUOTE_STRING_MODE,r,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var Le="[0-9](_*[0-9])*",St=`\\.(${Le})`,Tt="[0-9a-fA-F](_*[0-9a-fA-F])*",ya={className:"number",variants:[{begin:`(\\b(${Le})((${St})|\\.)?|(${St}))[eE][+-]?(${Le})[fFdD]?\\b`},{begin:`\\b(${Le})((${St})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${St})[fFdD]?\\b`},{begin:`\\b(${Le})[fFdD]\\b`},{begin:`\\b0[xX]((${Tt})\\.?|(${Tt})?\\.(${Tt}))[pP][+-]?(${Le})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Tt})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Ps(e){let t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},s={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},o={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},a={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[o,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,o,r]}]};r.contains.push(a);let c={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},u={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(a,{className:"string"}),"self"]}]},d=ya,f=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),p={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},g=p;return g.variants[1].contains=[p],p.variants[1].contains=[g],{name:"Kotlin",aliases:["kt","kts"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,f,n,s,c,u,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[p,e.C_LINE_COMMENT_MODE,f],relevance:0},e.C_LINE_COMMENT_MODE,f,c,u,a,e.C_NUMBER_MODE]},f]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},c,u]},a,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
459
+ `},d]}}function Bs(e){let t=e.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},s={begin:"^[-\\*]{3,}",end:"$"},r={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},o={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},a={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},c=/[A-Za-z][A-Za-z0-9+.-]*/,u={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:t.concat(/\[.+?\]\(/,c,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},d={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},f={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},p=e.inherit(d,{contains:[]}),g=e.inherit(f,{contains:[]});d.contains.push(g),f.contains.push(p);let b=[n,u];return[d,f,p,g].forEach(E=>{E.contains=E.contains.concat(b)}),b=b.concat(d,f),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:b},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:b}]}]},n,o,d,f,{className:"quote",begin:"^>\\s+",contains:b,end:"$"},r,s,u,a,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function Fs(e){let t=e.regex,n=/(?![A-Za-z0-9])(?![$])/,s=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),r=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),o=t.concat(/[A-Z]+/,n),a={scope:"variable",match:"\\$+"+s},c={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},u={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},d=e.inherit(e.APOS_STRING_MODE,{illegal:null}),f=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(u)}),p={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(u),"on:begin":(Y,Q)=>{Q.data._beginMatch=Y[1]||Y[2]},"on:end":(Y,Q)=>{Q.data._beginMatch!==Y[1]&&Q.ignoreMatch()}},g=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),b=`[
460
+ ]`,y={scope:"string",variants:[f,d,p,g]},_={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},m=["false","null","true"],E=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],A=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],O={keyword:E,literal:(Y=>{let Q=[];return Y.forEach(h=>{Q.push(h),h.toLowerCase()===h?Q.push(h.toUpperCase()):Q.push(h.toLowerCase())}),Q})(m),built_in:A},D=Y=>Y.map(Q=>Q.replace(/\|\d+$/,"")),x={variants:[{match:[/new/,t.concat(b,"+"),t.concat("(?!",D(A).join("\\b|"),"\\b)"),r],scope:{1:"keyword",4:"title.class"}}]},K=t.concat(s,"\\b(?!\\()"),P={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),K],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[r,t.concat(/::/,t.lookahead(/(?!class\b)/)),K],scope:{1:"title.class",3:"variable.constant"}},{match:[r,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[r,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},z={scope:"attr",match:t.concat(s,t.lookahead(":"),t.lookahead(/(?!::)/))},j={relevance:0,begin:/\(/,end:/\)/,keywords:O,contains:[z,a,P,e.C_BLOCK_COMMENT_MODE,y,_,x]},ce={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",D(E).join("\\b|"),"|",D(A).join("\\b|"),"\\b)"),s,t.concat(b,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[j]};j.contains.push(ce);let ne=[z,P,e.C_BLOCK_COMMENT_MODE,y,_,x],ae={begin:t.concat(/#\[\s*\\?/,t.either(r,o)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:m,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:m,keyword:["new","array"]},contains:["self",...ne]},...ne,{scope:"meta",variants:[{match:r},{match:o}]}]};return{case_insensitive:!1,keywords:O,contains:[ae,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},c,{scope:"variable.language",match:/\$this\b/},a,ce,P,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},x,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:O,contains:["self",ae,a,P,e.C_BLOCK_COMMENT_MODE,y,_]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},y,_]}}function Hs(e){let t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],c={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},u={className:"meta",begin:/^(>>>|\.\.\.) /},d={className:"subst",begin:/\{/,end:/\}/,keywords:c,illegal:/#/},f={begin:/\{\{/,relevance:0},p={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,u,f,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,u,f,d]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,f,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,f,d]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},g="[0-9](_?[0-9])*",b=`(\\b(${g}))?\\.(${g})|\\b(${g})\\.`,y=`\\b|${s.join("|")}`,_={className:"number",relevance:0,variants:[{begin:`(\\b(${g})|(${b}))[eE][+-]?(${g})[jJ]?(?=${y})`},{begin:`(${b})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${y})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${y})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${y})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${y})`},{begin:`\\b(${g})[jJ](?=${y})`}]},m={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:c,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},E={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:["self",u,_,p,e.HASH_COMMENT_MODE]}]};return d.contains=[p,_,u],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:c,illegal:/(<\/|\?)|=>/,contains:[u,_,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},p,m,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[E]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[_,E,p]}]}}function Us(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),r=t.concat(s,/(::\w+)*/),a={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},c={className:"doctag",begin:"@[A-Za-z]+"},u={begin:"#<",end:">"},d=[e.COMMENT("#","$",{contains:[c]}),e.COMMENT("^=begin","^=end",{contains:[c],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],f={className:"subst",begin:/#\{/,end:/\}/,keywords:a},p={className:"string",contains:[e.BACKSLASH_ESCAPE,f],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,f]})]}]},g="[1-9](_?[0-9])*|0",b="[0-9](_?[0-9])*",y={className:"number",relevance:0,variants:[{begin:`\\b(${g})(\\.(${b}))?([eE][+-]?(${b})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},_={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:a}]},x=[p,{variants:[{match:[/class\s+/,r,/\s+<\s+/,r]},{match:[/\b(class|module)\s+/,r]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:a},{match:[/(include|extend)\s+/,r],scope:{2:"title.class"},keywords:a},{relevance:0,match:[r,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:s,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[_]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[p,{begin:n}],relevance:0},y,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,f],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(u,d),relevance:0}].concat(u,d);f.contains=x,_.contains=x;let j=[{begin:/^\s*=>/,starts:{end:"$",contains:x}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:a,contains:x}}];return d.unshift(u),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(j).concat(d).concat(x)}}function $s(e){let t=e.regex,n=/(r#)?/,s=t.concat(n,e.UNDERSCORE_IDENT_RE),r=t.concat(n,e.IDENT_RE),o={className:"title.function.invoke",relevance:0,begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,r,t.lookahead(/\s*\(/))},a="([ui](8|16|32|64|128|size)|f(32|64))?",c=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],u=["true","false","Some","None","Ok","Err"],d=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],f=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:f,keyword:c,literal:u,built_in:d},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{begin:"\\b0x([A-Fa-f0-9_]+)"+a},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{begin:[/fn/,/\s+/,s],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:d,type:f}},{className:"punctuation",begin:"->"},o]}}function qs(e){let t=e.regex,n=e.COMMENT("--","$"),s={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},r={begin:/"/,end:/"/,contains:[{match:/""/}]},o=["true","false","unknown"],a=["double precision","large object","with timezone","without timezone"],c=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],u=["add","asc","collation","desc","final","first","last","view"],d=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],f=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],p=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],g=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],b=f,y=[...d,...u].filter(D=>!f.includes(D)),_={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},m={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},E={match:t.concat(/\b/,t.either(...b),/\s*\(/),relevance:0,keywords:{built_in:b}};function A(D){return t.concat(/\b/,t.either(...D.map(x=>x.replace(/\s+/,"\\s+"))),/\b/)}let R={scope:"keyword",match:A(g),relevance:0};function O(D,{exceptions:x,when:K}={}){let P=K;return x=x||[],D.map(z=>z.match(/\|\d+$/)||x.includes(z)?z:P(z)?`${z}|0`:z)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:O(y,{when:D=>D.length<3}),literal:o,type:c,built_in:p},contains:[{scope:"type",match:A(a)},R,E,_,s,r,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,m]}}function Ws(e){return e?typeof e=="string"?e:e.source:null}function Je(e){return U("(?=",e,")")}function U(...e){return e.map(n=>Ws(n)).join("")}function _a(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function J(...e){return"("+(_a(e).capture?"":"?:")+e.map(s=>Ws(s)).join("|")+")"}var _n=e=>U(/\b/,e,/\w$/.test(e)?/\b/:/\B/),va=["Protocol","Type"].map(_n),Ks=["init","self"].map(_n),wa=["Any","Self"],En=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],zs=["false","nil","true"],Sa=["assignment","associativity","higherThan","left","lowerThan","none","right"],Ta=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],Gs=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Ys=J(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Qs=J(Ys,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),yn=U(Ys,Qs,"*"),Xs=J(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),At=J(Xs,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),le=U(Xs,At,"*"),It=U(/[A-Z]/,At,"*"),Ia=["attached","autoclosure",U(/convention\(/,J("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",U(/objc\(/,le,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],Aa=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function Vs(e){let t={match:/\s+/,relevance:0},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,n],r={match:[/\./,J(...va,...Ks)],className:{2:"keyword"}},o={match:U(/\./,J(...En)),relevance:0},a=En.filter(H=>typeof H=="string").concat(["_|0"]),c=En.filter(H=>typeof H!="string").concat(wa).map(_n),u={variants:[{className:"keyword",match:J(...c,...Ks)}]},d={$pattern:J(/\b\w+/,/#\w+/),keyword:a.concat(Ta),literal:zs},f=[r,o,u],p={match:U(/\./,J(...Gs)),relevance:0},g={className:"built_in",match:U(/\b/,J(...Gs),/(?=\()/)},b=[p,g],y={match:/->/,relevance:0},_={className:"operator",relevance:0,variants:[{match:yn},{match:`\\.(\\.|${Qs})+`}]},m=[y,_],E="([0-9]_*)+",A="([0-9a-fA-F]_*)+",R={className:"number",relevance:0,variants:[{match:`\\b(${E})(\\.(${E}))?([eE][+-]?(${E}))?\\b`},{match:`\\b0x(${A})(\\.(${A}))?([pP][+-]?(${E}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},O=(H="")=>({className:"subst",variants:[{match:U(/\\/,H,/[0\\tnr"']/)},{match:U(/\\/,H,/u\{[0-9a-fA-F]{1,8}\}/)}]}),D=(H="")=>({className:"subst",match:U(/\\/,H,/[\t ]*(?:[\r\n]|\r\n)/)}),x=(H="")=>({className:"subst",label:"interpol",begin:U(/\\/,H,/\(/),end:/\)/}),K=(H="")=>({begin:U(H,/"""/),end:U(/"""/,H),contains:[O(H),D(H),x(H)]}),P=(H="")=>({begin:U(H,/"/),end:U(/"/,H),contains:[O(H),x(H)]}),z={className:"string",variants:[K(),K("#"),K("##"),K("###"),P(),P("#"),P("##"),P("###")]},j=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],ce={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:j},ne=H=>{let ge=U(H,/\//),k=U(/\//,H);return{begin:ge,end:k,contains:[...j,{scope:"comment",begin:`#(?!.*${k})`,end:/$/}]}},ae={scope:"regexp",variants:[ne("###"),ne("##"),ne("#"),ce]},Y={match:U(/`/,le,/`/)},Q={className:"variable",match:/\$\d+/},h={className:"variable",match:`\\$${At}+`},T=[Y,Q,h],S={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:Aa,contains:[...m,R,z]}]}},C={scope:"keyword",match:U(/@/,J(...Ia),Je(J(/\(/,/\s+/)))},B={scope:"meta",match:U(/@/,le)},$=[S,C,B],G={match:Je(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:U(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,At,"+")},{className:"type",match:It,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:U(/\s+&\s+/,Je(It)),relevance:0}]},se={begin:/</,end:/>/,keywords:d,contains:[...s,...f,...$,y,G]};G.contains.push(se);let Z={match:U(le,/\s*:/),keywords:"_|0",relevance:0},te={begin:/\(/,end:/\)/,relevance:0,keywords:d,contains:["self",Z,...s,ae,...f,...b,...m,R,z,...T,...$,G]},xe={begin:/</,end:/>/,keywords:"repeat each",contains:[...s,G]},pt={begin:J(Je(U(le,/\s*:/)),Je(U(le,/\s+/,le,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:le}]},Xe={begin:/\(/,end:/\)/,keywords:d,contains:[pt,...s,...f,...m,R,z,...$,G,te],endsParent:!0,illegal:/["']/},nn={match:[/(func|macro)/,/\s+/,J(Y.match,le,yn)],className:{1:"keyword",3:"title.function"},contains:[xe,Xe,t],illegal:[/\[/,/%/]},sn={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[xe,Xe,t],illegal:/\[|%/},rn={match:[/operator/,/\s+/,yn],className:{1:"keyword",3:"title"}},on={begin:[/precedencegroup/,/\s+/,It],className:{1:"keyword",3:"title"},contains:[G],keywords:[...Sa,...zs],end:/}/},Ce={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},gt={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},re={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,le,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:d,contains:[xe,...f,{begin:/:/,end:/\{/,keywords:d,contains:[{scope:"title.class.inherited",match:It},...f],relevance:0}]};for(let H of z.variants){let ge=H.contains.find(mt=>mt.label==="interpol");ge.keywords=d;let k=[...f,...b,...m,R,z,...T];ge.contains=[...k,{begin:/\(/,end:/\)/,contains:["self",...k]}]}return{name:"Swift",keywords:d,contains:[...s,nn,sn,Ce,gt,re,rn,on,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},ae,...f,...b,...m,R,z,...T,...$,G,te]}}var Nt="[A-Za-z$_][0-9A-Za-z$_]*",Zs=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Js=["true","false","null","undefined","NaN","Infinity"],js=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],er=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],tr=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],nr=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],sr=[].concat(tr,js,er);function Na(e){let t=e.regex,n=(S,{after:C})=>{let B="</"+S[0].slice(1);return S.input.indexOf(B,C)!==-1},s=Nt,r={begin:"<>",end:"</>"},o=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(S,C)=>{let B=S[0].length+S.index,$=S.input[B];if($==="<"||$===","){C.ignoreMatch();return}$===">"&&(n(S,{after:B})||C.ignoreMatch());let G,se=S.input.substring(B);if(G=se.match(/^\s*=/)){C.ignoreMatch();return}if((G=se.match(/^\s+extends\s+/))&&G.index===0){C.ignoreMatch();return}}},c={$pattern:Nt,keyword:Zs,literal:Js,built_in:sr,"variable.language":nr},u="[0-9](_?[0-9])*",d=`\\.(${u})`,f="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${f})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${f})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},b={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},y={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"css"}},_={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,g]},A={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},R=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,b,y,_,m,{match:/\$\d+/},p];g.contains=R.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(R)});let O=[].concat(A,g.contains),D=O.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(O)}]),x={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:D},K={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},P={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...js,...er]}},z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[x],illegal:/%/},ce={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function ne(S){return t.concat("(?!",S.join("|"),")")}let ae={match:t.concat(/\b/,ne([...tr,"super","import"].map(S=>`${S}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Y={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Q={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},x]},h="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",T={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(h)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[x]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:D,CLASS_REFERENCE:P},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,b,y,_,m,A,{match:/\$\d+/},p,P,{scope:"attr",match:s+t.lookahead(":"),relevance:0},T,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[A,e.REGEXP_MODE,{className:"function",begin:h,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:D}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:o},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[x,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},Y,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[x]},ae,ce,K,Q,{match:/\$[(.]/}]}}function rr(e){let t=e.regex,n=Na(e),s=Nt,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],o={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},a={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[n.exports.CLASS_REFERENCE]},c={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},u=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],d={$pattern:Nt,keyword:Zs.concat(u),literal:Js,built_in:sr.concat(r),"variable.language":nr},f={className:"meta",begin:"@"+s},p=(_,m,E)=>{let A=_.contains.findIndex(R=>R.label===m);if(A===-1)throw new Error("can not find mode to replace");_.contains.splice(A,1,E)};Object.assign(n.keywords,d),n.exports.PARAMS_CONTAINS.push(f);let g=n.contains.find(_=>_.scope==="attr"),b=Object.assign({},g,{match:t.concat(s,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,g,b]),n.contains=n.contains.concat([f,o,a,b]),p(n,"shebang",e.SHEBANG()),p(n,"use_strict",c);let y=n.contains.find(_=>_.label==="func.def");return y.relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}function ir(e){let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s=/[\p{L}0-9._:-]+/u,r={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},a=e.inherit(o,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{className:"string"}),u=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),d={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[o,u,c,a,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[o,a,u,c]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[u]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[d],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[d],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:d}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function or(e){let t="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},r={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},o={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},a={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,r]},c=e.inherit(a,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),g={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},b={end:",",endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},y={begin:/\{/,end:/\}/,contains:[b],illegal:"\\n",relevance:0},_={begin:"\\[",end:"\\]",contains:[b],illegal:"\\n",relevance:0},m=[s,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},g,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},y,_,o,a],E=[...m];return E.pop(),E.push(c),b.contains=E,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:m}}W.registerLanguage("bash",_s);W.registerLanguage("c",vs);W.registerLanguage("cpp",ws);W.registerLanguage("css",Ss);W.registerLanguage("dockerfile",Ts);W.registerLanguage("go",Is);W.registerLanguage("ini",As);W.registerLanguage("java",xs);W.registerLanguage("javascript",Ls);W.registerLanguage("json",Ds);W.registerLanguage("kotlin",Ps);W.registerLanguage("markdown",Bs);W.registerLanguage("php",Fs);W.registerLanguage("python",Hs);W.registerLanguage("ruby",Us);W.registerLanguage("rust",$s);W.registerLanguage("sql",qs);W.registerLanguage("swift",Vs);W.registerLanguage("typescript",rr);W.registerLanguage("xml",ir);W.registerLanguage("yaml",or);var ar={bash:"bash",sh:"bash",zsh:"bash",c:"c",h:"c",cc:"cpp",cpp:"cpp",cxx:"cpp",hpp:"cpp",hxx:"cpp",css:"css",dockerfile:"dockerfile",go:"go",ini:"ini",toml:"ini",java:"java",cjs:"javascript",js:"javascript",jsx:"javascript",mjs:"javascript",json:"json",jsonc:"json",kt:"kotlin",kts:"kotlin",md:"markdown",markdown:"markdown",php:"php",py:"python",rb:"ruby",rs:"rust",sql:"sql",swift:"swift",cts:"typescript",mts:"typescript",ts:"typescript",tsx:"typescript",htm:"xml",html:"xml",svg:"xml",xml:"xml",yaml:"yaml",yml:"yaml"};function cr(e,t){let n=t.split(".").pop()?.toLowerCase()??"",s=ar[n]??(t.toLowerCase()==="dockerfile"?"dockerfile":null);return s?W.highlight(e,{language:s}).value:null}var ka=new Set(["bash","c","cpp","css","dockerfile","go","ini","java","javascript","json","kotlin","markdown","php","python","ruby","rust","sql","swift","typescript","xml","yaml"]),xa={"c++":"cpp",shell:"bash",console:"bash"};function lr(e,t){let n=t.trim().toLowerCase();if(!n)return null;let s=ka.has(n)?n:xa[n]??ar[n];return s?W.highlight(e,{language:s}).value:null}function oe(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function De(e){return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>"),e=e.replace(/(^|[^*])\*([^*\n]+)\*/g,"$1<em>$2</em>"),e=e.replace(/__([^_\n]+)__/g,"<strong>$1</strong>"),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>{let r=s.match(/^hydra:\/\/(?:[^/\s]+\/)?sessions\/([A-Za-z0-9_-]+)(?:#turn-\d+)?$/);if(r){let o=r[1];return`<a href="#/session/${oe(o)}">${n}</a>`}return/^(https?:\/\/|\/|\.)/i.test(s)?`<a href="${oe(s)}" target="_blank" rel="noopener noreferrer">${n}</a>`:`[${n}](${s})`}),e}function vn(e){let t=e.trim();if(!t.includes("|"))return null;let n=t;return n.startsWith("|")&&(n=n.slice(1)),n.endsWith("|")&&(n=n.slice(0,-1)),n.split("|").map(s=>s.trim())}function Ca(e){let t=vn(e);if(!t||t.length===0)return null;let n=[];for(let s of t){if(!/^:?-+:?$/.test(s))return null;let r=s.startsWith(":"),o=s.endsWith(":");r&&o?n.push("center"):o?n.push("right"):r?n.push("left"):n.push(null)}return n}function ur(e,t){let n=lr(e,t),s=oe(t),r=n!==null?` class="hljs" data-lang="${s}"`:` data-lang="${s}"`,o=n??oe(e);return`<pre><code${r}>${o}</code></pre>`}function dr(e,t,n){let s="<tr>";for(let r=0;r<e.length;r++){let o=t[r]??null,a=o?` style="text-align:${o}"`:"";s+=`<${n}${a}>${De(oe(e[r]))}</${n}>`}return s+="</tr>",s}function fr(e){typeof e!="string"&&(e=String(e??""));let t=e.split(`
461
+ `),n="",s=!1,r="",o=[],a=null,c=[];function u(){c.length!==0&&(n+=`<p>${De(c.join(" "))}</p>`,c=[])}function d(){a&&(n+=`</${a}>`,a=null)}let f=0;for(;f<t.length;){let p=t[f];if(s){if(/^```/.test(p)){n+=ur(o.join(`
462
+ `),r),s=!1,o=[],r="",f++;continue}o.push(p),f++;continue}if(/^```/.test(p)){u(),d(),s=!0,r=p.slice(3).trim(),f++;continue}if(f+1<t.length&&p.includes("|")){let b=vn(p),y=Ca(t[f+1]);if(b&&y&&b.length>0&&y.length>0){u(),d();let _=Math.max(b.length,y.length),m=[];for(let A=0;A<_;A++)m.push(y[A]??null);n+="<table><thead>",n+=dr(b,m,"th"),n+="</thead><tbody>";let E=f+2;for(;E<t.length;){let A=vn(t[E]);if(!A)break;n+=dr(A,m,"td"),E++}n+="</tbody></table>",f=E;continue}}if(/^\s*$/.test(p)){u(),d(),f++;continue}let g;if(g=p.match(/^(#{1,3})\s+(.+)$/)){u(),d();let b=g[1].length;n+=`<h${b}>${De(oe(g[2]))}</h${b}>`,f++;continue}if(g=p.match(/^\s*[-*]\s+(.*)$/)){u(),a!=="ul"&&(d(),n+="<ul>",a="ul"),n+=`<li>${De(oe(g[1]))}</li>`,f++;continue}if(g=p.match(/^\s*\d+\.\s+(.*)$/)){u(),a!=="ol"&&(d(),n+="<ol>",a="ol"),n+=`<li>${De(oe(g[1]))}</li>`,f++;continue}if(g=p.match(/^\s*>\s?(.*)$/)){u(),d(),n+=`<blockquote>${De(oe(g[1]))}</blockquote>`,f++;continue}d(),c.push(oe(p)),f++}return s&&(n+=ur(o.join(`
463
+ `),r)),u(),d(),n}function je(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(je).join("");if(e&&typeof e=="object"){let t=e;if(typeof t.text=="string")return t.text;if(typeof t.content=="string")return t.content}return""}function pr(e){let t=e.content;if(Array.isArray(t))for(let s of t){if(!s||typeof s!="object")continue;let r=s;if(r.type!=="diff")continue;let o=typeof r.oldText=="string"?r.oldText:void 0,a=typeof r.newText=="string"?r.newText:void 0;if(o===void 0&&a===void 0)continue;let c=typeof r.path=="string"?r.path:void 0;return{...c!==void 0?{path:c}:{},oldText:o??"",newText:a??""}}let n=e.rawInput;if(n&&typeof n=="object"&&!Array.isArray(n)){let s=n,r=typeof s.file_path=="string"?s.file_path:typeof s.path=="string"?s.path:void 0;if(typeof s.old_string=="string"&&typeof s.new_string=="string")return{...r!==void 0?{path:r}:{},oldText:s.old_string,newText:s.new_string};if(typeof s.content=="string")return{...r!==void 0?{path:r}:{},oldText:"",newText:s.content}}return null}function gr(e){let t=e.oldText.split(`
409
464
  `),n=e.newText.split(`
410
- `);return t.length>0&&t[t.length-1]===""&&t.pop(),n.length>0&&n[n.length-1]===""&&n.pop(),{oldLines:t,newLines:n}}var ca=1e6;function la(e,t){let n=e.length,s=t.length;if(n===0||s===0||n*s>ca){let u=[];for(let d of e)u.push({op:"-",text:d});for(let d of t)u.push({op:"+",text:d});return u}let r=Array.from({length:n+1},()=>new Array(s+1).fill(0));for(let u=n-1;u>=0;u--)for(let d=s-1;d>=0;d--)e[u]===t[d]?r[u][d]=r[u+1][d+1]+1:r[u][d]=Math.max(r[u+1][d],r[u][d+1]);let o=[],a=0,c=0;for(;a<n&&c<s;)e[a]===t[c]?(o.push({op:"=",text:e[a]}),a++,c++):r[a+1][c]>=r[a][c+1]?(o.push({op:"-",text:e[a]}),a++):(o.push({op:"+",text:t[c]}),c++);for(;a<n;)o.push({op:"-",text:e[a]}),a++;for(;c<s;)o.push({op:"+",text:t[c]}),c++;return o}function nr(e,t){let n=0,s=Math.min(e.length,t.length);for(;n<s&&e[n]===t[n];)n++;let r=e.length,o=t.length;for(;r>n&&o>n&&e[r-1]===t[o-1];)r--,o--;let a=[];for(let c=0;c<n;c++)a.push({op:"=",text:e[c]});a.push(...la(e.slice(n,r),t.slice(n,o)));for(let c=r;c<e.length;c++)a.push({op:"=",text:e[c]});return a}function sr(e){let{oldLines:t,newLines:n}=tr(e),s=0,r=0;for(let o of nr(t,n))o.op==="+"?s++:o.op==="-"&&r++;return{added:s,removed:r}}function rr(e,t={}){let n=t.maxLines??40,s=t.contextLines??3,{oldLines:r,newLines:o}=tr(e),a=nr(r,o),c=[];if(Number.isFinite(s)){if(!a.some(g=>g.op!=="="))return[];let f=new Array(a.length).fill(!1);for(let g=0;g<a.length;g++)if(a[g].op!=="="){let b=Math.max(0,g-s),_=Math.min(a.length-1,g+s);for(let y=b;y<=_;y++)f[y]=!0}let p=0;for(;p<a.length;){if(f[p]){c.push({op:a[p].op,text:a[p].text}),p++;continue}let g=p;for(;g<a.length&&!f[g];)g++;let b=g-p;c.push({op:"gap",text:`\u22EF ${b} unchanged line${b===1?"":"s"}`}),p=g}}else for(let d of a)c.push({op:d.op,text:d.text});let u=[];for(let d=0;d<c.length;d++){if(u.length>=n-1&&d<c.length-1){let p=c.length-d;u.push({op:"gap",text:`\u2026 ${p} more line${p===1?"":"s"}`});break}u.push(c[d])}return u}var ua="hydra-acp-history-cache";var Se="sessions";var At=null;function or(){return At||(At=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(ua,1)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.createObjectStore(Se,{keyPath:"sessionId"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),At)}function da(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}async function ar(e){let t=await or();return t?new Promise(n=>{let s;try{s=t.transaction(Se,"readwrite")}catch{n(null);return}let r=s.objectStore(Se),o=r.get(e);o.onsuccess=()=>{let a=o.result;if(!a){n(null);return}a.lastAccessed=Date.now(),r.put(a),n({lastSeenMessageId:a.lastSeenMessageId,frames:a.frames.map(c=>c.frame)})},o.onerror=()=>n(null)}):null}var we=new Map,Nt=new Map,Pe;function cr(e,t,n){let s=we.get(e)??[];s.push(t),we.set(e,s),Nt.set(e,n),Pe===void 0&&(Pe=setTimeout(()=>{Pe=void 0,lr()},2e3))}function ir(){Pe!==void 0&&(clearTimeout(Pe),Pe=void 0),lr()}async function lr(){if(we.size===0)return;let e=Array.from(we.keys()),t=await or();if(!t){we.clear(),Nt.clear();return}for(let n of e){let s=we.get(n),r=Nt.get(n);we.delete(n),Nt.delete(n),!(!s||!r)&&await fa(t,n,s,r)}await pa(t)}function fa(e,t,n,s){return new Promise(r=>{let o;try{o=e.transaction(Se,"readwrite")}catch{r();return}let a=o.objectStore(Se),c=a.get(t);c.onsuccess=()=>{let u=c.result,d=n.map(b=>({frame:b,bytes:da(b)})),f=[...u?.frames??[],...d],p=(u?.totalBytes??0)+d.reduce((b,_)=>b+_.bytes,0);for(;f.length>1&&p>1e6;){let b=f.shift();b&&(p-=b.bytes)}let g={sessionId:t,lastSeenMessageId:s,frames:f,totalBytes:p,lastAccessed:Date.now()};a.put(g),r()},c.onerror=()=>r()})}function pa(e){return new Promise(t=>{let n;try{n=e.transaction(Se,"readwrite")}catch{t();return}let s=n.objectStore(Se),r=s.getAll();r.onsuccess=()=>{let o=r.result??[];if(o.length<=10){t();return}o.sort((c,u)=>c.lastAccessed-u.lastAccessed);let a=o.slice(0,o.length-10);for(let c of a)s.delete(c.sessionId);t()},r.onerror=()=>t()})}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",ir),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ir()}));typeof navigator<"u"&&navigator.storage?.persist&&navigator.storage.persist();function bn(e){i.current&&i.current.log.push(e)}var ga=new Set(["session_info_update","current_model_update","current_mode_update","available_commands_update","available_modes_update","usage_update","config_option_update","hydra_compaction","hydra_workspace","clarifier_question_asked","clarifier_question_answered","clarifier_question_dismissed"]);function Mt(e){e.log=[],e.toolCalls=new Map,e.pendingPermissions=new Map,e.spinner=null,e.plan=null,e.mode=null,e.model=null,e.modes=[],e.models=[],e.contextUsed=null,e.contextSize=null,e.cost=null,e.busy=!1,e.recentOwnPrompts=[],e.promptQueue=[],e.queueByMessageId=new Map,e.ownPromptIds=new Set,e.inTurn=!1,e.unsolicitedTurnOpen=new Set,e.currentPlanEntry=null,e.daemonSupportsAmend=!1,e.ownClientId=void 0,e.currentHeadMessageId=void 0,e.lastSeenMessageId=void 0}function ma(e){if(e.kind!=="stream"||e.role!=="user"||!e.queueEntry)return!1;let t=e.queueEntry.status;return t==="queued"||t==="editing"}function ur(){if(!i.current)return 0;let e=i.current.log;for(let t=0;t<e.length;t++)if(ma(e[t]))return t;return e.length}function me(e){i.current&&i.current.log.splice(ur(),0,e)}function Fe(){i.current&&(i.current.inTurn=!0)}function ha(){if(!i.current)return;i.current.inTurn=!1;let e=i.current.idleListeners;i.current.idleListeners=[];for(let t of e)try{t()}catch{}}function hn(e,t,n=!1){if(!i.current)return;let s=Xe(t);if(!s)return;let r=i.current.log,o=ur(),a;for(let c=o-1;c>=0;c--){let u=r[c];if(u.kind!=="spinner"){a=u;break}}if(a&&a.kind==="stream"&&a.role===e&&!a.closed&&!!a.synthetic===n){a.text+=s;return}r.splice(o,0,{kind:"stream",role:e,text:s,synthetic:n||void 0})}function He(){if(i.current)for(let e=i.current.log.length-1;e>=0;e--){let t=i.current.log[e];if(t.kind==="stream"&&!t.closed){t.closed=!0;return}}}function dr(e){if(!i.current)return!1;let t=Xe(e);if(!t)return!1;let n=i.current.recentOwnPrompts;for(let s=0;s<n.length;s++)if(n[s].text===t)return n.splice(s,1),!0;return!1}function kt(e){if(!e)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(kt).join("");if(typeof e=="object"){let t=e;if(t.text)return String(t.text);if(t.content)return kt(t.content);if(t.diff)return String(t.diff);try{return JSON.stringify(e,null,2)}catch{return String(e)}}return""}function $e(){if(!i.current)return;let e=i.current;if(e.spinner){e.log.some(t=>t.kind==="spinner")||me({kind:"spinner",spinner:e.spinner});return}e.spinner={toolCallIds:[],expanded:!1},me({kind:"spinner",spinner:e.spinner})}function ba(e){return e?e.toLowerCase().replace(/[_\s-]/g,"")==="exitplanmode":!1}function Ea(e){let t=e.rawInput;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t.plan;return typeof n!="string"||n.length===0?null:n}function _a(e){if(!i.current)return null;let t=i.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="exit-plan-mode"&&s.toolCallId===e)return{idx:n,item:s}}return null}function fr(e){if(!i.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=e.name??e.title,s=_a(t);if(!ba(n)&&!s)return!1;let r=Ea(e),o=typeof e.status=="string"?e.status:void 0;if(s)return r!==null&&(s.item.plan=r),o!==void 0&&(s.item.status=o),!0;if(r===null)return!1;He();let a={kind:"exit-plan-mode",toolCallId:t,plan:r};return o!==void 0&&(a.status=o),me(a),!0}function ya(e){if(!i.current)return null;let t=i.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="edit-diff"&&s.toolCallId===e)return{idx:n,item:s}}return null}function pr(e){if(!i.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=ya(t),s=er(e),r=typeof e.status=="string"?e.status:void 0;if(n)return s!==null&&(n.item.diff=s),r!==void 0&&(n.item.status=r),!0;if(s===null)return!1;He();let o={kind:"edit-diff",toolCallId:t,diff:s,expanded:!1};return r!==void 0&&(o.status=r),me(o),!0}function va(e){if(!i.current)return;if(He(),fr(e)){Be(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}if(pr(e)){Be(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}let t={toolCallId:String(e.toolCallId),title:String(e.title??e.kind??"tool"),kind:String(e.kind??""),status:String(e.status??"in_progress"),content:kt(e.content)};i.current.toolCalls.set(t.toolCallId,t),$e(),i.current.spinner.toolCallIds.push(t.toolCallId),Be(t.toolCallId,t.status)}function wa(e){if(!i.current)return;if(fr(e)){typeof e.status=="string"&&Be(String(e.toolCallId),e.status);return}if(pr(e)){typeof e.status=="string"&&Be(String(e.toolCallId),e.status);return}let t=i.current.toolCalls.get(String(e.toolCallId));t&&(typeof e.status=="string"&&(t.status=e.status,Be(t.toolCallId,e.status)),typeof e.title=="string"&&(t.title=e.title),e.content!==void 0&&(t.content=(t.content||"")+kt(e.content)))}function xt(){if(i.current){i.current.spinner=null,i.current.log=i.current.log.filter(e=>e.kind!=="spinner"),He();for(let e of i.current.promptQueue)e.status==="processing"&&(e.status="done");for(let e of i.current.promptQueue)e.reseatAfterCurrentTurn&&e.status!=="done"&&(e.reseatAfterCurrentTurn=void 0,En(i.current,e));i.current.currentPlanEntry=null,i.current.currentHeadMessageId=void 0,ha()}}function Sa(e){if(!i.current)return;let n=(Array.isArray(e.prompt)?e.prompt:[]).map(r=>Xe(r)).join("");if(!n)return;let s=typeof e.messageId=="string"?e.messageId:void 0;s&&i.current.queueByMessageId.has(s)||dr({text:n})||(He(),me({kind:"stream",role:"user",text:n,closed:!0}))}function gr(e){if(i.current)for(let t of e){if(!t||typeof t!="object")continue;let n=t,s=typeof n.messageId=="string"?n.messageId:"";if(!s)continue;let r=typeof n.position=="number"?n.position:0,o=i.current.queueByMessageId.get(s);if(o){r===0?(i.current.currentHeadMessageId=s,(o.status==="queued"||o.status==="pending")&&(o.status="processing")):o.status==="pending"&&(o.status="queued");continue}let a=mr(n.prompt);if(!a)continue;let c=i.current.promptQueue.find(d=>d.messageId===void 0&&d.text===a&&(d.status==="pending"||d.status==="queued"||d.status==="cancelled"));if(c){c.messageId=s,i.current.queueByMessageId.set(s,c),c.aheadAtEnqueue=Math.max(0,r),c.status=r===0?"processing":"queued",r===0&&(i.current.currentHeadMessageId=s);continue}let u={id:"snap_"+Math.random().toString(36).slice(2,10),text:a,status:r===0?"processing":"queued",aheadAtEnqueue:Math.max(0,r),messageId:s};if(i.current.queueByMessageId.set(s,u),r===0){i.current.currentHeadMessageId=s;let d=Ta(a);if(d){d.queueEntry=u;continue}}i.current.log.push({kind:"stream",role:"user",text:a,closed:!0,queueEntry:u})}}function Ta(e){if(!i.current)return null;let t=i.current.log;for(let n=t.length-1;n>=0;n--){let s=t[n];if(s.kind==="stream"&&s.role==="user"&&!s.queueEntry&&s.text===e)return s}return null}function mr(e){let t=Array.isArray(e)?e:[],n="";for(let s of t)if(s&&typeof s=="object"){let r=s;r.type==="text"&&typeof r.text=="string"&&(n+=r.text)}return n}function Ia(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let s=(e._meta??{})["hydra-acp"]??{},r=typeof s.amending=="string"?s.amending:void 0,o=e.originator??{},a=typeof o.clientId=="string"?o.clientId:"",c=!!i.current.ownClientId&&a===i.current.ownClientId,u=mr(e.prompt);if(c){let y=i.current.promptQueue.find(E=>E.messageId===void 0&&(E.status==="pending"||E.status==="queued"||E.status==="editing"))??i.current.promptQueue.find(E=>E.messageId===void 0&&E.status==="cancelled"&&E.text===u);if(!y)return;y.messageId=t,i.current.queueByMessageId.set(t,y),r!==void 0&&(y.amendsMessageId=r,Ct(r,t));let m=typeof e.position=="number"?e.position:1;y.aheadAtEnqueue=Math.max(0,m),m===0?y.status="processing":(y.status==="pending"||y.status==="cancelled")&&(y.status="queued");return}let d=u;if(!d)return;let f=typeof e.position=="number"?e.position:0,p=typeof e.queueDepth=="number"?e.queueDepth:1,g={id:"peer_"+Math.random().toString(36).slice(2,10),text:d,status:f===0?"processing":"queued",aheadAtEnqueue:Math.max(0,f),messageId:t};r!==void 0&&(g.amendsMessageId=r,Ct(r,t)),i.current.queueByMessageId.set(t,g),He();let b={kind:"stream",role:"user",text:d,closed:!0,queueEntry:g};f===0?me(b):i.current.log.push(b)}function Aa(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=i.current.queueByMessageId.get(t);if(!n)return;let s=Array.isArray(e.prompt)?e.prompt:[],r="";for(let o of s)if(o&&typeof o=="object"){let a=o;a.type==="text"&&typeof a.text=="string"&&(r+=a.text)}if(r){n.text=r;for(let o of i.current.log)if(o.kind==="stream"&&o.role==="user"&&o.queueEntry===n){o.text=r;break}}}function En(e,t){let n=e.log.findIndex(r=>r.kind==="stream"&&r.queueEntry===t);if(n<0||n===e.log.length-1)return;let[s]=e.log.splice(n,1);s&&e.log.push(s)}function Na(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=typeof e.reason=="string"?e.reason:"";n==="started"&&(i.current.currentHeadMessageId=t);let s=i.current.queueByMessageId.get(t);s&&(n==="started"?(s.status="processing",s.reseatAfterCurrentTurn=void 0):(n==="cancelled"||n==="abandoned")&&(s.amendedByMessageId!==void 0?s.status="amended":s.status="cancelled",i.current.queueByMessageId.delete(t)))}function ka(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=i.current.queueByMessageId.get(t);n&&(n.held=!0)}function xa(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=i.current.queueByMessageId.get(t);n&&(n.held=!1)}function Ca(e){i.current&&typeof e.count=="number"&&(i.current.armedTasks=e.count,i.current.armedSince=e.count>0&&typeof e.since=="number"?e.since:void 0,i.current.armedTaskList=_n(e.tasks))}function _n(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!n||typeof n!="object")continue;let s=n;typeof s.label!="string"||typeof s.since!="number"||t.push({label:s.label,since:s.since,taskId:typeof s.taskId=="string"?s.taskId:void 0,taskType:typeof s.taskType=="string"?s.taskType:void 0,toolCallId:typeof s.toolCallId=="string"?s.toolCallId:void 0})}return t}function Ma(e){if(!i.current)return;switch(typeof e.phase=="string"?e.phase:""){case"started":case"iteration":i.current.compactionPhase="running";break;case"deferred":i.current.compactionPhase="deferred";break;case"swapped":i.current.compactionPhase=void 0,L({banner:{kind:"good",text:"Context compacted."}});break;case"failed":i.current.compactionPhase=void 0,L({banner:{kind:"bad",text:"Context compaction failed."}});break;case"rolled_back":i.current.compactionPhase=void 0,L({banner:{kind:"warn",text:"Compaction rolled back."}});break;default:break}}function Ra(e){if(!i.current)return;let t=typeof e.cancelledMessageId=="string"?e.cancelledMessageId:"",n=typeof e.newMessageId=="string"?e.newMessageId:"";if(!t||!n)return;Ct(t,n);let s=i.current.queueByMessageId.get(n);s&&s.amendsMessageId===void 0&&(s.amendsMessageId=t)}function Ct(e,t){if(!i.current)return;let n=i.current.queueByMessageId.get(e)??i.current.promptQueue.find(s=>s.messageId===e);n&&(n.amendedByMessageId=t,n.status==="cancelled"&&(n.status="amended"))}function Oa(e){if(!i.current)return;let t=e.entries??e.plan??null;if(i.current.plan=t,i.current.currentPlanEntry){i.current.currentPlanEntry.entries=t;return}let n={kind:"plan",entries:t};me(n),i.current.currentPlanEntry=n}function La(e){if(!i.current)return;let t=typeof e?.toolCallId=="string"?e.toolCallId:void 0;t&&hr(t)}function hr(e){i.current&&(i.current.pendingPermissions.delete(e),i.current.log=i.current.log.filter(t=>!(t.kind==="perm"&&t.toolCallId===e)))}function Be(e,t){!i.current||!e||!t||t==="pending"||i.current.pendingPermissions.has(e)&&hr(e)}function Rt(e){if(e.method==="hydra-acp/prompt_queue/added"){Ia(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/updated"){Aa(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/removed"){Na(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/held"){ka(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/released"){xa(e.params??{});return}if(e.method==="hydra-acp/session/armed_tasks_updated"){Ca(e.params??{});return}if(e.method==="hydra-acp/prompt/amended"){Ra(e.params??{});return}if(e.method!=="session/update")return;let t=e.params?.update??null;if(!t||typeof t!="object")return;let n=String(t.sessionUpdate??"");if(i.current&&n&&!ga.has(n)&&typeof t.messageId=="string"&&(i.current.lastSeenMessageId=t.messageId,cr(i.current.sessionId,e,t.messageId)),n==="permission_resolved"){La(t);return}let r=(t._meta??{})["hydra-acp"]??{},o=n==="agent_message_chunk"&&r.synthetic===!0;switch(n){case"prompt_received":case"user_message_chunk":case"agent_message_chunk":case"agent_thought_chunk":case"tool_call":case"tool_call_update":case"plan":o||Fe();break;default:break}switch(n){case"user_message_chunk":{if(r.compatFor==="prompt_received")break;dr(t.content)||hn("user",t.content);break}case"agent_message_chunk":hn("agent",t.content,o);break;case"agent_thought_chunk":hn("thought",t.content);break;case"tool_call":va(t);break;case"tool_call_update":wa(t);break;case"current_mode_update":i.current&&(i.current.mode=t.modeId??t.currentModeId??null,Array.isArray(t.availableModes)&&(i.current.modes=t.availableModes),w());break;case"available_modes_update":i.current&&Array.isArray(t.availableModes)&&(i.current.modes=t.availableModes,w());break;case"current_model_update":i.current&&(i.current.model=t.modelId??t.currentModelId??null,Array.isArray(t.availableModels)&&(i.current.models=t.availableModels),w());break;case"config_option_update":i.current&&Array.isArray(t.configOptions)&&(i.current.configOptions=t.configOptions,w());break;case"usage_update":if(i.current){let a=t.used??t.contextUsed,c=t.size??t.contextSize;typeof a=="number"&&(i.current.contextUsed=a),typeof c=="number"&&(i.current.contextSize=c),t.cost&&(i.current.cost=t.cost)}break;case"plan":Oa(t);break;case"prompt_received":Sa(t);break;case"stop":case"turn_complete":{let u=((t._meta??{})["hydra-acp"]??{}).amended;if(u){let d=typeof u.cancelledMessageId=="string"?u.cancelledMessageId:"",f=typeof u.newMessageId=="string"?u.newMessageId:"";d&&f&&Ct(d,f)}xt();break}case"turn_started":{if(!i.current)break;let c=(t._meta??{})["hydra-acp"]??{};if(c.unsolicited!==!0)break;let u=typeof t.messageId=="string"?t.messageId:void 0;if(!u||i.current.unsolicitedTurnOpen.has(u))break;i.current.unsolicitedTurnOpen.add(u),Fe();let d=c.cause??{},f=typeof d.label=="string"?d.label:void 0;me({kind:"system",text:f?`agent resumed on its own: background task finished (${f})`:"agent resumed on its own"});break}case"turn_ended":{if(!i.current)break;let c=(t._meta??{})["hydra-acp"]??{};if(c.unsolicited!==!0)break;let u=typeof t.startedMessageId=="string"?t.startedMessageId:void 0;if(!u||!i.current.unsolicitedTurnOpen.has(u)||(i.current.unsolicitedTurnOpen.delete(u),c.reason==="superseded")||i.current.unsolicitedTurnOpen.size>0)break;xt();break}case"session_info_update":i.current&&typeof t.title=="string"&&(i.current.title=t.title);break;case"hydra_compaction":Ma(t);break;default:break}i.current?.inTurn&&$e()}function br(e){if(i.current){if(e.method==="session/request_permission"){let t=e.params??{},n=t.toolCall??{},s=typeof n.toolCallId=="string"?n.toolCallId:"";if(!s){i.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32602,message:"missing toolCall.toolCallId"}}));return}i.current.pendingPermissions.set(s,{requestId:e.id,toolCallId:s,toolCall:n,options:t.options??[]}),bn({kind:"perm",toolCallId:s});return}i.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32601,message:`method not handled: ${String(e.method)}`}}))}}var Da="hydra-acp-draft:";function Ot(e){return Da+e}function _r(e){try{return localStorage.getItem(Ot(e))??""}catch{return""}}var Lt=new Map,Te;function Ue(e,t){Lt.set(e,t),Te!==void 0&&clearTimeout(Te),Te=setTimeout(()=>{Te=void 0,yr()},400)}function Dt(e){Lt.delete(e);try{localStorage.removeItem(Ot(e))}catch{}}function yr(){for(let[e,t]of Lt)try{t?localStorage.setItem(Ot(e),t):localStorage.removeItem(Ot(e))}catch{}Lt.clear()}function Er(){Te!==void 0&&(clearTimeout(Te),Te=void 0),yr()}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",Er),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Er()}));var Pa="hydra-acp-offline-queue";var Ie="sessions",Pt=null;function yn(){return Pt||(Pt=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(Pa,1)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.createObjectStore(Ie,{keyPath:"sessionId"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),Pt)}async function vr(e){let t=await yn();return t?new Promise(n=>{let s;try{s=t.transaction(Ie,"readonly")}catch{n([]);return}let r=s.objectStore(Ie).get(e);r.onsuccess=()=>{let o=r.result;n(o?.entries??[])},r.onerror=()=>n([])}):[]}async function vn(e,t){let n=await yn();if(n)return new Promise(s=>{let r;try{r=n.transaction(Ie,"readwrite")}catch{s();return}let o=r.objectStore(Ie),a=o.get(e);a.onsuccess=()=>{let c=a.result??{sessionId:e,entries:[]},u=c.entries.findIndex(d=>d.id===t.id);u>=0?c.entries[u]=t:c.entries.push(t),o.put(c),s()},a.onerror=()=>s()})}async function Bt(e,t){let n=await yn();if(n)return new Promise(s=>{let r;try{r=n.transaction(Ie,"readwrite")}catch{s();return}let o=r.objectStore(Ie),a=o.get(e);a.onsuccess=()=>{let c=a.result;if(!c){s();return}c.entries=c.entries.filter(u=>u.id!==t),c.entries.length===0?o.delete(e):o.put(c),s()},a.onerror=()=>s()})}function je(e,t){let n=[];e&&n.push({type:"text",text:e});for(let s of t)n.push({type:"image",data:s.data,mimeType:s.mimeType});return n}function et(){let e=i.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;!t&&n.length===0||(Sn(e,t,{attachments:n})&&(e.composerValue="",e.attachments=[],Dt(e.sessionId)),w())}function Sr(e){let t=i.current;t&&(Sn(t,`/hydra workspace ${e}`,{addToHistory:!1}),w())}function Tr(){let e=i.current;e&&(Sn(e,"/hydra compact",{addToHistory:!1}),w())}function Sn(e,t,n={}){let s=n.attachments??[],r=!e.connectionHealthy||!navigator.onLine||!e.ws||e.ws.readyState!==WebSocket.OPEN,o=e.promptQueue.filter(p=>p.status==="queued"||p.status==="pending"||p.status==="processing").length,a=e.inTurn&&!e.promptQueue.some(p=>p.status==="processing"),c=r?0:o+(a?1:0),u={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:r?"offline":c>0?"queued":"pending",aheadAtEnqueue:c,attachments:s.length>0?s:void 0};e.promptQueue.push(u),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:u,attachments:u.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let d=Date.now()-6e4;if(e.recentOwnPrompts=e.recentOwnPrompts.filter(p=>p.at>=d).slice(-16),r)return vn(e.sessionId,{id:u.id,text:t,attachments:u.attachments}),Ht(e),(n.addToHistory??!0)&&wn(e,t),!0;let f=le("session/prompt",{sessionId:e.sessionId,prompt:je(t,s)});return f!==void 0&&e.ownPromptIds.add(String(f)),$e(),Fe(),Ht(e),(n.addToHistory??!0)&&wn(e,t),!0}function Ir(e){let t=!1;for(let n of e.promptQueue){if(n.status!=="offline")continue;if(!e.ws||e.ws.readyState!==WebSocket.OPEN)break;t=!0;let s=e.promptQueue.filter(c=>c.status==="queued"||c.status==="pending"||c.status==="processing").length,r=e.inTurn&&!e.promptQueue.some(c=>c.status==="processing"),o=s+(r?1:0);n.aheadAtEnqueue=o,n.status=o>0?"queued":"pending";let a=le("session/prompt",{sessionId:e.sessionId,prompt:je(n.text,n.attachments??[])});a!==void 0&&e.ownPromptIds.add(String(a)),Bt(e.sessionId,n.id),En(e,n),e.inTurn&&(n.reseatAfterCurrentTurn=!0)}t&&($e(),Fe())}var wr=100;function wn(e,t){e.history[0]!==t&&(e.history.unshift(t),e.history.length>wr&&(e.history.length=wr)),e.historyIndex=null,e.historyDraft=null}function $t(e){let t=i.current;if(t){if(e.messageId!==void 0){le("hydra-acp/prompt/cancel",{sessionId:t.sessionId,messageId:e.messageId});return}e.status==="offline"&&Bt(t.sessionId,e.id),e.status="cancelled",w()}}function Ar(e,t){let n=i.current;if(!n)return;let s=t.trim();if(s){if(e.status==="offline"){e.text=s,vn(n.sessionId,{id:e.id,text:s,attachments:e.attachments}),w();return}if(e.messageId===void 0){e.text=s,w();return}le("hydra-acp/prompt/update",{sessionId:n.sessionId,messageId:e.messageId,prompt:je(s,e.attachments??[])})}}function Nr(){let e=i.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;if(!t&&n.length===0)return;if(!e.connectionHealthy||!navigator.onLine||!e.ws||e.ws.readyState!==WebSocket.OPEN){e.log.push({kind:"error",text:"Not connected to session \u2014 prompt not sent."}),e.composerValue="",e.attachments=[],Dt(e.sessionId),w();return}if(!e.daemonSupportsAmend||e.currentHeadMessageId===void 0){et();return}let s=e.currentHeadMessageId,r=e.composerValue;e.composerValue="",e.attachments=[],Dt(e.sessionId),wn(e,t);let o={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:"pending",aheadAtEnqueue:0,amendsMessageId:s,attachments:n.length>0?n:void 0};e.promptQueue.push(o),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:o,attachments:o.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let a=Date.now()-6e4;e.recentOwnPrompts=e.recentOwnPrompts.filter(c=>c.at>=a).slice(-16),$e(),Fe(),Ht(e),Ba(o,r,s,t),w()}function Ba(e,t,n,s){let r=i.current;if(!r)return;let o=le("_session/steering",{sessionId:r.sessionId,prompt:je(s,e.attachments??[])});o!==void 0&&r.responseHandlers.set(String(o),a=>{Fa(e,t,n,s,a)})}function Fa(e,t,n,s,r){let o=i.current;if(!o)return;if(r.error){if(r.error?.code===-32601){Ha(e,t,n,s);return}Ft(o,e,t),L({banner:{kind:"bad",text:`steering failed: ${kr(r.error)}`}});return}let a=r.result??{};if(a.outcome==="injected"){e.status="processing",w();return}a.outcome!=="startedNewTurn"&&(Ft(o,e,t),L({banner:{kind:"warn",text:"steering failed"}}))}function Ha(e,t,n,s){let r=i.current;if(!r)return;let o=le("hydra-acp/prompt/amend",{sessionId:r.sessionId,targetMessageId:n,prompt:je(s,e.attachments??[])});o!==void 0&&r.responseHandlers.set(String(o),a=>{$a(e,t,a)})}function $a(e,t,n){let s=i.current;if(!s)return;if(n.error){Ft(s,e,t),L({banner:{kind:"bad",text:`amend failed: ${kr(n.error)}`}});return}let r=n.result??{};if(r.amended&&r.reason==="ok")return;Ft(s,e,t);let o="amend rejected";r.reason==="target_completed"?o="previous response finished \u2014 press Send to send as a new turn":r.reason==="target_cancelled"?o="amend skipped \u2014 previous turn was cancelled":r.reason==="target_not_found"&&(o="amend skipped \u2014 no matching prompt"),L({banner:{kind:"warn",text:o}})}function Ft(e,t,n){let s=e.promptQueue.indexOf(t);s>=0&&e.promptQueue.splice(s,1),e.log=e.log.filter(r=>!(r.kind==="stream"&&r.role==="user"&&r.queueEntry===t)),e.composerValue=n,e.attachments=t.attachments??[],Ue(e.sessionId,n),w()}function kr(e){if(e&&typeof e=="object"&&"message"in e){let t=e.message;if(typeof t=="string")return t}return"unknown error"}function xr(){let e=i.current;!e||!e.inTurn||qe("session/cancel",{sessionId:e.sessionId})}function Cr(){let e=i.current;if(!e)return;let t=!1;for(let n of e.promptQueue)(n.status==="queued"||n.status==="pending")&&($t(n),t=!0);e.inTurn&&qe("session/cancel",{sessionId:e.sessionId}),t&&w()}function Mr(e){i.current&&le("session/set_mode",{sessionId:i.current.sessionId,modeId:e})}function Rr(e){i.current&&le("session/set_model",{sessionId:i.current.sessionId,modelId:e})}function Or(e,t){let n=i.current;if(!n)return;let s=le("session/set_config_option",{sessionId:n.sessionId,configId:e,value:t});s!==void 0&&n.responseHandlers.set(String(s),r=>{let o=r.result?.configOptions;Array.isArray(o)&&i.current===n&&(n.configOptions=o,w())})}function Lr(e){for(let t of e.promptQueue)t.status!=="done"&&t.status!=="cancelled"&&(t.status==="offline"&&Bt(e.sessionId,t.id),t.status="cancelled",t.messageId!==void 0&&e.queueByMessageId.delete(t.messageId))}function Dr(e){for(let t of e.promptQueue)t.messageId===void 0&&t.status!=="done"&&t.status!=="cancelled"&&t.status!=="offline"&&(t.status="cancelled")}var Ut=null;async function Ke(){if(Ut)return Ut;if(!("serviceWorker"in navigator))return null;try{return Ut=await navigator.serviceWorker.register("/sw.js"),Ut}catch{return null}}async function Pr(){return typeof Notification>"u"||!await Ke()?!1:Notification.permission==="granted"?!0:Notification.permission==="denied"?!1:await Notification.requestPermission()==="granted"}function Br(){return document.visibilityState!=="visible"||!document.hasFocus()}async function Fr(){let e=await Ke();return!e||!("pushManager"in e)?void 0:(await e.pushManager.getSubscription())?.endpoint}function Ua(e){let t="=".repeat((4-e.length%4)%4),n=(e+t).replace(/-/g,"+").replace(/_/g,"/"),s=atob(n);return Uint8Array.from(s,r=>r.charCodeAt(0))}async function qt(){let e=await Ke();if(!(!e||!("pushManager"in e)))try{let{publicKey:t}=await ee("/api/push/vapid-public-key"),n=await e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:Ua(t)});await ee("/api/push/subscribe",{method:"POST",body:JSON.stringify(n.toJSON())})}catch(t){console.warn("push subscribe failed:",t)}}async function Hr(){let e=await Ke();if(!(!e||!("pushManager"in e)))try{let t=await e.pushManager.getSubscription();if(!t)return;let n=t.endpoint;await t.unsubscribe(),await ee("/api/push/unsubscribe",{method:"POST",body:JSON.stringify({endpoint:n})})}catch(t){console.warn("push unsubscribe failed:",t)}}function le(e,t){let n=i.current;if(!n||!n.ws||n.ws.readyState!==WebSocket.OPEN)return;let s=n.nextId=n.nextId??1;return n.nextId=s+1,n.ws.send(JSON.stringify({jsonrpc:"2.0",id:s,method:e,params:t})),s}function qe(e,t){let n=i.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",method:e,params:t}))}function tt(){qe("bridge/visibility",{visible:!Br()})}function ze(){Fr().then(e=>{qe("bridge/push-endpoint",{endpoint:e??null})})}var qa=1e4,Ka=5e3;function $r(e){e.heartbeatTimer=setTimeout(()=>za(e),qa)}function za(e){i.current!==e||!e.ws||e.ws.readyState!==WebSocket.OPEN||(qe("bridge/ping",{}),e.heartbeatDeadline=setTimeout(()=>{e.connectionHealthy=!1,w();try{e.ws?.close()}catch{}},Ka))}function Ga(e){e.connectionHealthy=!0,e.heartbeatDeadline!==void 0&&(clearTimeout(e.heartbeatDeadline),e.heartbeatDeadline=void 0),$r(e)}function Wa(e){Kt(e),e.connectionHealthy=!0,$r(e)}function Kt(e){e.heartbeatTimer!==void 0&&(clearTimeout(e.heartbeatTimer),e.heartbeatTimer=void 0),e.heartbeatDeadline!==void 0&&(clearTimeout(e.heartbeatDeadline),e.heartbeatDeadline=void 0)}function Ya(e,t){let n=i.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",id:e,result:t}))}function Ur(e){if(i.current){if(e.method==="bridge/replay_policy"){e.params?.policy!=="after_message"&&Mt(i.current);return}if(e.method==="bridge/ready"){i.current.ready=!0,i.banner=null,i.current.reconnectAttempt=0;let t=e.params??{};typeof t.clientId=="string"&&(i.current.ownClientId=t.clientId),Array.isArray(t.configOptions)&&(i.current.configOptions=t.configOptions);let s=t._meta?.["hydra-acp"],r=s?.queue;Array.isArray(r)&&gr(r),s?.prompt?.amending===!0&&(i.current.daemonSupportsAmend=!0),typeof s?.armedTasks=="number"&&(i.current.armedTasks=s.armedTasks,i.current.armedSince=s.armedTasks>0&&typeof s.armedSince=="number"?s.armedSince:void 0,i.current.armedTaskList=_n(s.armedTaskList));let a=i.current.readyListeners;i.current.readyListeners=[];for(let c of a)try{c()}catch{}tt(),ze(),Wa(i.current),Ir(i.current),w();return}if(e.method==="bridge/pong"){i.current&&Ga(i.current);return}if(e.method==="bridge/error"){bn({kind:"error",text:`Bridge error: ${e.params?.message??"?"}`}),w();return}if(e.method==="hydra-acp/session/closed"){i.current&&(i.current.ready=!1,Lr(i.current)),i.banner={kind:"warn",text:"Session is now cold \u2014 opening a new prompt will resurrect it."},w();return}if(e.method&&"id"in e){br(e),i.current.ready&&w();return}if(e.method){Rt(e),i.current.ready&&w();return}if("id"in e&&e.id!==void 0&&i.current.ownPromptIds.has(String(e.id))){i.current.ownPromptIds.delete(String(e.id)),xt(),w();return}if("id"in e&&e.id!==void 0){let t=i.current.responseHandlers.get(String(e.id));t&&(i.current.responseHandlers.delete(String(e.id)),t({result:e.result,error:e.error}))}}}function Tn(e,t){if(!i.current)return;let n=i.current.pendingPermissions.get(e);n&&(i.current.pendingPermissions.delete(e),i.current.log=i.current.log.filter(s=>!(s.kind==="perm"&&s.toolCallId===e)),Ya(n.requestId,{outcome:t==="__cancel__"?{outcome:"cancelled"}:{outcome:"selected",optionId:t}}),w())}var qr=[1e3,2e3,4e3,8e3,16e3,3e4],Qa=5;function Kr(e,t){let n=encodeURIComponent(e);return t?`#/session/${n}?load=true`:`#/session/${n}`}function zr(){let t=new URLSearchParams(window.location.search).get("protocol_launch");if(!t)return;history.replaceState(null,"",window.location.pathname+window.location.hash);let n;try{n=new URL(t)}catch{return}if(n.protocol!=="web+hydra:"||n.hostname!=="sessions")return;let s=decodeURIComponent(n.pathname.replace(/^\/+/,""));s&&(window.location.hash=Kr(s,!0))}var In=!1;function Gr(e){if(window.location.hash!==e){In=!0;try{history.pushState(null,"",e||window.location.pathname+window.location.search)}finally{queueMicrotask(()=>{In=!1})}}}function An(){if(In)return;let t=window.location.hash.match(/^#\/session\/([^?]+)(?:\?(.*))?$/);if(t){let n=decodeURIComponent(t[1]),r=new URLSearchParams(t[2]??"").get("load")==="true";if(i.view==="chat"&&i.current?.sessionId===n)return;he(n,r);return}i.view!=="list"&&Ae()}function he(e,t){Gr(Kr(e,t)),kn();let n=i.sessions.find(r=>r.sessionId===e),s={sessionId:e,title:n?.title??"",cwd:n?.cwd||"",agentId:n?.agentId||"",ws:null,ready:!1,log:[],toolCalls:new Map,pendingPermissions:new Map,pendingRequestById:new Map,responseHandlers:new Map,spinner:null,plan:null,mode:null,model:null,modes:[],models:[],contextUsed:null,contextSize:null,cost:null,fileOverlay:null,composerValue:_r(e),attachments:[],busy:!1,recentOwnPrompts:[],history:[],historyIndex:null,historyDraft:null,_lastMetaFp:n?`${n.title}|${n.cwd}|${n.agentId}`:"",promptQueue:[],queueByMessageId:new Map,ownPromptIds:new Set,inTurn:!1,idleListeners:[],readyListeners:[],currentPlanEntry:null,daemonSupportsAmend:!1,loadOnConnect:t,reconnectAttempt:0,headerExpanded:!1,unsolicitedTurnOpen:new Set,configOptions:[],connectionHealthy:!0};i.current=s,L({view:"chat"}),Xa(s)}async function Xa(e){let t=await ar(e.sessionId);if(i.current!==e)return;if(t){for(let s of t.frames)Rt(s);e.lastSeenMessageId=e.lastSeenMessageId??t.lastSeenMessageId,e.historyIsPartial=!0}let n=await vr(e.sessionId);if(i.current===e){for(let s of n){let r={id:s.id,text:s.text,status:"offline",aheadAtEnqueue:0,attachments:s.attachments};e.promptQueue.push(r),e.log.push({kind:"stream",role:"user",text:s.text,closed:!0,queueEntry:r,attachments:r.attachments})}(t||n.length>0)&&w(),Nn(e)}}function Wr(e){i.current===e&&(kn(),Yr(e),Mt(e),e.historyIsPartial=!1,w(),Nn(e))}function Nn(e){let t=new URL("/ws",location.href);t.protocol=location.protocol==="https:"?"wss:":"ws:",t.searchParams.set("session",e.sessionId),e.loadOnConnect&&t.searchParams.set("load","true"),e.lastSeenMessageId!==void 0&&t.searchParams.set("afterMessageId",e.lastSeenMessageId);let n=new WebSocket(t.toString());e.ws=n,n.addEventListener("open",()=>{}),n.addEventListener("message",s=>{let r;try{r=JSON.parse(String(s.data))}catch{return}Ur(r)}),n.addEventListener("close",()=>{!i.current||i.current.ws!==n||Va(i.current)}),n.addEventListener("error",()=>{})}function Va(e){e.ready=!1,Dr(e);let t=e.reconnectAttempt??0,n=qr[Math.min(t,qr.length-1)],s=t>=Qa;L({banner:s?{kind:"bad",text:"Still disconnected \u2014 retrying\u2026"}:{kind:"warn",text:"Reconnecting\u2026"}}),e.reconnectTimer=setTimeout(()=>{!i.current||i.current!==e||(e.reconnectTimer=void 0,e.reconnectAttempt=t+1,Yr(e),w(),Nn(e))},n)}function Yr(e){e.ws=null,e.ready=!1,e.pendingRequestById=new Map,e.responseHandlers=new Map,e.idleListeners=[],e.readyListeners=[],e.nextId=void 0,Kt(e)}function Ae(){Gr(""),kn(),L({view:"list",current:null,lastSessionId:i.current?.sessionId??i.lastSessionId})}function Qr(){if(i.current?.ws)try{i.current.ws.close()}catch{}}function kn(){if(i.current&&(i.current.reconnectTimer&&(clearTimeout(i.current.reconnectTimer),i.current.reconnectTimer=void 0),Kt(i.current),i.current.ws)){try{i.current.ws.close()}catch{}i.current.ws=null}}var Xr=10*1024*1024,nt=new WeakSet;function Rn(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)}MB`:e>=1024?`${(e/1024).toFixed(0)}KB`:`${e}B`}function Za(e,t){for(let n of t){if(n.size>Xr){L({banner:{kind:"warn",text:`pasted image is ${Rn(n.size)}, max ${Rn(Xr)}`}});continue}let s=new FileReader;s.onload=()=>{let r=s.result;if(typeof r!="string")return;let o=r.indexOf(",");o<0||(e.attachments.push({mimeType:n.type||"image/png",data:r.slice(o+1),sizeBytes:n.size}),w())},s.readAsDataURL(n)}}function ii(e){return`data:${e.mimeType};base64,${e.data}`}function Ja(e){return e.attachments.length===0?null:l("div",{class:"attachment-chips"},...e.attachments.map((t,n)=>l("span",{class:"attachment-chip",title:Rn(t.sizeBytes)},l("img",{class:"attachment-thumb",src:ii(t)}),l("button",{class:"attachment-remove",title:"Remove image",...A(()=>{e.attachments.splice(n,1),w()})},"\xD7"))))}function oi(e){return"untitled"}function be(e){return e.replace(/^hydra_session_/,"")}function ja(e){if(!e)return;let t=e.lastIndexOf("/");return t===-1?e:e.slice(t+1)}function ec(e,t){let n=e||"?",s=ja(t);return s?`${n}\u2022${s}`:n}function ai(e){let t=Math.floor(Math.max(0,e)/1e3);if(t<60)return"<1m";let n=Math.floor(t/60);if(n<60)return`${n}m`;let s=Math.floor(n/60);if(s<24)return`${s}h`;let r=Math.floor(s/24);if(r<14)return`${r}d`;let o=Math.floor(r/7);if(o<9)return`${o}w`;let a=Math.floor(r/30);return a<12?`${a}mo`:`${Math.floor(r/365)}y`}function tc(e,t=Date.now()){if(!e)return"?";let n=Date.parse(e);return Number.isNaN(n)?"?":ai(t-n)}function Vr(e){return Number.isFinite(e)?e<1e3?String(e):e<1e6?(e/1e3).toFixed(e<1e4?1:0).replace(/\.0$/,"")+"k":(e/1e6).toFixed(2).replace(/\.?0+$/,"")+"M":"?"}function Zr(e){let t=null,n="USD";if(typeof e=="number")t=e;else if(e&&typeof e=="object"){let r=e;if(typeof r.amount=="number")t=r.amount;else if(typeof r.total=="number")t=r.total;else if(r.total&&typeof r.total=="object"){let o=r.total;typeof o.amount=="number"&&(t=o.amount),typeof o.currency=="string"&&(n=o.currency)}typeof r.currency=="string"&&(n=r.currency)}if(t===null)return null;let s=t<.01?4:t<1?3:2;return n==="USD"?`$${t.toFixed(s)}`:`${t.toFixed(s)} ${n}`}function ci(e,t){t.banner&&e.appendChild(l("div",{class:"banner "+t.banner.kind},t.banner.text)),t.view==="list"?(e.appendChild(nc()),e.appendChild(ic())):t.view==="chat"&&t.current&&(e.appendChild(bi(t.current)),t.current.fileOverlay&&e.appendChild(Qc(t.current))),t.modal&&(t.modal.kind==="session"?e.appendChild(_c(t.modal)):t.modal.kind==="modes"&&t.current?e.appendChild(jr("Mode",t.current.modes,t.current.mode,n=>Mr(n.id))):t.modal.kind==="models"&&t.current?e.appendChild(jr("Model",t.current.models,t.current.model,n=>Rr(n.id))):t.modal.kind==="options"&&e.appendChild(lc()))}function nc(){return l("div",{class:"topbar"},l("span",{class:"pill clickable",title:"Click to toggle grouping by project/recent",...A(()=>L({groupBy:i.groupBy==="project"?"recent":"project"}))},i.groupBy),l("span",{class:"pill clickable",title:"Click to toggle showing disk-only sessions",...A(()=>{L({showCold:!i.showCold})})},i.showCold?"all":"warm"),sc(),l("span",{class:"spacer"}),l("button",{...A(di),title:"Options"},"\u2699"),l("button",{...A(gc),title:"Import a *.hydra bundle from disk"},"\u{1F4E5}"),l("button",{...A(Ec),title:"New Session"},"\uFF0B"))}function sc(){let e=new Set;for(let r of i.sessions)r.importedFromMachine&&!r.upstreamSessionId&&e.add(r.importedFromMachine);let t=[...e].sort(),n=l("select",{class:"host-select",title:"Filter sessions by origin host",onchange:r=>{let o=r.target.value;L({hostFilter:o})}}),s=(r,o)=>{let a=document.createElement("option");a.value=r,a.textContent=o,i.hostFilter===r&&(a.selected=!0),n.appendChild(a)};s("__local","local");for(let r of t)s(r,r);return s("__all","all"),i.hostFilter!=="__local"&&i.hostFilter!=="__all"&&!t.includes(i.hostFilter)&&(n.value=i.hostFilter),n}function li(){let e=i.showCold?i.sessions:i.sessions.filter(t=>t.status!=="cold");return i.hostFilter==="__local"?e=e.filter(t=>!t.importedFromMachine||!!t.upstreamSessionId):i.hostFilter!=="__all"&&(e=e.filter(t=>t.importedFromMachine===i.hostFilter&&!t.upstreamSessionId)),e}function rc(){return fi(li(),i.groupBy).flatMap(e=>e.sessions.map(t=>t.sessionId))}function ui(e){if(i.view!=="list"||pe(document.activeElement))return;if(e.key==="Escape"){let r=i.lastSessionId,o=r?i.sessions.find(a=>a.sessionId===r):void 0;if(!o)return;e.preventDefault(),he(o.sessionId,o.status==="cold");return}if(e.key!=="ArrowDown"&&e.key!=="ArrowUp"&&e.key!=="Enter")return;let t=rc();if(t.length===0)return;if(e.key==="Enter"){let r=i.listHighlightedSessionId;if(!r||!t.includes(r))return;let o=i.sessions.find(a=>a.sessionId===r);if(!o)return;e.preventDefault(),he(o.sessionId,o.status==="cold");return}e.preventDefault();let n=i.listHighlightedSessionId?t.indexOf(i.listHighlightedSessionId):-1,s=n===-1?0:e.key==="ArrowDown"?Math.min(t.length-1,n+1):Math.max(0,n-1);L({listHighlightedSessionId:t[s]})}function ic(){let e=li(),t=i.showCold?0:i.sessions.filter(r=>r.status==="cold").length,n=fi(e,i.groupBy),s=l("div",{class:"list"});if(i.listHighlightedSessionId&&queueMicrotask(()=>{document.querySelector(".card.highlighted")?.scrollIntoView({block:"nearest"})}),e.length===0){let r;i.sessions.length===0?r="No sessions. Use + to create one, or run `hydra-acp launch <agent>` from your editor.":i.hostFilter==="__local"?r="No local sessions. Switch the host filter to see imported sessions.":i.hostFilter!=="__all"?r=`No sessions from ${i.hostFilter}. Try a different host.`:r=`No warm sessions. ${t} cold session${t===1?"":"s"} hidden \u2014 click "warm" to switch to "all".`,s.appendChild(l("div",{class:"empty"},r))}for(let r of n){let o=l("div",{class:"group"});r.label&&o.appendChild(l("h2",null,r.label));for(let a of r.sessions)o.appendChild(dc(a,r.label===null));s.appendChild(o)}return s}function Jr(e,t){let n=r=>{let o=r.status==="warm";return o&&r.busy&&r.awaitingInput?4:o&&r.busy?3:o&&r.awaitingInput?2:o?1:0},s=n(t)-n(e);return s!==0?s:String(t.updatedAt||"").slice(0,16).localeCompare(String(e.updatedAt||"").slice(0,16))}function zt(e){return e.replace(/^\/(home|Users)\/[^/]+/,"~")}function xn(e,t){return l("div",{class:"detail"},l("span",{class:"k"},e),l("code",null,t))}function oc(e){let t=(n,s)=>l("button",{class:"ghost",...A(()=>Sr(n))},s);return e?l("div",{class:"detail"},l("span",{class:"k"},"workspace"),l("code",null,`${e.label}${e.clean===!1?" \xB7 dirty":""}`),t("sync","Sync"),t("stop","Stop"),t("apply","Apply")):l("div",{class:"detail"},l("span",{class:"k"},"workspace"),t("start","Start workspace"))}function ac(){return l("div",{class:"detail"},l("span",{class:"k"},"hide thoughts"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:i.hideThoughts?"":void 0,onchange:e=>{L({hideThoughts:e.target.checked})}})))}function cc(){return l("div",{class:"detail"},l("span",{class:"k"},"notify"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:i.notifyOnTurnEnd?"":void 0,onchange:e=>{if(!e.target.checked){L({notifyOnTurnEnd:!1}),Hr().then(()=>ze());return}Pr().then(n=>{if(!n){L({banner:{kind:"warn",text:"Notifications blocked \u2014 enable them for this site in your browser settings."}});return}L({notifyOnTurnEnd:!0}),qt().then(()=>ze())})}})))}function di(){L({modal:{kind:"options"}})}function lc(){return l("div",{class:"modal-bg",...A(e=>{e.target.classList.contains("modal-bg")&&Ne()})},l("div",{class:"modal"},l("h2",null,"Options"),ac(),cc(),l("div",{class:"actions"},l("button",{class:"primary",...A(Ne)},"Close"))))}function uc(e){let t=l("select",{onchange:n=>{Or(e.id,n.target.value)}},...e.options.map(n=>{let s=l("option",{value:n.value},n.name||n.value);return n.value===e.currentValue&&s.setAttribute("selected",""),s}));return t.value=e.currentValue,l("div",{class:"detail"},l("span",{class:"k",title:e.description??""},e.name||e.id),t)}function fi(e,t){if(t==="recent")return[{label:null,sessions:e.slice().sort(Jr)}];let n=new Map;for(let r of e){let o=r.cwd||"(unknown)";n.has(o)||n.set(o,[]),n.get(o).push(r)}let s=[];for(let[r,o]of[...n.entries()].sort((a,c)=>a[0].localeCompare(c[0])))o.sort(Jr),s.push({label:zt(r),sessions:o});return s}function dc(e,t){let n=e.title||oi(e.sessionId),s=[be(e.sessionId),ec(e.agentId,e.currentModel),`age ${tc(e.updatedAt)}`].join(" \xB7 "),r=!e.busy&&(e.armedTasks??0)>0;return l("div",{class:e.sessionId===i.listHighlightedSessionId?"card highlighted":"card",...A(o=>{o.target.closest("button")||he(e.sessionId,e.status==="cold")})},l("div",{class:"row1"},n),l("div",{class:"card-body"},l("div",{class:"meta"},l("div",{class:"row2"},s)),l("div",{class:"badges"},e.status==="cold"||!(e.busy||e.awaitingInput||r)?l("span",{class:`badge ${e.status==="cold"?"cold":"warm"}`,title:e.status==="cold"?"Disk-only \u2014 opening will resurrect the session":"Live in-memory session"},e.status==="cold"?"cold":"warm"):null,e.busy||r?l("span",{class:"badge busy",title:e.busy?"Agent is working":"Agent has a background task running. It may resume on its own."},"busy"):null,e.awaitingInput?l("span",{class:"badge blocked",title:"Waiting on you \u2014 a permission request or other prompt is pending"},"blocked"):null,...e.importedFromMachine&&!e.upstreamSessionId?[l("span",{class:"badge imported",title:`Passive mirror imported from ${e.importedFromMachine} \u2014 attach to start working on it here.`},`\u2190 ${e.importedFromMachine}`)]:[]),l("div",{class:"actions"},l("button",{class:"ghost",title:"Export session as *.hydra bundle",...A(()=>pi(e.sessionId))},"\u2193"),l("button",{class:"danger",...A(()=>{fc(e)})},"\xD7"))),t?l("div",{class:"row3"},e.cwd?zt(e.cwd):"?"):null)}async function fc(e){if(confirm(`Kill session ${e.title?`"${e.title}" (${be(e.sessionId)})`:be(e.sessionId)}?`))try{await ee("/api/kill",{method:"POST",body:JSON.stringify({sessionId:e.sessionId})}),ke()}catch(t){L({banner:{kind:"bad",text:"kill failed: "+t.message}})}}function pc(e){e.compactionPhase||confirm("Compact this session's context now? The agent will summarize history and continue from the summary.")&&Tr()}function pi(e){let t=document.createElement("a");t.href=`/api/sessions/${encodeURIComponent(e)}/export`,t.download="",t.rel="noopener",document.body.appendChild(t),t.click(),t.remove()}function gc(){let e=document.createElement("input");e.type="file",e.accept=".hydra,application/json",e.style.display="none",e.onchange=()=>{let t=e.files&&e.files[0];document.body.removeChild(e),t&&mc(t)},document.body.appendChild(e),e.click()}async function mc(e){let t;try{let s=await e.text();t=JSON.parse(s)}catch(s){L({banner:{kind:"bad",text:"import: bundle is not valid JSON: "+s.message}});return}let n=await vi(t);if(n.ok){let s=n.result;L({banner:{kind:"good",text:s.replaced?`Replaced ${be(s.sessionId)} from bundle`:`Imported as ${be(s.sessionId)}`}}),ke();return}if(n.status===409&&n.existingSessionId){let s=n.existingSessionId;if(!confirm(`This session is already imported locally as ${be(s)}.
465
+ `);return t.length>0&&t[t.length-1]===""&&t.pop(),n.length>0&&n[n.length-1]===""&&n.pop(),{oldLines:t,newLines:n}}var Ma=1e6;function Ra(e,t){let n=e.length,s=t.length;if(n===0||s===0||n*s>Ma){let u=[];for(let d of e)u.push({op:"-",text:d});for(let d of t)u.push({op:"+",text:d});return u}let r=Array.from({length:n+1},()=>new Array(s+1).fill(0));for(let u=n-1;u>=0;u--)for(let d=s-1;d>=0;d--)e[u]===t[d]?r[u][d]=r[u+1][d+1]+1:r[u][d]=Math.max(r[u+1][d],r[u][d+1]);let o=[],a=0,c=0;for(;a<n&&c<s;)e[a]===t[c]?(o.push({op:"=",text:e[a]}),a++,c++):r[a+1][c]>=r[a][c+1]?(o.push({op:"-",text:e[a]}),a++):(o.push({op:"+",text:t[c]}),c++);for(;a<n;)o.push({op:"-",text:e[a]}),a++;for(;c<s;)o.push({op:"+",text:t[c]}),c++;return o}function mr(e,t){let n=0,s=Math.min(e.length,t.length);for(;n<s&&e[n]===t[n];)n++;let r=e.length,o=t.length;for(;r>n&&o>n&&e[r-1]===t[o-1];)r--,o--;let a=[];for(let c=0;c<n;c++)a.push({op:"=",text:e[c]});a.push(...Ra(e.slice(n,r),t.slice(n,o)));for(let c=r;c<e.length;c++)a.push({op:"=",text:e[c]});return a}function hr(e){let{oldLines:t,newLines:n}=gr(e),s=0,r=0;for(let o of mr(t,n))o.op==="+"?s++:o.op==="-"&&r++;return{added:s,removed:r}}function br(e,t={}){let n=t.maxLines??40,s=t.contextLines??3,{oldLines:r,newLines:o}=gr(e),a=mr(r,o),c=[];if(Number.isFinite(s)){if(!a.some(g=>g.op!=="="))return[];let f=new Array(a.length).fill(!1);for(let g=0;g<a.length;g++)if(a[g].op!=="="){let b=Math.max(0,g-s),y=Math.min(a.length-1,g+s);for(let _=b;_<=y;_++)f[_]=!0}let p=0;for(;p<a.length;){if(f[p]){c.push({op:a[p].op,text:a[p].text}),p++;continue}let g=p;for(;g<a.length&&!f[g];)g++;let b=g-p;c.push({op:"gap",text:`\u22EF ${b} unchanged line${b===1?"":"s"}`}),p=g}}else for(let d of a)c.push({op:d.op,text:d.text});let u=[];for(let d=0;d<c.length;d++){if(u.length>=n-1&&d<c.length-1){let p=c.length-d;u.push({op:"gap",text:`\u2026 ${p} more line${p===1?"":"s"}`});break}u.push(c[d])}return u}var Oa="hydra-acp-history-cache";var Te="sessions";var kt=null;function yr(){return kt||(kt=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(Oa,1)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.createObjectStore(Te,{keyPath:"sessionId"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),kt)}function La(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}async function _r(e){let t=await yr();return t?new Promise(n=>{let s;try{s=t.transaction(Te,"readwrite")}catch{n(null);return}let r=s.objectStore(Te),o=r.get(e);o.onsuccess=()=>{let a=o.result;if(!a){n(null);return}a.lastAccessed=Date.now(),r.put(a),n({lastSeenMessageId:a.lastSeenMessageId,frames:a.frames.map(c=>c.frame)})},o.onerror=()=>n(null)}):null}var Se=new Map,xt=new Map,Pe;function vr(e,t,n){let s=Se.get(e)??[];s.push(t),Se.set(e,s),xt.set(e,n),Pe===void 0&&(Pe=setTimeout(()=>{Pe=void 0,wr()},2e3))}function Er(){Pe!==void 0&&(clearTimeout(Pe),Pe=void 0),wr()}async function wr(){if(Se.size===0)return;let e=Array.from(Se.keys()),t=await yr();if(!t){Se.clear(),xt.clear();return}for(let n of e){let s=Se.get(n),r=xt.get(n);Se.delete(n),xt.delete(n),!(!s||!r)&&await Da(t,n,s,r)}await Pa(t)}function Da(e,t,n,s){return new Promise(r=>{let o;try{o=e.transaction(Te,"readwrite")}catch{r();return}let a=o.objectStore(Te),c=a.get(t);c.onsuccess=()=>{let u=c.result,d=n.map(b=>({frame:b,bytes:La(b)})),f=[...u?.frames??[],...d],p=(u?.totalBytes??0)+d.reduce((b,y)=>b+y.bytes,0);for(;f.length>1&&p>1e6;){let b=f.shift();b&&(p-=b.bytes)}let g={sessionId:t,lastSeenMessageId:s,frames:f,totalBytes:p,lastAccessed:Date.now()};a.put(g),r()},c.onerror=()=>r()})}function Pa(e){return new Promise(t=>{let n;try{n=e.transaction(Te,"readwrite")}catch{t();return}let s=n.objectStore(Te),r=s.getAll();r.onsuccess=()=>{let o=r.result??[];if(o.length<=10){t();return}o.sort((c,u)=>c.lastAccessed-u.lastAccessed);let a=o.slice(0,o.length-10);for(let c of a)s.delete(c.sessionId);t()},r.onerror=()=>t()})}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",Er),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Er()}));typeof navigator<"u"&&navigator.storage?.persist&&navigator.storage.persist();function Rt(e){i.current&&i.current.log.push(e)}var Ba=new Set(["session_info_update","current_model_update","current_mode_update","available_commands_update","available_modes_update","usage_update","config_option_update","hydra_compaction","hydra_workspace","clarifier_question_asked","clarifier_question_answered","clarifier_question_dismissed"]);function Ot(e){e.log=[],e.toolCalls=new Map,e.pendingPermissions=new Map,e.spinner=null,e.plan=null,e.mode=null,e.model=null,e.modes=[],e.models=[],e.contextUsed=null,e.contextSize=null,e.cost=null,e.busy=!1,e.recentOwnPrompts=[],e.promptQueue=[],e.queueByMessageId=new Map,e.ownPromptIds=new Set,e.inTurn=!1,e.unsolicitedTurnOpen=new Set,e.currentPlanEntry=null,e.daemonSupportsAmend=!1,e.ownClientId=void 0,e.currentHeadMessageId=void 0,e.lastSeenMessageId=void 0}function Fa(e){if(e.kind!=="stream"||e.role!=="user"||!e.queueEntry)return!1;let t=e.queueEntry.status;return t==="queued"||t==="editing"}function Sr(){if(!i.current)return 0;let e=i.current.log;for(let t=0;t<e.length;t++)if(Fa(e[t]))return t;return e.length}function be(e){i.current&&i.current.log.splice(Sr(),0,e)}function Fe(){i.current&&(i.current.inTurn=!0)}function Ha(){if(!i.current)return;i.current.inTurn=!1;let e=i.current.idleListeners;i.current.idleListeners=[];for(let t of e)try{t()}catch{}}function wn(e,t,n=!1){if(!i.current)return;let s=je(t);if(!s)return;let r=i.current.log,o=Sr(),a;for(let c=o-1;c>=0;c--){let u=r[c];if(u.kind!=="spinner"){a=u;break}}if(a&&a.kind==="stream"&&a.role===e&&!a.closed&&!!a.synthetic===n){a.text+=s;return}r.splice(o,0,{kind:"stream",role:e,text:s,synthetic:n||void 0})}function He(){if(i.current)for(let e=i.current.log.length-1;e>=0;e--){let t=i.current.log[e];if(t.kind==="stream"&&!t.closed){t.closed=!0;return}}}function Tr(e){if(!i.current)return!1;let t=je(e);if(!t)return!1;let n=i.current.recentOwnPrompts;for(let s=0;s<n.length;s++)if(n[s].text===t)return n.splice(s,1),!0;return!1}function Ct(e){if(!e)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(Ct).join("");if(typeof e=="object"){let t=e;if(t.text)return String(t.text);if(t.content)return Ct(t.content);if(t.diff)return String(t.diff);try{return JSON.stringify(e,null,2)}catch{return String(e)}}return""}function Ue(){if(!i.current)return;let e=i.current;if(e.spinner){e.log.some(t=>t.kind==="spinner")||be({kind:"spinner",spinner:e.spinner});return}e.spinner={toolCallIds:[],expanded:!1},be({kind:"spinner",spinner:e.spinner})}function Ua(e){return e?e.toLowerCase().replace(/[_\s-]/g,"")==="exitplanmode":!1}function $a(e){let t=e.rawInput;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t.plan;return typeof n!="string"||n.length===0?null:n}function qa(e){if(!i.current)return null;let t=i.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="exit-plan-mode"&&s.toolCallId===e)return{idx:n,item:s}}return null}function Ir(e){if(!i.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=e.name??e.title,s=qa(t);if(!Ua(n)&&!s)return!1;let r=$a(e),o=typeof e.status=="string"?e.status:void 0;if(s)return r!==null&&(s.item.plan=r),o!==void 0&&(s.item.status=o),!0;if(r===null)return!1;He();let a={kind:"exit-plan-mode",toolCallId:t,plan:r};return o!==void 0&&(a.status=o),be(a),!0}function Ka(e){if(!i.current)return null;let t=i.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="edit-diff"&&s.toolCallId===e)return{idx:n,item:s}}return null}function Ar(e){if(!i.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=Ka(t),s=pr(e),r=typeof e.status=="string"?e.status:void 0;if(n)return s!==null&&(n.item.diff=s),r!==void 0&&(n.item.status=r),!0;if(s===null)return!1;He();let o={kind:"edit-diff",toolCallId:t,diff:s,expanded:!1};return r!==void 0&&(o.status=r),be(o),!0}function za(e){if(!i.current)return;if(He(),Ir(e)){Be(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}if(Ar(e)){Be(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}let t={toolCallId:String(e.toolCallId),title:String(e.title??e.kind??"tool"),kind:String(e.kind??""),status:String(e.status??"in_progress"),content:Ct(e.content)};i.current.toolCalls.set(t.toolCallId,t),Ue(),i.current.spinner.toolCallIds.push(t.toolCallId),Be(t.toolCallId,t.status)}function Ga(e){if(!i.current)return;if(Ir(e)){typeof e.status=="string"&&Be(String(e.toolCallId),e.status);return}if(Ar(e)){typeof e.status=="string"&&Be(String(e.toolCallId),e.status);return}let t=i.current.toolCalls.get(String(e.toolCallId));t&&(typeof e.status=="string"&&(t.status=e.status,Be(t.toolCallId,e.status)),typeof e.title=="string"&&(t.title=e.title),e.content!==void 0&&(t.content=(t.content||"")+Ct(e.content)))}function et(e){if(i.current){i.current.spinner=null,i.current.log=i.current.log.filter(t=>t.kind!=="spinner"),He();for(let t of i.current.promptQueue)t.status==="processing"&&(t.status=e==="cancelled"?"cancelled":"done");for(let t of i.current.promptQueue)t.reseatAfterCurrentTurn&&t.status!=="done"&&t.status!=="cancelled"&&(t.reseatAfterCurrentTurn=void 0,Sn(i.current,t));i.current.currentPlanEntry=null,i.current.currentHeadMessageId=void 0,Ha()}}function Wa(e){if(!i.current)return;let n=(Array.isArray(e.prompt)?e.prompt:[]).map(r=>je(r)).join("");if(!n)return;let s=typeof e.messageId=="string"?e.messageId:void 0;s&&i.current.queueByMessageId.has(s)||Tr({text:n})||(He(),be({kind:"stream",role:"user",text:n,closed:!0}))}function Nr(e){if(i.current)for(let t of e){if(!t||typeof t!="object")continue;let n=t,s=typeof n.messageId=="string"?n.messageId:"";if(!s)continue;let r=typeof n.position=="number"?n.position:0,o=i.current.queueByMessageId.get(s);if(o){r===0?(i.current.currentHeadMessageId=s,(o.status==="queued"||o.status==="pending")&&(o.status="processing")):o.status==="pending"&&(o.status="queued");continue}let a=kr(n.prompt);if(!a)continue;let c=i.current.promptQueue.find(d=>d.messageId===void 0&&d.text===a&&(d.status==="pending"||d.status==="queued"||d.status==="cancelled"));if(c){c.messageId=s,i.current.queueByMessageId.set(s,c),c.aheadAtEnqueue=Math.max(0,r),c.status=r===0?"processing":"queued",r===0&&(i.current.currentHeadMessageId=s);continue}let u={id:"snap_"+Math.random().toString(36).slice(2,10),text:a,status:r===0?"processing":"queued",aheadAtEnqueue:Math.max(0,r),messageId:s};if(i.current.queueByMessageId.set(s,u),r===0){i.current.currentHeadMessageId=s;let d=Ya(a);if(d){d.queueEntry=u;continue}}i.current.log.push({kind:"stream",role:"user",text:a,closed:!0,queueEntry:u})}}function Ya(e){if(!i.current)return null;let t=i.current.log;for(let n=t.length-1;n>=0;n--){let s=t[n];if(s.kind==="stream"&&s.role==="user"&&!s.queueEntry&&s.text===e)return s}return null}function kr(e){let t=Array.isArray(e)?e:[],n="";for(let s of t)if(s&&typeof s=="object"){let r=s;r.type==="text"&&typeof r.text=="string"&&(n+=r.text)}return n}function Qa(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let s=(e._meta??{})["hydra-acp"]??{},r=typeof s.amending=="string"?s.amending:void 0,o=e.originator??{},a=typeof o.clientId=="string"?o.clientId:"",c=!!i.current.ownClientId&&a===i.current.ownClientId,u=kr(e.prompt);if(c){let _=i.current.promptQueue.find(E=>E.messageId===void 0&&(E.status==="pending"||E.status==="queued"||E.status==="editing"))??i.current.promptQueue.find(E=>E.messageId===void 0&&E.status==="cancelled"&&E.text===u);if(!_)return;_.messageId=t,i.current.queueByMessageId.set(t,_),r!==void 0&&(_.amendsMessageId=r,Mt(r,t));let m=typeof e.position=="number"?e.position:1;_.aheadAtEnqueue=Math.max(0,m),m===0?_.status="processing":(_.status==="pending"||_.status==="cancelled")&&(_.status="queued");return}let d=u;if(!d)return;let f=typeof e.position=="number"?e.position:0,p=typeof e.queueDepth=="number"?e.queueDepth:1,g={id:"peer_"+Math.random().toString(36).slice(2,10),text:d,status:f===0?"processing":"queued",aheadAtEnqueue:Math.max(0,f),messageId:t};r!==void 0&&(g.amendsMessageId=r,Mt(r,t)),i.current.queueByMessageId.set(t,g),He();let b={kind:"stream",role:"user",text:d,closed:!0,queueEntry:g};f===0?be(b):i.current.log.push(b)}function Xa(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=i.current.queueByMessageId.get(t);if(!n)return;let s=Array.isArray(e.prompt)?e.prompt:[],r="";for(let o of s)if(o&&typeof o=="object"){let a=o;a.type==="text"&&typeof a.text=="string"&&(r+=a.text)}if(r){n.text=r;for(let o of i.current.log)if(o.kind==="stream"&&o.role==="user"&&o.queueEntry===n){o.text=r;break}}}function Sn(e,t){let n=e.log.findIndex(r=>r.kind==="stream"&&r.queueEntry===t);if(n<0||n===e.log.length-1)return;let[s]=e.log.splice(n,1);s&&e.log.push(s)}function Va(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=typeof e.reason=="string"?e.reason:"";n==="started"&&(i.current.currentHeadMessageId=t);let s=i.current.queueByMessageId.get(t);s&&(n==="started"?(s.status="processing",s.reseatAfterCurrentTurn=void 0):(n==="cancelled"||n==="abandoned")&&(s.amendedByMessageId!==void 0?s.status="amended":s.status="cancelled",i.current.queueByMessageId.delete(t)))}function Za(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=i.current.queueByMessageId.get(t);n&&(n.held=!0)}function Ja(e){if(!i.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=i.current.queueByMessageId.get(t);n&&(n.held=!1)}function ja(e){i.current&&typeof e.count=="number"&&(i.current.armedTasks=e.count,i.current.armedSince=e.count>0&&typeof e.since=="number"?e.since:void 0,i.current.armedTaskList=Tn(e.tasks))}function Tn(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!n||typeof n!="object")continue;let s=n;typeof s.label!="string"||typeof s.since!="number"||t.push({label:s.label,since:s.since,taskId:typeof s.taskId=="string"?s.taskId:void 0,taskType:typeof s.taskType=="string"?s.taskType:void 0,toolCallId:typeof s.toolCallId=="string"?s.toolCallId:void 0})}return t}function ec(e){if(!i.current)return;switch(typeof e.phase=="string"?e.phase:""){case"started":case"iteration":i.current.compactionPhase="running";break;case"deferred":i.current.compactionPhase="deferred";break;case"swapped":i.current.compactionPhase=void 0,M({banner:{kind:"good",text:"Context compacted."}});break;case"failed":i.current.compactionPhase=void 0,M({banner:{kind:"bad",text:"Context compaction failed."}});break;case"rolled_back":i.current.compactionPhase=void 0,M({banner:{kind:"warn",text:"Compaction rolled back."}});break;default:break}}function tc(e){if(!i.current)return;let t=typeof e.cancelledMessageId=="string"?e.cancelledMessageId:"",n=typeof e.newMessageId=="string"?e.newMessageId:"";if(!t||!n)return;Mt(t,n);let s=i.current.queueByMessageId.get(n);s&&s.amendsMessageId===void 0&&(s.amendsMessageId=t)}function Mt(e,t){if(!i.current)return;let n=i.current.queueByMessageId.get(e)??i.current.promptQueue.find(s=>s.messageId===e);n&&(n.amendedByMessageId=t,n.status==="cancelled"&&(n.status="amended"))}function nc(e){if(!i.current)return;let t=e.entries??e.plan??null;if(i.current.plan=t,i.current.currentPlanEntry){i.current.currentPlanEntry.entries=t;return}let n={kind:"plan",entries:t};be(n),i.current.currentPlanEntry=n}function sc(e){if(!i.current)return;let t=typeof e?.toolCallId=="string"?e.toolCallId:void 0;t&&xr(t)}function xr(e){i.current&&(i.current.pendingPermissions.delete(e),i.current.log=i.current.log.filter(t=>!(t.kind==="perm"&&t.toolCallId===e)))}function Be(e,t){!i.current||!e||!t||t==="pending"||i.current.pendingPermissions.has(e)&&xr(e)}function Lt(e){if(i.current?.cold&&(i.current.cold=!1,i.current.ready=!0),e.method==="hydra-acp/prompt_queue/added"){Qa(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/updated"){Xa(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/removed"){Va(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/held"){Za(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/released"){Ja(e.params??{});return}if(e.method==="hydra-acp/session/armed_tasks_updated"){ja(e.params??{});return}if(e.method==="hydra-acp/prompt/amended"){tc(e.params??{});return}if(e.method!=="session/update")return;let t=e.params?.update??null;if(!t||typeof t!="object")return;let n=String(t.sessionUpdate??"");if(i.current&&n&&!Ba.has(n)&&typeof t.messageId=="string"&&(i.current.lastSeenMessageId=t.messageId,vr(i.current.sessionId,e,t.messageId)),n==="permission_resolved"){sc(t);return}let r=(t._meta??{})["hydra-acp"]??{},o=n==="agent_message_chunk"&&r.synthetic===!0;switch(n){case"prompt_received":case"user_message_chunk":case"agent_message_chunk":case"agent_thought_chunk":case"tool_call":case"tool_call_update":case"plan":o||Fe();break;default:break}switch(n){case"user_message_chunk":{if(r.compatFor==="prompt_received")break;Tr(t.content)||wn("user",t.content);break}case"agent_message_chunk":wn("agent",t.content,o);break;case"agent_thought_chunk":wn("thought",t.content);break;case"tool_call":za(t);break;case"tool_call_update":Ga(t);break;case"current_mode_update":i.current&&(i.current.mode=t.modeId??t.currentModeId??null,Array.isArray(t.availableModes)&&(i.current.modes=t.availableModes),w());break;case"available_modes_update":i.current&&Array.isArray(t.availableModes)&&(i.current.modes=t.availableModes,w());break;case"current_model_update":i.current&&(i.current.model=t.modelId??t.currentModelId??null,Array.isArray(t.availableModels)&&(i.current.models=t.availableModels),w());break;case"config_option_update":i.current&&Array.isArray(t.configOptions)&&(i.current.configOptions=t.configOptions,w());break;case"usage_update":if(i.current){let a=t.used??t.contextUsed,c=t.size??t.contextSize;typeof a=="number"&&(i.current.contextUsed=a),typeof c=="number"&&(i.current.contextSize=c),t.cost&&(i.current.cost=t.cost)}break;case"plan":nc(t);break;case"prompt_received":Wa(t);break;case"stop":case"turn_complete":{let u=((t._meta??{})["hydra-acp"]??{}).amended;if(u){let f=typeof u.cancelledMessageId=="string"?u.cancelledMessageId:"",p=typeof u.newMessageId=="string"?u.newMessageId:"";f&&p&&Mt(f,p)}let d=typeof t.stopReason=="string"?t.stopReason:void 0;et(d);break}case"turn_started":{if(!i.current)break;let c=(t._meta??{})["hydra-acp"]??{};if(c.unsolicited!==!0)break;let u=typeof t.messageId=="string"?t.messageId:void 0;if(!u||i.current.unsolicitedTurnOpen.has(u))break;i.current.unsolicitedTurnOpen.add(u),Fe();let d=c.cause??{},f=typeof d.label=="string"?d.label:void 0;be({kind:"system",text:f?`agent resumed on its own: background task finished (${f})`:"agent resumed on its own"});break}case"turn_ended":{if(!i.current)break;let c=(t._meta??{})["hydra-acp"]??{};if(c.unsolicited!==!0)break;let u=typeof t.startedMessageId=="string"?t.startedMessageId:void 0;if(!u||!i.current.unsolicitedTurnOpen.has(u)||(i.current.unsolicitedTurnOpen.delete(u),c.reason==="superseded")||i.current.unsolicitedTurnOpen.size>0)break;et();break}case"session_info_update":i.current&&typeof t.title=="string"&&(i.current.title=t.title);break;case"hydra_compaction":ec(t);break;default:break}i.current?.inTurn&&Ue()}function Cr(e){if(i.current){if(e.method==="session/request_permission"){let t=e.params??{},n=t.toolCall??{},s=typeof n.toolCallId=="string"?n.toolCallId:"";if(!s){i.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32602,message:"missing toolCall.toolCallId"}}));return}i.current.pendingPermissions.set(s,{requestId:e.id,toolCallId:s,toolCall:n,options:t.options??[]}),Rt({kind:"perm",toolCallId:s});return}i.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32601,message:`method not handled: ${String(e.method)}`}}))}}var rc="hydra-acp-draft:";function Dt(e){return rc+e}function Rr(e){try{return localStorage.getItem(Dt(e))??""}catch{return""}}var Pt=new Map,Ie;function $e(e,t){Pt.set(e,t),Ie!==void 0&&clearTimeout(Ie),Ie=setTimeout(()=>{Ie=void 0,Or()},400)}function Bt(e){Pt.delete(e);try{localStorage.removeItem(Dt(e))}catch{}}function Or(){for(let[e,t]of Pt)try{t?localStorage.setItem(Dt(e),t):localStorage.removeItem(Dt(e))}catch{}Pt.clear()}function Mr(){Ie!==void 0&&(clearTimeout(Ie),Ie=void 0),Or()}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",Mr),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Mr()}));var ic="hydra-acp-offline-queue";var Ae="sessions",Ft=null;function In(){return Ft||(Ft=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(ic,1)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.createObjectStore(Ae,{keyPath:"sessionId"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),Ft)}async function Lr(e){let t=await In();return t?new Promise(n=>{let s;try{s=t.transaction(Ae,"readonly")}catch{n([]);return}let r=s.objectStore(Ae).get(e);r.onsuccess=()=>{let o=r.result;n(o?.entries??[])},r.onerror=()=>n([])}):[]}async function An(e,t){let n=await In();if(n)return new Promise(s=>{let r;try{r=n.transaction(Ae,"readwrite")}catch{s();return}let o=r.objectStore(Ae),a=o.get(e);a.onsuccess=()=>{let c=a.result??{sessionId:e,entries:[]},u=c.entries.findIndex(d=>d.id===t.id);u>=0?c.entries[u]=t:c.entries.push(t),o.put(c),s()},a.onerror=()=>s()})}async function Ht(e,t){let n=await In();if(n)return new Promise(s=>{let r;try{r=n.transaction(Ae,"readwrite")}catch{s();return}let o=r.objectStore(Ae),a=o.get(e);a.onsuccess=()=>{let c=a.result;if(!c){s();return}c.entries=c.entries.filter(u=>u.id!==t),c.entries.length===0?o.delete(e):o.put(c),s()},a.onerror=()=>s()})}function tt(e,t){let n=[];e&&n.push({type:"text",text:e});for(let s of t)n.push({type:"image",data:s.data,mimeType:s.mimeType});return n}function nt(){let e=i.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;!t&&n.length===0||(kn(e,t,{attachments:n})&&(e.composerValue="",e.attachments=[],Bt(e.sessionId)),w())}function Pr(e){let t=i.current;t&&(kn(t,`/hydra workspace ${e}`,{addToHistory:!1}),w())}function Br(){let e=i.current;e&&(kn(e,"/hydra compact",{addToHistory:!1}),w())}function kn(e,t,n={}){let s=n.attachments??[],r=!e.connectionHealthy||!navigator.onLine||!e.ws||e.ws.readyState!==WebSocket.OPEN,o=e.promptQueue.filter(p=>p.status==="queued"||p.status==="pending"||p.status==="processing").length,a=e.inTurn&&!e.promptQueue.some(p=>p.status==="processing"),c=r?0:o+(a?1:0),u={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:r?"offline":c>0?"queued":"pending",aheadAtEnqueue:c,attachments:s.length>0?s:void 0};e.promptQueue.push(u),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:u,attachments:u.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let d=Date.now()-6e4;if(e.recentOwnPrompts=e.recentOwnPrompts.filter(p=>p.at>=d).slice(-16),r)return An(e.sessionId,{id:u.id,text:t,attachments:u.attachments}),$t(e),(n.addToHistory??!0)&&Nn(e,t),!0;let f=ue("session/prompt",{sessionId:e.sessionId,prompt:tt(t,s)});return f!==void 0&&e.ownPromptIds.add(String(f)),Ue(),Fe(),$t(e),(n.addToHistory??!0)&&Nn(e,t),!0}function Fr(e){let t=!1;for(let n of e.promptQueue){if(n.status!=="offline")continue;if(!e.ws||e.ws.readyState!==WebSocket.OPEN)break;t=!0;let s=e.promptQueue.filter(c=>c.status==="queued"||c.status==="pending"||c.status==="processing").length,r=e.inTurn&&!e.promptQueue.some(c=>c.status==="processing"),o=s+(r?1:0);n.aheadAtEnqueue=o,n.status=o>0?"queued":"pending";let a=ue("session/prompt",{sessionId:e.sessionId,prompt:tt(n.text,n.attachments??[])});a!==void 0&&e.ownPromptIds.add(String(a)),Ht(e.sessionId,n.id),Sn(e,n),e.inTurn&&(n.reseatAfterCurrentTurn=!0)}t&&(Ue(),Fe())}var Dr=100;function Nn(e,t){e.history[0]!==t&&(e.history.unshift(t),e.history.length>Dr&&(e.history.length=Dr)),e.historyIndex=null,e.historyDraft=null}function qt(e){let t=i.current;if(t){if(e.messageId!==void 0){ue("hydra-acp/prompt/cancel",{sessionId:t.sessionId,messageId:e.messageId});return}e.status==="offline"&&Ht(t.sessionId,e.id),e.status="cancelled",w()}}function Hr(e,t){let n=i.current;if(!n)return;let s=t.trim();if(s){if(e.status==="offline"){e.text=s,An(n.sessionId,{id:e.id,text:s,attachments:e.attachments}),w();return}if(e.messageId===void 0){e.text=s,w();return}ue("hydra-acp/prompt/update",{sessionId:n.sessionId,messageId:e.messageId,prompt:tt(s,e.attachments??[])})}}function Ur(){let e=i.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;if(!t&&n.length===0)return;if(!e.connectionHealthy||!navigator.onLine||!e.ws||e.ws.readyState!==WebSocket.OPEN){e.log.push({kind:"error",text:"Not connected to session \u2014 prompt not sent."}),e.composerValue="",e.attachments=[],Bt(e.sessionId),w();return}if(!e.daemonSupportsAmend||e.currentHeadMessageId===void 0){nt();return}let s=e.currentHeadMessageId,r=e.composerValue;e.composerValue="",e.attachments=[],Bt(e.sessionId),Nn(e,t);let o={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:"pending",aheadAtEnqueue:0,amendsMessageId:s,attachments:n.length>0?n:void 0};e.promptQueue.push(o),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:o,attachments:o.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let a=Date.now()-6e4;e.recentOwnPrompts=e.recentOwnPrompts.filter(c=>c.at>=a).slice(-16),Ue(),Fe(),$t(e),oc(o,r,s,t),w()}function oc(e,t,n,s){let r=i.current;if(!r)return;let o=ue("_session/steering",{sessionId:r.sessionId,prompt:tt(s,e.attachments??[])});o!==void 0&&r.responseHandlers.set(String(o),a=>{ac(e,t,n,s,a)})}function ac(e,t,n,s,r){let o=i.current;if(!o)return;if(r.error){if(r.error?.code===-32601){cc(e,t,n,s);return}Ut(o,e,t),M({banner:{kind:"bad",text:`steering failed: ${$r(r.error)}`}});return}let a=r.result??{};if(a.outcome==="injected"){e.status="processing",w();return}a.outcome!=="startedNewTurn"&&(Ut(o,e,t),M({banner:{kind:"warn",text:"steering failed"}}))}function cc(e,t,n,s){let r=i.current;if(!r)return;let o=ue("hydra-acp/prompt/amend",{sessionId:r.sessionId,targetMessageId:n,prompt:tt(s,e.attachments??[])});o!==void 0&&r.responseHandlers.set(String(o),a=>{lc(e,t,a)})}function lc(e,t,n){let s=i.current;if(!s)return;if(n.error){Ut(s,e,t),M({banner:{kind:"bad",text:`amend failed: ${$r(n.error)}`}});return}let r=n.result??{};if(r.amended&&r.reason==="ok")return;Ut(s,e,t);let o="amend rejected";r.reason==="target_completed"?o="previous response finished \u2014 press Send to send as a new turn":r.reason==="target_cancelled"?o="amend skipped \u2014 previous turn was cancelled":r.reason==="target_not_found"&&(o="amend skipped \u2014 no matching prompt"),M({banner:{kind:"warn",text:o}})}function Ut(e,t,n){let s=e.promptQueue.indexOf(t);s>=0&&e.promptQueue.splice(s,1),e.log=e.log.filter(r=>!(r.kind==="stream"&&r.role==="user"&&r.queueEntry===t)),e.composerValue=n,e.attachments=t.attachments??[],$e(e.sessionId,n),w()}function $r(e){if(e&&typeof e=="object"&&"message"in e){let t=e.message;if(typeof t=="string")return t}return"unknown error"}function qr(){let e=i.current;!e||!e.inTurn||qe("session/cancel",{sessionId:e.sessionId})}function Kr(){let e=i.current;if(!e)return;let t=!1;for(let n of e.promptQueue)(n.status==="queued"||n.status==="pending")&&(qt(n),t=!0);e.inTurn&&qe("session/cancel",{sessionId:e.sessionId}),t&&w()}function zr(e){i.current&&ue("session/set_mode",{sessionId:i.current.sessionId,modeId:e})}function Gr(e){i.current&&ue("session/set_model",{sessionId:i.current.sessionId,modelId:e})}function Wr(e,t){let n=i.current;if(!n)return;let s=ue("session/set_config_option",{sessionId:n.sessionId,configId:e,value:t});s!==void 0&&n.responseHandlers.set(String(s),r=>{let o=r.result?.configOptions;Array.isArray(o)&&i.current===n&&(n.configOptions=o,w())})}function Yr(e){for(let t of e.promptQueue)t.status!=="done"&&t.status!=="cancelled"&&(t.status==="offline"&&Ht(e.sessionId,t.id),t.status="cancelled",t.messageId!==void 0&&e.queueByMessageId.delete(t.messageId))}function Qr(e){for(let t of e.promptQueue)t.messageId===void 0&&t.status!=="done"&&t.status!=="cancelled"&&t.status!=="offline"&&(t.status="cancelled")}var Kt=null;async function Ke(){if(Kt)return Kt;if(!("serviceWorker"in navigator))return null;try{return Kt=await navigator.serviceWorker.register("/sw.js"),Kt}catch{return null}}async function Xr(){return typeof Notification>"u"||!await Ke()?!1:Notification.permission==="granted"?!0:Notification.permission==="denied"?!1:await Notification.requestPermission()==="granted"}function Vr(){return document.visibilityState!=="visible"||!document.hasFocus()}async function Zr(){let e=await Ke();return!e||!("pushManager"in e)?void 0:(await e.pushManager.getSubscription())?.endpoint}function uc(e){let t="=".repeat((4-e.length%4)%4),n=(e+t).replace(/-/g,"+").replace(/_/g,"/"),s=atob(n);return Uint8Array.from(s,r=>r.charCodeAt(0))}async function zt(){let e=await Ke();if(!(!e||!("pushManager"in e)))try{let{publicKey:t}=await ee("/api/push/vapid-public-key"),n=await e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:uc(t)});await ee("/api/push/subscribe",{method:"POST",body:JSON.stringify(n.toJSON())})}catch(t){console.warn("push subscribe failed:",t)}}async function Jr(){let e=await Ke();if(!(!e||!("pushManager"in e)))try{let t=await e.pushManager.getSubscription();if(!t)return;let n=t.endpoint;await t.unsubscribe(),await ee("/api/push/unsubscribe",{method:"POST",body:JSON.stringify({endpoint:n})})}catch(t){console.warn("push unsubscribe failed:",t)}}function ue(e,t){let n=i.current;if(!n||!n.ws||n.ws.readyState!==WebSocket.OPEN)return;let s=n.nextId=n.nextId??1;return n.nextId=s+1,n.ws.send(JSON.stringify({jsonrpc:"2.0",id:s,method:e,params:t})),s}function qe(e,t){let n=i.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",method:e,params:t}))}function st(){qe("bridge/visibility",{visible:!Vr()})}function ze(){Zr().then(e=>{qe("bridge/push-endpoint",{endpoint:e??null})})}var dc=1e4,fc=5e3;function jr(e){e.heartbeatTimer=setTimeout(()=>pc(e),dc)}function pc(e){i.current!==e||!e.ws||e.ws.readyState!==WebSocket.OPEN||(qe("bridge/ping",{}),e.heartbeatDeadline=setTimeout(()=>{e.connectionHealthy=!1,w();try{e.ws?.close()}catch{}},fc))}function gc(e){e.connectionHealthy=!0,e.heartbeatDeadline!==void 0&&(clearTimeout(e.heartbeatDeadline),e.heartbeatDeadline=void 0),jr(e)}function mc(e){Gt(e),e.connectionHealthy=!0,jr(e)}function Gt(e){e.heartbeatTimer!==void 0&&(clearTimeout(e.heartbeatTimer),e.heartbeatTimer=void 0),e.heartbeatDeadline!==void 0&&(clearTimeout(e.heartbeatDeadline),e.heartbeatDeadline=void 0)}function hc(e,t){let n=i.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",id:e,result:t}))}function ei(e){if(i.current){if(e.method==="bridge/replay_policy"){e.params?.policy!=="after_message"&&Ot(i.current);return}if(e.method==="bridge/ready"){i.current.ready=!0,i.current.cold=!1,i.banner=null,i.current.reconnectAttempt=0;let t=e.params??{};typeof t.clientId=="string"&&(i.current.ownClientId=t.clientId),Array.isArray(t.configOptions)&&(i.current.configOptions=t.configOptions);let s=t._meta?.["hydra-acp"],r=s?.queue;Array.isArray(r)&&Nr(r),s?.prompt?.amending===!0&&(i.current.daemonSupportsAmend=!0),typeof s?.armedTasks=="number"&&(i.current.armedTasks=s.armedTasks,i.current.armedSince=s.armedTasks>0&&typeof s.armedSince=="number"?s.armedSince:void 0,i.current.armedTaskList=Tn(s.armedTaskList));let a=i.current.readyListeners;i.current.readyListeners=[];for(let c of a)try{c()}catch{}st(),ze(),mc(i.current),Fr(i.current),w();return}if(e.method==="bridge/pong"){i.current&&gc(i.current);return}if(e.method==="bridge/error"){Rt({kind:"error",text:`Bridge error: ${e.params?.message??"?"}`}),w();return}if(e.method==="hydra-acp/session/closed"){i.current&&(i.current.ready=!1,i.current.cold=!0,Yr(i.current)),w();return}if(e.method&&"id"in e){Cr(e),i.current.ready&&w();return}if(e.method){Lt(e),i.current.ready&&w();return}if("id"in e&&e.id!==void 0&&i.current.ownPromptIds.has(String(e.id))){if(i.current.ownPromptIds.delete(String(e.id)),i.current.cold&&(i.current.cold=!1,i.current.ready=!0),e.error){let s=e.error;Rt({kind:"error",text:`Prompt failed: ${s.message??"unknown error"}`}),et(),w();return}let t=e.result,n=typeof t?.stopReason=="string"?t.stopReason:void 0;et(n),w();return}if("id"in e&&e.id!==void 0){let t=i.current.responseHandlers.get(String(e.id));t&&(i.current.responseHandlers.delete(String(e.id)),t({result:e.result,error:e.error}))}}}function xn(e,t){if(!i.current)return;let n=i.current.pendingPermissions.get(e);n&&(i.current.pendingPermissions.delete(e),i.current.log=i.current.log.filter(s=>!(s.kind==="perm"&&s.toolCallId===e)),hc(n.requestId,{outcome:t==="__cancel__"?{outcome:"cancelled"}:{outcome:"selected",optionId:t}}),w())}var ti=[1e3,2e3,4e3,8e3,16e3,3e4],bc=5;function ni(e,t){let n=encodeURIComponent(e);return t?`#/session/${n}?load=true`:`#/session/${n}`}function si(){let t=new URLSearchParams(window.location.search).get("protocol_launch");if(!t)return;history.replaceState(null,"",window.location.pathname+window.location.hash);let n;try{n=new URL(t)}catch{return}if(n.protocol!=="web+hydra:"||n.hostname!=="sessions")return;let s=decodeURIComponent(n.pathname.replace(/^\/+/,""));s&&(window.location.hash=ni(s,!0))}var Cn=!1;function ri(e){if(window.location.hash!==e){Cn=!0;try{history.pushState(null,"",e||window.location.pathname+window.location.search)}finally{queueMicrotask(()=>{Cn=!1})}}}function Mn(){if(Cn)return;let t=window.location.hash.match(/^#\/session\/([^?]+)(?:\?(.*))?$/);if(t){let n=decodeURIComponent(t[1]),r=new URLSearchParams(t[2]??"").get("load")==="true";if(i.view==="chat"&&i.current?.sessionId===n)return;Ge(n,r);return}i.view!=="list"&&Ne()}function Ge(e,t){ri(ni(e,t)),On();let n=i.sessions.find(r=>r.sessionId===e),s={sessionId:e,title:n?.title??"",cwd:n?.cwd||"",agentId:n?.agentId||"",ws:null,ready:!1,log:[],toolCalls:new Map,pendingPermissions:new Map,pendingRequestById:new Map,responseHandlers:new Map,spinner:null,plan:null,mode:null,model:null,modes:[],models:[],contextUsed:null,contextSize:null,cost:null,fileOverlay:null,composerValue:Rr(e),attachments:[],busy:!1,recentOwnPrompts:[],history:[],historyIndex:null,historyDraft:null,_lastMetaFp:n?`${n.title}|${n.cwd}|${n.agentId}`:"",promptQueue:[],queueByMessageId:new Map,ownPromptIds:new Set,inTurn:!1,idleListeners:[],readyListeners:[],currentPlanEntry:null,daemonSupportsAmend:!1,loadOnConnect:t,reconnectAttempt:0,headerExpanded:!1,unsolicitedTurnOpen:new Set,configOptions:[],connectionHealthy:!0};i.current=s,M({view:"chat",listHighlightedSessionId:e}),Ec(s)}async function Ec(e){let t=await _r(e.sessionId);if(i.current!==e)return;if(t){for(let s of t.frames)Lt(s);e.lastSeenMessageId=e.lastSeenMessageId??t.lastSeenMessageId,e.historyIsPartial=!0}let n=await Lr(e.sessionId);if(i.current===e){for(let s of n){let r={id:s.id,text:s.text,status:"offline",aheadAtEnqueue:0,attachments:s.attachments};e.promptQueue.push(r),e.log.push({kind:"stream",role:"user",text:s.text,closed:!0,queueEntry:r,attachments:r.attachments})}(t||n.length>0)&&w(),Rn(e)}}function ii(e){i.current===e&&(On(),oi(e),Ot(e),e.historyIsPartial=!1,w(),Rn(e))}function Rn(e){let t=new URL("/ws",location.href);t.protocol=location.protocol==="https:"?"wss:":"ws:",t.searchParams.set("session",e.sessionId),e.loadOnConnect&&t.searchParams.set("load","true"),e.lastSeenMessageId!==void 0&&t.searchParams.set("afterMessageId",e.lastSeenMessageId);let n=new WebSocket(t.toString());e.ws=n,n.addEventListener("open",()=>{}),n.addEventListener("message",s=>{let r;try{r=JSON.parse(String(s.data))}catch{return}ei(r)}),n.addEventListener("close",()=>{!i.current||i.current.ws!==n||yc(i.current)}),n.addEventListener("error",()=>{})}function yc(e){e.ready=!1,Qr(e);let t=e.reconnectAttempt??0,n=ti[Math.min(t,ti.length-1)],s=t>=bc;M({banner:s?{kind:"bad",text:"Still disconnected \u2014 retrying\u2026"}:{kind:"warn",text:"Reconnecting\u2026"}}),e.reconnectTimer=setTimeout(()=>{!i.current||i.current!==e||(e.reconnectTimer=void 0,e.reconnectAttempt=t+1,oi(e),w(),Rn(e))},n)}function oi(e){e.ws=null,e.ready=!1,e.pendingRequestById=new Map,e.responseHandlers=new Map,e.idleListeners=[],e.readyListeners=[],e.nextId=void 0,Gt(e)}function Ne(){ri(""),On();let e=i.current?.sessionId??i.lastSessionId;M({view:"list",current:null,lastSessionId:e,listHighlightedSessionId:e??i.listHighlightedSessionId})}function ai(){if(i.current?.ws)try{i.current.ws.close()}catch{}}function On(){if(i.current&&(i.current.reconnectTimer&&(clearTimeout(i.current.reconnectTimer),i.current.reconnectTimer=void 0),Gt(i.current),i.current.ws)){try{i.current.ws.close()}catch{}i.current.ws=null}}var ci="(prefers-color-scheme: dark)";function _c(){return i.theme==="system"?window.matchMedia(ci).matches?"dark":"light":i.theme}function Wt(){let e=_c();document.documentElement.setAttribute("data-theme",e),document.querySelector('meta[name="theme-color"]')?.setAttribute("content",e==="light"?"#ffffff":"#0e1116")}function li(){Wt(),window.matchMedia(ci).addEventListener("change",()=>{i.theme==="system"&&Wt()})}var ui=10*1024*1024,rt=new WeakSet;function Bn(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)}MB`:e>=1024?`${(e/1024).toFixed(0)}KB`:`${e}B`}function vc(e,t){for(let n of t){if(n.size>ui){M({banner:{kind:"warn",text:`pasted image is ${Bn(n.size)}, max ${Bn(ui)}`}});continue}let s=new FileReader;s.onload=()=>{let r=s.result;if(typeof r!="string")return;let o=r.indexOf(",");o<0||(e.attachments.push({mimeType:n.type||"image/png",data:r.slice(o+1),sizeBytes:n.size}),w())},s.readAsDataURL(n)}}function _i(e){return`data:${e.mimeType};base64,${e.data}`}function wc(e){return e.attachments.length===0?null:l("div",{class:"attachment-chips"},...e.attachments.map((t,n)=>l("span",{class:"attachment-chip",title:Bn(t.sizeBytes)},l("img",{class:"attachment-thumb",src:_i(t)}),l("button",{class:"attachment-remove",title:"Remove image",...I(()=>{e.attachments.splice(n,1),w()})},"\xD7"))))}function vi(e){return"untitled"}function Ee(e){return e.replace(/^hydra_session_/,"")}function Sc(e){if(!e)return;let t=e.lastIndexOf("/");return t===-1?e:e.slice(t+1)}function Tc(e,t){let n=e||"?",s=Sc(t);return s?`${n}\u2022${s}`:n}function wi(e){let t=Math.floor(Math.max(0,e)/1e3);if(t<60)return"<1m";let n=Math.floor(t/60);if(n<60)return`${n}m`;let s=Math.floor(n/60);if(s<24)return`${s}h`;let r=Math.floor(s/24);if(r<14)return`${r}d`;let o=Math.floor(r/7);if(o<9)return`${o}w`;let a=Math.floor(r/30);return a<12?`${a}mo`:`${Math.floor(r/365)}y`}function Ic(e,t=Date.now()){if(!e)return"?";let n=Date.parse(e);return Number.isNaN(n)?"?":wi(t-n)}function di(e){return Number.isFinite(e)?e<1e3?String(e):e<1e6?(e/1e3).toFixed(e<1e4?1:0).replace(/\.0$/,"")+"k":(e/1e6).toFixed(2).replace(/\.?0+$/,"")+"M":"?"}function fi(e){let t=null,n="USD";if(typeof e=="number")t=e;else if(e&&typeof e=="object"){let r=e;if(typeof r.amount=="number")t=r.amount;else if(typeof r.total=="number")t=r.total;else if(r.total&&typeof r.total=="object"){let o=r.total;typeof o.amount=="number"&&(t=o.amount),typeof o.currency=="string"&&(n=o.currency)}typeof r.currency=="string"&&(n=r.currency)}if(t===null)return null;let s=t<.01?4:t<1?3:2;return n==="USD"?`$${t.toFixed(s)}`:`${t.toFixed(s)} ${n}`}function Si(e,t){t.banner&&e.appendChild(l("div",{class:"banner "+t.banner.kind},t.banner.text)),ie()?e.appendChild(kc(t)):t.view==="list"?(e.appendChild(Ii()),e.appendChild(xi())):t.view==="chat"&&t.current&&(e.appendChild(Qt(t.current)),t.current.fileOverlay&&e.appendChild(Fi(t.current))),t.modal&&(t.modal.kind==="session"?e.appendChild(Gc(t.modal)):t.modal.kind==="modes"&&t.current?e.appendChild(gi("Mode",t.current.modes,t.current.mode,n=>zr(n.id))):t.modal.kind==="models"&&t.current?e.appendChild(gi("Model",t.current.models,t.current.model,n=>Gr(n.id))):t.modal.kind==="options"&&e.appendChild(Pc()))}function Ti(){return[Ii(),xi()]}function Ac(){let e=l("div",{class:"rail",tabindex:"-1","data-focus-key":"list-rail"},...Ti());return Un(),e}function Nc(e){if(!Ui())return;let t=e.querySelector(".list"),n=t?t.scrollTop:null;if(e.replaceChildren(...Ti()),Un(),n!==null){let s=e.querySelector(".list");s&&(s.scrollTop=n)}}function kc(e){let t=l("div",{class:"split-detail"});return e.current?(t.appendChild(Qt(e.current)),e.current.fileOverlay&&t.appendChild(Fi(e.current))):t.appendChild(l("div",{class:"split-detail-empty"},"Select a session from the list")),l("div",{class:"split"},Ac(),t)}function Yt(){let e=document.querySelector('[data-focus-key="list-rail"]');e&&(i.current&&M({listHighlightedSessionId:i.current.sessionId}),e.focus())}function Ii(){return l("div",{class:"topbar"},l("span",{class:"pill clickable",title:"Click to toggle grouping by project/recent",...I(()=>M({groupBy:i.groupBy==="project"?"recent":"project"}))},i.groupBy),l("span",{class:"pill clickable",title:"Click to toggle showing disk-only sessions",...I(()=>{M({showCold:!i.showCold})})},i.showCold?"all":"warm"),xc(),l("span",{class:"spacer"}),l("button",{...I(Ci),title:"Options"},"\u2699"),l("button",{...I($c),title:"Import a *.hydra bundle from disk"},"\u{1F4E5}"),l("button",{...I(Li),title:"New Session"},"\uFF0B"))}function xc(){let e=new Set;for(let r of i.sessions)r.importedFromMachine&&!r.upstreamSessionId&&e.add(r.importedFromMachine);let t=[...e].sort(),n=l("select",{class:"host-select",title:"Filter sessions by origin host",onchange:r=>{let o=r.target.value;M({hostFilter:o})}}),s=(r,o)=>{let a=document.createElement("option");a.value=r,a.textContent=o,i.hostFilter===r&&(a.selected=!0),n.appendChild(a)};s("__local","local");for(let r of t)s(r,r);return s("__all","all"),i.hostFilter!=="__local"&&i.hostFilter!=="__all"&&!t.includes(i.hostFilter)&&(n.value=i.hostFilter),n}function Ai(){let e=i.showCold?i.sessions:i.sessions.filter(t=>t.status!=="cold");return i.hostFilter==="__local"?e=e.filter(t=>!t.importedFromMachine||!!t.upstreamSessionId):i.hostFilter!=="__all"&&(e=e.filter(t=>t.importedFromMachine===i.hostFilter&&!t.upstreamSessionId)),e}function Cc(){return Mi(Ai(),i.groupBy).flatMap(e=>e.sessions.map(t=>t.sessionId))}function Ni(){document.querySelector('[data-focus-key="composer"]')?.focus()}function Fn(e,t){if(ie()&&i.current?.sessionId===e){Ni();return}Ge(e,t)}function ki(e){let t=document.activeElement?.dataset.focusKey==="list-rail";if(i.view!=="list"&&!(ie()&&t)||me(document.activeElement))return;if(e.key==="Escape"){if(ie()&&i.current){e.preventDefault(),M({listHighlightedSessionId:i.current.sessionId}),Ni();return}let u=i.lastSessionId,d=u?i.sessions.find(f=>f.sessionId===u):void 0;if(!d)return;e.preventDefault(),Fn(d.sessionId,d.status==="cold");return}if(e.key.toLowerCase()==="c"&&!e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey){e.preventDefault(),Li();return}let n=!e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey,s=e.key==="ArrowDown"||e.key==="n"&&n,r=e.key==="ArrowUp"||e.key==="p"&&n;if(!s&&!r&&e.key!=="Enter")return;let o=Cc();if(o.length===0)return;if(e.key==="Enter"){let u=i.listHighlightedSessionId;if(!u||!o.includes(u))return;let d=i.sessions.find(f=>f.sessionId===u);if(!d)return;e.preventDefault(),Fn(d.sessionId,d.status==="cold");return}e.preventDefault();let a=i.listHighlightedSessionId?o.indexOf(i.listHighlightedSessionId):-1,c=a===-1?0:s?Math.min(o.length-1,a+1):Math.max(0,a-1);M({listHighlightedSessionId:o[c]})}function xi(){let e=Ai(),t=i.showCold?0:i.sessions.filter(r=>r.status==="cold").length,n=Mi(e,i.groupBy),s=l("div",{class:"list"});if(i.listHighlightedSessionId&&queueMicrotask(()=>{document.querySelector(".card.highlighted")?.scrollIntoView({block:"nearest"})}),e.length===0){let r;i.sessions.length===0?r="No sessions. Use + to create one, or run `hydra-acp launch <agent>` from your editor.":i.hostFilter==="__local"?r="No local sessions. Switch the host filter to see imported sessions.":i.hostFilter!=="__all"?r=`No sessions from ${i.hostFilter}. Try a different host.`:r=`No warm sessions. ${t} cold session${t===1?"":"s"} hidden \u2014 click "warm" to switch to "all".`,s.appendChild(l("div",{class:"empty"},r))}for(let r of n){let o=l("div",{class:"group"});r.label&&o.appendChild(l("h2",null,r.label));for(let a of r.sessions)o.appendChild(Fc(a,r.label===null));s.appendChild(o)}return s}function pi(e,t){let n=r=>{let o=r.status==="warm";return o&&r.busy&&r.awaitingInput?4:o&&r.busy?3:o&&r.awaitingInput?2:o?1:0},s=n(t)-n(e);return s!==0?s:String(t.updatedAt||"").slice(0,16).localeCompare(String(e.updatedAt||"").slice(0,16))}function Xt(e){return e.replace(/^\/(home|Users)\/[^/]+/,"~")}function Ln(e,t){return l("div",{class:"detail"},l("span",{class:"k"},e),l("code",null,t))}function Mc(e){let t=(n,s)=>l("button",{class:"ghost",...I(()=>Pr(n))},s);return e?l("div",{class:"detail"},l("span",{class:"k"},"workspace"),l("code",null,`${e.label}${e.clean===!1?" \xB7 dirty":""}`),t("sync","Sync"),t("stop","Stop"),t("apply","Apply")):l("div",{class:"detail"},l("span",{class:"k"},"workspace"),t("start","Start workspace"))}function Rc(){return l("div",{class:"detail"},l("span",{class:"k"},"hide thoughts"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:i.hideThoughts?"":void 0,onchange:e=>{M({hideThoughts:e.target.checked})}})))}function Oc(){return l("div",{class:"detail"},l("span",{class:"k"},"notify"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:i.notifyOnTurnEnd?"":void 0,onchange:e=>{if(!e.target.checked){M({notifyOnTurnEnd:!1}),Jr().then(()=>ze());return}Xr().then(n=>{if(!n){M({banner:{kind:"warn",text:"Notifications blocked \u2014 enable them for this site in your browser settings."}});return}M({notifyOnTurnEnd:!0}),zt().then(()=>ze())})}})))}function Ci(){M({modal:{kind:"options"}})}var Lc=[{value:"system",label:"system"},{value:"dark",label:"dark"},{value:"light",label:"light"}];function Dc(){let e=l("select",{onchange:t=>{M({theme:t.target.value}),Wt()}},...Lc.map(t=>{let n=l("option",{value:t.value},t.label);return t.value===i.theme&&n.setAttribute("selected",""),n}));return e.value=i.theme,l("div",{class:"detail"},l("span",{class:"k"},"theme"),e)}function Pc(){return l("div",{class:"modal-bg",...I(e=>{e.target.classList.contains("modal-bg")&&fe()})},l("div",{class:"modal"},l("h2",null,"Options"),Dc(),Rc(),Oc(),l("div",{class:"actions"},l("button",{class:"primary",...I(fe)},"Close"))))}function Bc(e){let t=l("select",{onchange:n=>{Wr(e.id,n.target.value)}},...e.options.map(n=>{let s=l("option",{value:n.value},n.name||n.value);return n.value===e.currentValue&&s.setAttribute("selected",""),s}));return t.value=e.currentValue,l("div",{class:"detail"},l("span",{class:"k",title:e.description??""},e.name||e.id),t)}function Mi(e,t){if(t==="recent")return[{label:null,sessions:e.slice().sort(pi)}];let n=new Map;for(let r of e){let o=r.cwd||"(unknown)";n.has(o)||n.set(o,[]),n.get(o).push(r)}let s=[];for(let[r,o]of[...n.entries()].sort((a,c)=>a[0].localeCompare(c[0])))o.sort(pi),s.push({label:Xt(r),sessions:o});return s}function Fc(e,t){let n=e.title||vi(e.sessionId),s=[Ee(e.sessionId),Tc(e.agentId,e.currentModel),`age ${Ic(e.updatedAt)}`].join(" \xB7 "),r=!e.busy&&(e.armedTasks??0)>0;return l("div",{class:e.sessionId===i.listHighlightedSessionId?"card highlighted":"card",...I(o=>{o.target.closest("button")||Fn(e.sessionId,e.status==="cold")})},l("div",{class:"row1"},n),l("div",{class:"card-body"},l("div",{class:"meta"},l("div",{class:"row2"},s)),l("div",{class:"badges"},e.status==="cold"||!(e.busy||e.awaitingInput||r)?l("span",{class:`badge ${e.status==="cold"?"cold":"warm"}`,title:e.status==="cold"?"Disk-only \u2014 opening will resurrect the session":"Live in-memory session"},e.status==="cold"?"cold":"warm"):null,e.busy||r?l("span",{class:"badge busy",title:e.busy?"Agent is working":"Agent has a background task running. It may resume on its own."},"busy"):null,e.awaitingInput?l("span",{class:"badge blocked",title:"Waiting on you \u2014 a permission request or other prompt is pending"},"blocked"):null,...e.importedFromMachine&&!e.upstreamSessionId?[l("span",{class:"badge imported",title:`Passive mirror imported from ${e.importedFromMachine} \u2014 attach to start working on it here.`},`\u2190 ${e.importedFromMachine}`)]:[]),l("div",{class:"actions"},l("button",{class:"ghost",title:"Export session as *.hydra bundle",...I(()=>Ri(e.sessionId))},"\u2193"),l("button",{class:"danger",...I(()=>{Hc(e)})},"\xD7"))),t?l("div",{class:"row3"},e.cwd?Xt(e.cwd):"?"):null)}async function Hc(e){if(confirm(`Kill session ${e.title?`"${e.title}" (${Ee(e.sessionId)})`:Ee(e.sessionId)}?`))try{await ee("/api/kill",{method:"POST",body:JSON.stringify({sessionId:e.sessionId})}),ke()}catch(t){M({banner:{kind:"bad",text:"kill failed: "+t.message}})}}function Uc(e){e.compactionPhase||confirm("Compact this session's context now? The agent will summarize history and continue from the summary.")&&Br()}function Ri(e){let t=document.createElement("a");t.href=`/api/sessions/${encodeURIComponent(e)}/export`,t.download="",t.rel="noopener",document.body.appendChild(t),t.click(),t.remove()}function $c(){let e=document.createElement("input");e.type="file",e.accept=".hydra,application/json",e.style.display="none",e.onchange=()=>{let t=e.files&&e.files[0];document.body.removeChild(e),t&&qc(t)},document.body.appendChild(e),e.click()}async function qc(e){let t;try{let s=await e.text();t=JSON.parse(s)}catch(s){M({banner:{kind:"bad",text:"import: bundle is not valid JSON: "+s.message}});return}let n=await qi(t);if(n.ok){let s=n.result;M({banner:{kind:"good",text:s.replaced?`Replaced ${Ee(s.sessionId)} from bundle`:`Imported as ${Ee(s.sessionId)}`}}),ke();return}if(n.status===409&&n.existingSessionId){let s=n.existingSessionId;if(!confirm(`This session is already imported locally as ${Ee(s)}.
411
466
 
412
- Replace it? (Any live attach will be closed.)`)){L({banner:{kind:"warn",text:"Import cancelled."}});return}try{let o=await yi(t,{replace:!0});L({banner:{kind:"good",text:`Replaced ${be(o.sessionId)} from bundle`}}),ke()}catch(o){L({banner:{kind:"bad",text:"import failed: "+o.message}})}return}L({banner:{kind:"bad",text:"import failed: "+n.message}})}var gi="hydra-acp-browser:lastCwd";function hc(){try{return localStorage.getItem(gi)}catch{return null}}function bc(e){try{localStorage.setItem(gi,e)}catch{}}function Ec(){L({modal:{kind:"session",cwd:hc()??i.defaultCwd??"",agentId:"",name:"",prompt:"",err:null,busy:!1}})}function _c(e){return l("div",{class:"modal-bg",...A(t=>{t.target.classList.contains("modal-bg")&&Ne()})},l("div",{class:"modal"},l("h2",null,"New session"),l("div",{class:"field"},l("label",{for:"f-cwd"},"cwd"),l("input",{id:"f-cwd","data-focus-key":"session-modal-cwd",value:e.cwd,placeholder:"/home/you/dev/project",oninput:t=>{e.cwd=t.target.value}})),l("div",{class:"field"},l("label",{for:"f-agent"},"agent"),yc(e)),l("div",{class:"field"},l("label",{for:"f-name"},"name (optional)"),l("input",{id:"f-name","data-focus-key":"session-modal-name",value:e.name,placeholder:"feature-x",oninput:t=>{e.name=t.target.value}})),l("div",{class:"field"},l("label",{for:"f-prompt"},"first prompt (optional)"),l("textarea",{id:"f-prompt","data-focus-key":"session-modal-prompt",rows:"4",placeholder:"What should the agent do first?",autocapitalize:"off",oninput:t=>{e.prompt=t.target.value}},e.prompt)),e.err?l("div",{class:"err"},e.err):null,l("div",{class:"actions"},l("button",{...A(Ne),disabled:e.busy},"Cancel"),l("button",{class:"primary",...A(vc),disabled:e.busy},e.busy?"Creating\u2026":"Create"))))}function yc(e){let t=l("select",{id:"f-agent","data-focus-key":"session-modal-agent",onchange:s=>{e.agentId=s.target.value}}),n=l("option",{value:""},"<default>");e.agentId===""&&n.setAttribute("selected",""),t.appendChild(n);for(let s of i.agents){let r=l("option",{value:s.id},s.id);s.id===e.agentId&&r.setAttribute("selected",""),t.appendChild(r)}return t}async function vc(){let e=i.modal;if(!(!e||e.kind!=="session")){if(!e.cwd){e.err="cwd is required",w();return}e.busy=!0,e.err=null,w();try{let t={cwd:e.cwd};e.agentId&&(t.agentId=e.agentId),e.name&&(t.name=e.name),e.prompt&&(t.prompt=e.prompt);let n=await ee("/api/sessions",{method:"POST",body:JSON.stringify(t)});bc(e.cwd),Ne(),ke(),n&&n.sessionId&&he(n.sessionId,!1)}catch(t){e.err=t.message,e.busy=!1,w()}}}function Ne(){L({modal:null})}function wc(){!i.current?.models||i.current.models.length===0||L({modal:{kind:"models"}})}function jr(e,t,n,s){return l("div",{class:"modal-bg",...A(r=>{r.target.classList.contains("modal-bg")&&Ne()})},l("div",{class:"modal"},l("h2",null,e),...t.map(r=>l("div",{class:"card",...A(()=>{s(r),Ne()})},l("div",{class:"meta"},l("div",{class:"row1"},r.name||r.id),l("div",{class:"row2"},r.id)),r.id===n?l("span",{class:"badge warm"},"current"):null))))}var Cn=5;function Sc(e){let t=e.armedTaskList;if(!t||t.length===0)return document.createTextNode("");let n=t.slice(0,Cn),s=Date.now();return l("div",{class:"armed-tasks"},...n.map(r=>l("div",{class:"armed-task"},l("span",{class:"dot"},"\u25D0"),l("span",{class:"label"},r.label.length>0?r.label:r.taskType??"background task"),l("span",{class:"elapsed"},ai(s-r.since)))),t.length>Cn?l("div",{class:"armed-tasks-more"},`+${t.length-Cn} more`):null)}var Mn=200,On=450,Tc=250;function st(e){if(!e.stickToBottom||e.touchActive)return;let t=performance.now();if(t-e.lastTouchEndAt<On||t-e.lastScrollAt<Tc)return;let n=e.body,s=n.scrollHeight-n.clientHeight;Math.abs(n.scrollTop-s)>1&&(n.scrollTop=n.scrollHeight)}var rt=new WeakMap;function Ic(e){let t=rt.get(e);if(t)return t;let n=l("div",{class:"chat-body"}),s=l("button",{class:"jump-to-latest",...A(()=>{n.scrollTop=n.scrollHeight,s.classList.remove("visible")})},"\u2193 Jump to latest"),r=0;n.addEventListener("scroll",()=>{t.lastScrollAt=performance.now();let _=n.scrollHeight-n.scrollTop-n.clientHeight<50;t.stickToBottom=_,r&&cancelAnimationFrame(r),r=requestAnimationFrame(()=>{r=0,s.classList.toggle("visible",!_)})},{passive:!0});let o=0;n.addEventListener("touchstart",()=>{t.touchActive=!0,o=n.scrollHeight},{passive:!0});let a=_=>{_.touches.length>0||(t.touchActive=!1,t.lastTouchEndAt=performance.now(),n.scrollHeight!==o&&(setTimeout(()=>st(t),On+50),setTimeout(()=>st(t),On+900)))};n.addEventListener("touchend",a,{passive:!0}),n.addEventListener("touchcancel",a,{passive:!0});let c=0,u=0;n.addEventListener("pointerdown",_=>{c=_.clientX,u=_.clientY},{passive:!0}),n.addEventListener("pointerup",_=>{if(pe(_.target)||Math.hypot(_.clientX-c,_.clientY-u)>nn)return;let y=document.activeElement;(y instanceof HTMLTextAreaElement||y instanceof HTMLInputElement)&&y.blur()},{passive:!0});let d=l("div",{class:"chat-slot"}),f=l("div",{class:"chat-slot"}),p=l("div",{class:"chat-slot"}),g=l("div",{class:"chat-slot"});{let m=null,E=null,I=!1,M=!1,R=()=>{let D=document.activeElement;M&&(D instanceof HTMLTextAreaElement||D instanceof HTMLInputElement)&&D.blur(),m=null,E=null,I=!1,M=!1};g.addEventListener("touchstart",D=>{m=null,E=null,I=!1,M=!1;let x=document.activeElement;if(!(x instanceof HTMLTextAreaElement||x instanceof HTMLInputElement))return;let K=D.touches[0];K&&(m=K.clientX,E=K.clientY)},{passive:!0}),g.addEventListener("touchmove",D=>{if(m===null||E===null)return;let x=D.touches[0];if(!x)return;let K=x.clientX-m,P=x.clientY-E;if(!I){if(Math.abs(K)<10&&Math.abs(P)<10)return;if(Math.abs(K)>Math.abs(P)||P<0){m=null,E=null;return}I=!0}M=P>=50},{passive:!0}),g.addEventListener("touchend",R,{passive:!0}),g.addEventListener("touchcancel",R,{passive:!0})}return t={root:l("div",{class:"chat"},d,f,p,n,g),body:n,jump:s,headerSlot:d,detailsSlot:f,armedSlot:p,composerSlot:g,stickToBottom:!0,touchActive:!1,lastTouchEndAt:0,lastScrollAt:0},rt.set(e,t),t}var ei=new WeakMap;function Ac(e){if(e.kind==="stream"){let t=e.queueEntry;return[e.text,e.role,e.synthetic??!1,e.closed??!1,nt.has(e),t?.status,t?.amendedByMessageId,t?.amendsMessageId,e.attachments?.length??0]}return e.kind==="system"||e.kind==="error"?[e.text]:e.kind==="edit-diff"?[e.diff,e.expanded,e.status]:e.kind==="exit-plan-mode"?[e.plan,e.status]:null}function Nc(e){let t=Ac(e);if(t===null)return ni(e);let n=ei.get(e);if(n&&n.sig.length===t.length&&n.sig.every((r,o)=>r===t[o]))return n.node;let s=ni(e);return ei.set(e,{node:s,sig:t}),s}function kc(e,t){for(let n=0;n<t.length;n++){let s=t[n],r=e.childNodes[n]??null;r!==s&&e.insertBefore(s,r)}for(;e.childNodes.length>t.length;)e.removeChild(e.lastChild)}function xc(e,t){let n=t.body,s=!e.renderAllHistory&&e.log.length>Mn,r=s?e.log.slice(e.log.length-Mn):e.log,o=[];if(e.historyIsPartial&&!s&&o.push(l("button",{class:"show-earlier",...A(()=>Wr(e))},"Load full history")),s){let a=e.log.length-Mn;o.push(l("button",{class:"show-earlier",...A(()=>{e.renderAllHistory=!0,w()})},`Show ${a} earlier message${a===1?"":"s"}`))}for(let a of r)i.hideThoughts&&a.kind==="stream"&&a.role==="thought"||o.push(Nc(a));o.push(t.jump),kc(n,o),st(t)}function mi(e,t){if(t.view!=="chat"||!t.current||t.banner||t.modal||t.current.fileOverlay)return!1;let n=rt.get(t.current);return!n||e.childNodes.length!==1||e.firstChild!==n.root?!1:(bi(t.current),!0)}function hi(e){let t=rt.get(e);t&&st(t)}function Ht(e){let t=rt.get(e);t&&(t.stickToBottom=!0,st(t))}function bi(e){let t=i.sessions.find(m=>m.sessionId===e.sessionId),n=t?.title||e.title||oi(e.sessionId),s=t?.cwd||e.cwd,r=()=>{e.headerExpanded=!e.headerExpanded,w()},o=l("div",{class:"chat-header"},l("div",{class:"chat-title-row"},l("button",{class:"chat-back",title:"Back to session list",...A(Ae)},"\u2190"),l("div",{class:"chat-title clickable",title:"Click for session details",...A(r)},n)),l("div",{class:"chat-header-row"},e.ready?e.inTurn?l("span",{class:"pill working clickable",title:"Agent is working",...A(r)},l("span",{class:"dot"},"\u25CF"),"thinking"):e.armedTasks&&e.armedTasks>0?l("span",{class:"pill waiting clickable",title:e.armedSince?`Agent has a background task running (armed ${Math.max(1,Math.floor((Date.now()-e.armedSince)/6e4))}m ago). It may resume on its own.`:"Agent has a background task running. It may resume on its own.",...A(r)},l("span",{class:"dot"},"\u25CF"),"waiting"):l("span",{class:"pill ready clickable",title:"Ready for a prompt",...A(r)},l("span",{class:"dot"},"\u25CF"),"ready"):l("span",{class:"pill clickable",title:"Click for session details",...A(r)},"connecting\u2026"),t?.workspace?l("span",{class:"pill clickable",title:`In workspace "${t.workspace.label}" (source: ${zt(t.workspace.sourceCwd)})`,...A(r)},"\u2387 "+t.workspace.label):null,e.model?l("span",{class:"pill clickable",title:"Model (click to change)",...A(wc)},e.model):null,e.contextUsed!=null&&e.contextSize?l("span",{class:e.compactionPhase?"pill clickable compacting":"pill clickable",title:e.compactionPhase?e.compactionPhase==="deferred"?"Compaction queued \u2014 will run once the session is idle.":"Compacting\u2026":`${e.contextUsed.toLocaleString()} / ${e.contextSize.toLocaleString()} context tokens \u2014 click to compact`,...A(()=>pc(e))},e.compactionPhase?e.compactionPhase==="deferred"?"\u23F3 queued":"\u25D0 compacting\u2026":`${Vr(e.contextUsed)}/${Vr(e.contextSize)}`):null,Zr(e.cost)?l("span",{class:"pill",title:"Session cost so far"},Zr(e.cost)):null,l("button",{...A(di),title:"Options"},"\u2699"),l("button",{...A(qc),title:"Files"},"\u{1F4C1}"),l("button",{title:"Export this session as a *.hydra bundle",...A(()=>pi(e.sessionId))},"\u2B07"),l("div",{class:"info clickable",title:"Click for session details",...A(r)}))),a=e.headerExpanded?l("div",{class:"chat-details"},xn("title",n),xn("session",be(e.sessionId)),xn("directory",s||"?"),oc(t?.workspace),...e.configOptions.map(uc)):null,c=Ic(e),u=m=>{m.style.height="auto",m.style.height=m.scrollHeight+"px"},d=(m,E)=>{m.value=E,e.composerValue=E,Ue(e.sessionId,E),u(m),m.setSelectionRange(E.length,E.length)},f=m=>{if(m.isComposing)return;let E=m.target;if(m.key==="ArrowUp"&&!m.shiftKey&&!m.altKey&&!m.ctrlKey&&!m.metaKey&&E.selectionStart===0&&E.selectionEnd===0&&e.history.length>0){let I=e.historyIndex===null?0:Math.min(e.history.length-1,e.historyIndex+1);e.historyIndex===null&&(e.historyDraft=e.composerValue),e.historyIndex=I,m.preventDefault(),d(E,e.history[I]);return}if(m.key==="ArrowDown"&&!m.shiftKey&&!m.altKey&&!m.ctrlKey&&!m.metaKey&&E.selectionStart===E.value.length&&E.selectionEnd===E.value.length&&e.historyIndex!==null){if(m.preventDefault(),e.historyIndex>0)e.historyIndex-=1,d(E,e.history[e.historyIndex]);else{let I=e.historyDraft??"";e.historyIndex=null,e.historyDraft=null,d(E,I)}return}if(m.key==="Enter"&&!m.shiftKey){if(m.altKey||m.ctrlKey||m.metaKey){m.preventDefault(),Xc(E,`
413
- `);return}m.preventDefault(),et()}},p=l("textarea",{"data-focus-key":"composer",placeholder:e.ready?"Message\u2026":"Connecting\u2026",rows:"1",autocapitalize:"off",onkeydown:f,onpaste:m=>{let E=m.clipboardData?.items;if(!E)return;let I=[];for(let M of E){if(M.kind!=="file"||!M.type.startsWith("image/"))continue;let R=M.getAsFile();R&&I.push(R)}I.length!==0&&(m.preventDefault(),Za(e,I))},oninput:m=>{_i();let E=m.target;e.composerValue=E.value,Ue(e.sessionId,E.value),e.historyIndex!==null&&(e.historyIndex=null,e.historyDraft=null),u(E);let I=E.value.trim().length>0||e.attachments.length>0,M=E.closest(".composer")?.querySelectorAll(".content-gated")??[];for(let R of M)R.disabled=!I}},e.composerValue);e.composerValue&&e.composerValue.length>0&&queueMicrotask(()=>u(p)),!e.composerAutoFocused&&qn()&&(e.composerAutoFocused=!0,queueMicrotask(()=>p.focus()));let g=e.composerValue.trim().length>0||e.attachments.length>0,b=[];e.inTurn?(e.daemonSupportsAmend&&e.currentHeadMessageId!==void 0&&b.push(l("button",{class:"content-gated",disabled:!g,...A(Nr),title:"Cancel the current turn and replace its prompt"},"Amend")),b.push(l("button",{class:"primary content-gated",disabled:!g,...A(et),title:"Queue this prompt to run after the current turn"},"Enqueue"))):b.push(l("button",{class:"primary content-gated",disabled:!g,...A(et)},"Send"));let _=l("div",{class:"composer"},Ja(e),p,l("div",{class:"composer-buttons"},l("button",{class:"stop",disabled:!e.inTurn&&!e.promptQueue.some(m=>m.status==="queued"||m.status==="pending"),...A(Cr),title:"Cancel current turn"},"Stop"),...b));return c.headerSlot.replaceChildren(o),a!==null&&document.activeElement!==null&&c.detailsSlot.contains(document.activeElement)||(a?c.detailsSlot.replaceChildren(a):c.detailsSlot.replaceChildren()),c.armedSlot.replaceChildren(Sc(e)),c.composerSlot.replaceChildren(_),xc(e,c),c.root}var ti=new WeakMap;function Ei(e,t){let n=ti.get(e);if(n&&n.text===t)return n.html;let s=zn(t);return ti.set(e,{text:t,html:s}),s}function ni(e){if(e.kind==="stream"){let t=e.role==="thought",n=e.role==="user"?"msg user":t?"msg system":"msg agent",s=t&&nt.has(e),r=l("div",{class:s?n+" collapsed":n});t&&r.addEventListener("click",()=>{if(!!nt.has(e)){nt.delete(e),w();return}let c=document.querySelector(".chat-body"),u=c?.getBoundingClientRect(),d=r.getBoundingClientRect(),f=d.top-(u?.top??0)+(c?.scrollTop??0),g=!u||d.top>=u.top&&d.top<u.bottom?c?.scrollTop??0:f;nt.add(e),w(),requestAnimationFrame(()=>{let b=document.querySelector(".chat-body");b&&(b.scrollTop=g)})});let o=e.queueEntry;if(o&&o.amendedByMessageId!==void 0&&o.status==="amended"&&r.classList.add("amended-target"),o&&(o.status==="queued"||o.status==="pending"||o.status==="cancelled"||o.status==="editing"||o.status==="amended"||o.status==="offline")&&r.appendChild(Pc(o)),o&&o.amendsMessageId!==void 0&&r.appendChild(l("span",{class:"amend-badge",title:"Merged amend \u2014 replaces the previous, cancelled prompt"},"+")),o&&o.status==="editing")r.appendChild(Bc(o,a=>{e.text=a}));else{e.attachments&&e.attachments.length>0&&r.appendChild(l("div",{class:"attachment-thumbs"},...e.attachments.map(c=>l("img",{class:"attachment-thumb",src:ii(c)}))));let a=l("div",{class:e.synthetic?"body raw":"body"});e.synthetic?a.textContent=e.text:a.innerHTML=Ei(e,e.text),o&&o.status==="cancelled"&&(a.style.textDecoration="line-through",a.style.opacity="0.6"),r.appendChild(a)}return r}if(e.kind==="system")return l("div",{class:"msg system"},e.text);if(e.kind==="error")return l("div",{class:"msg error"},e.text);if(e.kind==="spinner")return Fc(e.spinner);if(e.kind==="perm"){if(!i.current)return document.createTextNode("");let t=i.current.pendingPermissions.get(e.toolCallId);return t?$c(t):document.createTextNode("")}return e.kind==="plan"?Uc(e.entries):e.kind==="exit-plan-mode"?Lc(e):e.kind==="edit-diff"?Oc(e):document.createTextNode("")}function Cc(e){return e==="+"?"diff-line hljs-addition":e==="-"?"diff-line hljs-deletion":e==="gap"?"diff-line diff-gap":"diff-line"}function Mc(e){return e==="+"?"+ ":e==="-"?"- ":e==="gap"?"":" "}var si=new WeakMap;function Rc(e){let t=si.get(e);return t||(t={counts:sr(e)},si.set(e,t)),t}function Oc(e){let t=Rc(e.diff),n=t.counts,s=e.diff.path?zt(e.diff.path):"file",r=[];n.added>0&&r.push(l("span",{class:"add"},`+${n.added}`)),n.removed>0&&r.push(l("span",{class:"del"},`-${n.removed}`));let o=l("div",{class:"head",...A(()=>{e.expanded=!e.expanded,w()})},l("span",null,e.expanded?"\u25BE":"\u25B8"),l("span",{class:"title"},`Edited ${s}`),r.length>0?l("span",{class:"kind edit-summary"},r):null),a=l("div",{class:e.expanded?"toolcard open":"toolcard"},o);if(e.expanded){let c=t.lines??(t.lines=rr(e.diff));a.appendChild(l("div",{class:"body"},l("pre",null,l("code",{class:"diff-body"},c.map(u=>l("div",{class:Cc(u.op)},Mc(u.op)+u.text))))))}return a}function Lc(e){let t=l("div",{class:"msg agent plan-markdown"});t.appendChild(l("div",{class:"plan-header"},"\u{1F4CB} Plan"));let n=l("div",{class:"body"});n.innerHTML=Ei(e,e.plan),t.appendChild(n);let s=Dc(e.status);return s!==null&&t.appendChild(s),t}function Dc(e){if(e===void 0)return null;switch(e){case"completed":case"succeeded":case"ok":return l("div",{class:"plan-status plan-status-ok"},"\u2713 Approved");case"failed":case"error":case"rejected":return l("div",{class:"plan-status plan-status-fail"},"\u2717 Rejected");case"cancelled":return l("div",{class:"plan-status plan-status-cancelled"},"\u229D Cancelled");case"pending":case"in_progress":case"running":case"updated":return l("div",{class:"plan-status plan-status-pending"},"awaiting approval\u2026");default:return null}}function Pc(e){if(e.status==="queued"||e.status==="pending"){let t=e.status==="pending"?"sending\u2026":`queued \xB7 ${Math.max(1,e.aheadAtEnqueue)} ahead`+(e.held?" \xB7 held: agent resumed":"");return l("div",{class:"queue-chip queue-queued"},l("span",null,t),l("button",{class:"queue-edit",...A(()=>{e.status="editing",w()}),title:"Edit before sending"},l("span",{class:"queue-btn-glyph"},"\u270E")),l("button",{class:"queue-cancel",...A(()=>$t(e)),title:"Cancel before sending"},l("span",{class:"queue-btn-glyph"},"\xD7")))}return e.status==="editing"?l("div",{class:"queue-chip queue-editing"},l("span",null,"editing \u2014 Save or Cancel below")):e.status==="processing"?l("div",{class:"queue-chip queue-processing"},l("span",{class:"dot"}),l("span",null,"processing")):e.status==="cancelled"?l("div",{class:"queue-chip queue-cancelled"},l("span",null,"cancelled")):e.status==="amended"?l("div",{class:"queue-chip queue-amended"},l("span",null,"amended \u2014 merged into the next prompt")):e.status==="offline"?l("div",{class:"queue-chip queue-offline"},l("span",null,"pending"),l("button",{class:"queue-edit",...A(()=>{e.editReturnStatus="offline",e.status="editing",w()}),title:"Edit before sending"},l("span",{class:"queue-btn-glyph"},"\u270E")),l("button",{class:"queue-cancel",...A(()=>$t(e)),title:"Discard, this was never sent"},l("span",{class:"queue-btn-glyph"},"\xD7"))):document.createTextNode("")}function Bc(e,t){let n=l("textarea",{class:"queue-edit-area",rows:"3",autocapitalize:"off"});n.value=e.text;let s=()=>{e.status=e.editReturnStatus??"queued",e.editReturnStatus=void 0},r=()=>{let a=n.value;e.text=a,t(a),s(),Ar(e,a),w()},o=()=>{s(),w()};return n.addEventListener("keydown",a=>{a.key==="Enter"&&!a.shiftKey?(a.preventDefault(),r()):a.key==="Escape"&&(a.preventDefault(),o())}),queueMicrotask(()=>{n.focus(),n.setSelectionRange(n.value.length,n.value.length)}),l("div",{class:"queue-editor"},n,l("div",{class:"queue-editor-actions"},l("button",{class:"ghost",...A(o)},"Cancel"),l("button",{class:"primary",...A(r)},"Save")))}function Fc(e){let t=l("button",{class:"queue-cancel",...A(()=>xr()),title:"Cancel this turn"},l("span",{class:"queue-btn-glyph"},"\xD7"));if(!e.expanded)return l("div",{class:"spinner",...A(()=>{e.expanded=!0,w()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,e.toolCallIds.length===0?"thinking\u2026":`working \u2014 ${e.toolCallIds.length} tool call${e.toolCallIds.length===1?"":"s"}`),t));let n=e.toolCallIds.map(s=>{let r=i.current?.toolCalls.get(s);if(!r)return null;let o=r.status==="completed"||r.status==="success"?"\u2705":r.status==="failed"||r.status==="error"?"\u274C":"\u25B6";return l("li",null,l("span",{class:"icon"},o),document.createTextNode(" "+r.title))});return l("div",{class:"spinner expanded",...A(()=>{e.expanded=!1,w()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,"working"),t),l("ul",null,n))}function Hc(e){let t=f=>typeof f=="string"&&f.length>0?f:void 0,n=[],s=(f,p)=>l("div",{class:"detail"},l("span",{class:"k"},f),l("code",null,p)),r=t(e.kind);r&&n.push(s("kind",r));let o=new Set,a=[],c=f=>{let p=t(f);p&&!o.has(p)&&(o.add(p),a.push(p))},u=e.locations;if(Array.isArray(u))for(let f of u)f&&typeof f=="object"&&c(f.path);let d=e.rawInput&&typeof e.rawInput=="object"?e.rawInput:void 0;d&&(c(d.file_path),c(d.filePath),c(d.path));for(let f of a)n.push(s("path",f));if(d){let f=t(d.command);f&&n.push(s("command",f));let p=t(d.url);p&&n.push(s("url",p));let g=t(d.description);g&&n.push(l("div",{class:"detail note"},g))}return n}function $c(e){let t=e.toolCall||{};return l("div",{class:"perm"},l("div",{class:"title"},"\u{1F512} Permission requested"),l("div",{class:"desc"},t.title||t.name||"tool call"),Hc(t),l("div",{class:"opts"},...e.options.map(n=>l("button",{class:n.kind?.startsWith("allow")?"primary":n.kind?.startsWith("reject")?"danger":"",...A(()=>Tn(e.toolCallId,n.optionId))},n.name||n.optionId)),l("button",{...A(()=>Tn(e.toolCallId,"__cancel__"))},"Cancel")))}function Uc(e){return Array.isArray(e)?l("div",{class:"msg agent"},l("div",{class:"body"},l("strong",null,"Plan")),l("ul",null,...e.map(t=>l("li",null,`${t.status==="completed"?"\u2713":t.status==="in_progress"?"\u25B8":"\xB7"} ${t.content||t.title||""}`)))):document.createTextNode("")}function qc(){i.current&&(i.current.fileOverlay={path:"",entries:[],preview:null,err:null},w(),it(""))}async function it(e){if(i.current)try{let t=await ee("/api/files/list",{method:"POST",body:JSON.stringify({sessionId:i.current.sessionId,path:e})});i.current.fileOverlay={path:t.path,entries:t.entries??[],preview:null,err:null},w()}catch(t){i.current.fileOverlay={path:e,entries:[],preview:null,err:t.message},w()}}async function Kc(e){if(i.current)try{let t=await ee("/api/files/read",{method:"POST",body:JSON.stringify({sessionId:i.current.sessionId,path:e})}),n=i.current.fileOverlay;i.current.fileOverlay={path:n.path,entries:n.entries,preview:{path:e,content:t.content},err:null},w()}catch(t){i.current.fileOverlay&&(i.current.fileOverlay={...i.current.fileOverlay,err:t.message}),w()}}function ri(){i.current&&(i.current.fileOverlay=null,w())}function zc(e){if(!i.current?.fileOverlay)return;let t=i.current.fileOverlay,n=t.path?`${t.path}/${e.name}`:e.name;e.kind==="dir"?it(n):e.kind==="file"&&Kc(n)}function Gc(e){let t=e?e.split("/").filter(Boolean):[],n=[l("span",{class:"crumb",...A(()=>it(""))},".")],s="";for(let r of t){s=s?`${s}/${r}`:r;let o=s;n.push(document.createTextNode(" / ")),n.push(l("span",{class:"crumb",...A(()=>it(o))},r))}return l("div",{class:"crumbs"},n)}function Wc(e,t){if(!i.current)return;let n=`${e}:${t}`,s=i.current.composerValue;i.current.composerValue=s?`${s} ${n}`:n,Ue(i.current.sessionId,i.current.composerValue),w()}function Yc(){i.current?.fileOverlay&&(i.current.fileOverlay.preview=null,w())}function Qc(e){let t=e.fileOverlay;if(!t)return document.createTextNode("");let n;if(t.preview){let{path:s,content:r}=t.preview,o=js(r,s)??ne(r),a=r.split(`
414
- `).length,c=l("div",{class:"code-gutter"});for(let u=1;u<=a;u++){let d=u;c.appendChild(l("div",{class:"ln",...A(()=>Wc(s,d))},String(d)))}n=l("div",{class:"preview"},l("div",{class:"crumbs"},l("span",{class:"crumb",...A(()=>Yc())},"\u2190 back to listing"),document.createTextNode(` ${s}`)),l("div",{class:"code-view"},c,l("pre",{},l("code",{class:"hljs",html:o}))))}else n=l("div",{class:"body"},t.err?l("div",{class:"msg error"},t.err):null,t.path?l("div",{class:"entry",...A(()=>it(t.path.split("/").slice(0,-1).join("/")))},l("span",{class:"icon"},"\u25B8"),l("span",{class:"name"},".."),l("span",{class:"size"},"")):null,...t.entries.map(s=>l("div",{class:"entry",...A(()=>zc(s))},l("span",{class:"icon"},s.kind==="dir"?"\u25B8":"\xB7"),l("span",{class:"name"},s.name),l("span",{class:"size"},s.kind==="file"?`${s.size}b`:""))));return l("div",{class:"modal-bg",...A(s=>{s.target.classList.contains("modal-bg")&&ri()})},l("div",{class:"modal file-modal"},l("div",{class:"topbar",style:"border-bottom:1px solid var(--border)"},l("span",{class:"title"},"Files"),l("span",{class:"pill"},e.cwd),l("span",{class:"spacer"}),l("button",{...A(ri)},"\xD7")),Gc(t.path),l("div",{class:"files"},n)))}function Xc(e,t){e.focus();let n=!1;if(typeof document.execCommand=="function")try{n=document.execCommand("insertText",!1,t)}catch{n=!1}if(!n){let s=e.selectionStart??e.value.length,r=e.selectionEnd??e.value.length,o=e.value.slice(0,s),a=e.value.slice(r);e.value=o+t+a;let c=s+t.length;e.setSelectionRange(c,c),e.dispatchEvent(new Event("input",{bubbles:!0}))}}var Ln=!1,Vc=100,wi=0,ot=!1,at=!1;document.addEventListener("pointerdown",()=>{ot=!0},!0);document.addEventListener("pointerup",e=>{if(!ot||(ot=!1,!at))return;at=!1;let n=e.target?.tagName;if(n==="TEXTAREA"||n==="INPUT"||n==="SELECT"){setTimeout(w,300);return}w()},!0);document.addEventListener("pointercancel",()=>{ot=!1,at&&(at=!1,w())},!0);var Si=250,Ti=0;function _i(){Ti=performance.now()}function Zc(){let e=document.activeElement;return!(e instanceof HTMLTextAreaElement)&&!(e instanceof HTMLInputElement)?!1:performance.now()-Ti<Si}var Dn=!1;function w(){if(Ln)return;Ln=!0;let e=performance.now()-wi,t=Math.max(0,Vc-e),n=()=>{if(Ln=!1,ot){at=!0;return}if(Zc()){Dn=!0,setTimeout(()=>{Dn&&(Dn=!1,w())},Si);return}wi=performance.now(),Jc()};t>0?setTimeout(()=>requestAnimationFrame(n),t):requestAnimationFrame(n)}function Jc(){let e=document.getElementById("app");if(!e)return;let t=document.activeElement,n=null,s=null,r=null;if(t&&t!==document.body&&t.dataset&&t.dataset.focusKey&&(n=t.dataset.focusKey,"selectionStart"in t))try{s=t.selectionStart,r=t.selectionEnd}catch{}let o=()=>{if(!n)return;let I=e.querySelector(`[data-focus-key="${CSS.escape(n)}"]`);if(!I)return;I.focus();let M=I;if(s!==null&&typeof M.setSelectionRange=="function")try{M.setSelectionRange(s,r)}catch{}};if(mi(e,i)){o();return}let a=e.querySelector(".chat-body"),c=a?a.scrollTop:null,u=e.querySelector(".list"),d=u?u.scrollTop:null,f=e.querySelector(".files .body"),p=f?f.scrollTop:null,g=e.querySelector(".files .preview"),b=g?g.scrollTop:null;e.replaceChildren(),ci(e,i);let _=e.querySelector(".chat-body");if(_){c!==null&&(_.scrollTop=c),i.current&&hi(i.current);let I=_.querySelector(".jump-to-latest");if(I){let M=_.scrollHeight-_.scrollTop-_.clientHeight<50;I.classList.toggle("visible",!M)}}let y=e.querySelector(".list");y&&d!==null&&(y.scrollTop=d);let m=e.querySelector(".files .body");m&&p!==null&&(m.scrollTop=p);let E=e.querySelector(".files .preview");E&&b!==null&&(E.scrollTop=b),o()}var Ii="hydra-acp-browser:filters",Ai=["groupBy","showCold","hostFilter","hideThoughts","notifyOnTurnEnd"];function jc(){try{let e=localStorage.getItem(Ii);return e?JSON.parse(e):{}}catch{return{}}}function el(){try{let e={};for(let t of Ai)e[t]=i[t];localStorage.setItem(Ii,JSON.stringify(e))}catch{}}var i={view:"list",sessions:[],agents:[],defaultCwd:null,groupBy:"project",showCold:!1,hostFilter:"__local",listHighlightedSessionId:null,hideThoughts:!1,notifyOnTurnEnd:!1,banner:null,modal:null,current:null,lastSessionId:null,...jc()};function L(e){let t=!1,n=!1;for(let s of Object.keys(e)){let r=e[s];Pn(i[s],r)||(i[s]=r,t=!0,Ai.includes(s)&&(n=!0))}n&&el(),t&&w()}function Pn(e,t){return e===t?!0:e===null||t===null||typeof e!=typeof t||typeof e!="object"?!1:JSON.stringify(e)===JSON.stringify(t)}function tl(){let e=window.getSelection();return!e||e.isCollapsed?!1:e.toString().length>0}async function ee(e,t){let n=await fetch(e,{credentials:"same-origin",headers:{"Content-Type":"application/json"},...t});if(!n.ok){let s=`${n.status} ${n.statusText}`;try{let r=await n.json();r&&r.error&&(s=r.error)}catch{}throw new Error(s)}return n.status===204?null:await n.json()}var Bn=null;async function ke(){if(!(document.activeElement instanceof HTMLTextAreaElement||document.activeElement instanceof HTMLInputElement)){if(i.view==="chat"&&i.current){await nl(i.current.sessionId);return}await sl()}}async function nl(e){try{let t=await ee(`/api/sessions/${encodeURIComponent(e)}`),n=i.sessions.findIndex(r=>r.sessionId===e);if(n>=0?i.sessions[n]=t:i.sessions.push(t),!i.current||i.current.sessionId!==e)return;let s=`${t.title}|${t.cwd}|${t.agentId}|${t.currentModel}|${t.workspace?.label}|${t.workspace?.vcs?.branch}|${t.workspace?.clean}`;s!==i.current._lastMetaFp&&(i.current._lastMetaFp=s,w())}catch{}}async function sl(){try{let n=(await ee("/api/sessions")).sessions??[],s=i.banner!==null,r=!Pn(i.sessions,n);if(i.sessions=n,i.banner=null,!r&&!s||!s&&tl()||!s&&i.modal)return;w()}catch(e){L({banner:{kind:"bad",text:"session list failed: "+e.message}})}}function Ni(){Bn&&clearInterval(Bn),ke(),Bn=setInterval(()=>{ke()},2e3)}async function ki(){try{let e=await ee("/api/agents");L({agents:e.agents??[]})}catch(e){L({banner:{kind:"warn",text:"agents unavailable: "+e.message}})}}async function xi(){try{let e=await ee("/api/config");L({defaultCwd:e.defaultCwd??null})}catch{}}async function yi(e,t={}){return ee("/api/sessions/import",{method:"POST",body:JSON.stringify({bundle:e,replace:t.replace===!0})})}async function vi(e){let t=await fetch("/api/sessions/import",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({bundle:e})});if(t.ok)return{ok:!0,result:await t.json()};let n,s=`${t.status} ${t.statusText}`;try{let r=await t.json();r.existingSessionId&&(n=r.existingSessionId),r.error&&(s=r.error)}catch{}return{ok:!1,status:t.status,message:s,existingSessionId:n}}var Ci=70,rl=110,Gt=null,ct=!1,We=!1,Ge=null;function Fn(){return Ge||(Ge=document.createElement("div"),Ge.className="pull-refresh",document.body.appendChild(Ge),Ge)}function il(e){let t=Fn(),n=Math.max(0,Math.min(e,rl));We=n>=Ci,t.style.opacity=n>0?String(Math.min(n/Ci,1)):"0",t.style.transform=`translate(-50%, ${n>0?n-32:-48}px)`,t.textContent=We?"\u2191 Release to refresh":"\u2193 Pull to refresh"}function Ri(){let e=Fn();e.style.opacity="0",e.style.transform="translate(-50%, -48px)"}function Oi(){return document.querySelector(".list")}function ol(e){if(ct=!1,We=!1,i.view!=="list")return;let t=Oi(),n=e.touches[0];!t||!n||t.scrollTop>0||!t.contains(n.target)||(Gt=n.clientY,ct=!0)}function al(e){if(!ct||Gt===null)return;let t=Oi(),n=e.touches[0];if(!t||!n)return;let s=n.clientY-Gt;if(s<=0||t.scrollTop>0){Ri(),We=!1;return}e.preventDefault(),il(s)}function Mi(){if(ct&&We){let e=Fn();e.textContent="Refreshing\u2026",location.reload()}else Ri();ct=!1,We=!1,Gt=null}function Li(){document.addEventListener("touchstart",ol,{passive:!0}),document.addEventListener("touchmove",al,{passive:!1}),document.addEventListener("touchend",Mi,{passive:!0}),document.addEventListener("touchcancel",Mi,{passive:!0})}var lt=80,Di=12;function cl(e){let t=e instanceof Element?e:null;for(;t&&t!==document.body;){if(t.scrollWidth>t.clientWidth&&t.scrollLeft>0)return!0;t=t.parentElement}return!1}var Ye=null,Wt=null,de=null,Yt=!1,Qt=!1,Ee=null;function ll(){return Ee||(Ee=document.createElement("div"),Ee.className="swipe-back-hint",document.body.appendChild(Ee),Ee)}function ul(){let e=i.lastSessionId,t=i.sessions.find(n=>n.sessionId===e);return t?.title?t.title:e?e.slice(0,12):""}function dl(e,t){let n=ll(),s=Math.min(Math.abs(e)/lt,1);n.classList.toggle("left",t==="toList"),t==="toChat"?(n.textContent=(s>=1?"\u21A9 Release to open ":"\u2190 ")+ul(),n.style.transform=`translate(${Math.min(-e,lt+20)*-1}px, -50%)`):(n.textContent=s>=1?"\u21A9 Release for session list":"Session list \u2192",n.style.transform=`translate(${Math.min(e,lt+20)}px, -50%)`),n.style.opacity=s>0?String(s):"0"}function fl(){Ee&&(Ee.style.opacity="0")}function Xt(){Ye=null,Wt=null,de=null,Yt=!1,Qt=!1,fl()}function pl(e){Xt();let t=e.touches[0];if(t){if(i.view==="list"&&i.lastSessionId)de="toChat";else if(i.view==="chat"&&!pe(t.target)&&!cl(t.target))de="toList";else return;Ye=t.clientX,Wt=t.clientY,Yt=!0}}function gl(e){if(!Yt||Ye===null||Wt===null||!de)return;let t=e.touches[0];if(!t)return;let n=t.clientX-Ye,s=t.clientY-Wt;if(!Qt){if(Math.abs(n)<Di&&Math.abs(s)<Di)return;let r=de==="toChat"?n<0:n>0;if(Math.abs(s)>Math.abs(n)||!r){Yt=!1;return}Qt=!0}dl(n,de)}function ml(e){if(!Qt||Ye===null||!de){Xt();return}let t=e.changedTouches[0],n=t?t.clientX-Ye:0;if(de==="toChat"&&n<=-lt){let s=i.lastSessionId,r=s?i.sessions.find(o=>o.sessionId===s):void 0;s&&r&&he(s,r.status==="cold")}else de==="toList"&&n>=lt&&Ae();Xt()}function Pi(){document.addEventListener("touchstart",pl,{passive:!0}),document.addEventListener("touchmove",gl,{passive:!0}),document.addEventListener("touchend",ml,{passive:!0}),document.addEventListener("touchcancel",Xt,{passive:!0})}var hl=(()=>{try{return new URLSearchParams(window.location.search).get("vpdebug")==="1"}catch{return!1}})();function bl(e,t,n){let s=document.getElementById("__viewport_debug__");s||(s=document.createElement("div"),s.id="__viewport_debug__",s.style.cssText="position:absolute;top:0;left:0;right:0;z-index:9999;background:rgba(0,0,0,0.85);color:#fd9;padding:0.4rem 0.6rem;font:11px/1.4 ui-monospace,monospace;border:1px solid #d4a17e;border-radius:6px;white-space:pre;pointer-events:none;opacity:0.9",document.body.appendChild(s));let r=document.querySelector(".composer"),o=r?.getBoundingClientRect(),a=r?getComputedStyle(r).paddingBottom:"n/a",c=document.getElementById("app"),u=c?.getBoundingClientRect(),d=c?getComputedStyle(c).height:"n/a",p=document.querySelector(".chat-body")?.getBoundingClientRect(),g=document.getElementById("__vp_icb_line__");g||(g=document.createElement("div"),g.id="__vp_icb_line__",document.body.appendChild(g)),g.style.cssText=`position:absolute;left:0;right:0;top:${window.innerHeight-3}px;height:3px;background:lime;z-index:9999;pointer-events:none`;let b=document.getElementById("__vp_app_line__");b||(b=document.createElement("div"),b.id="__vp_app_line__",document.body.appendChild(b)),b.style.cssText="position:absolute;left:0;right:0;top:calc(var(--app-height, 100%) - 3px);height:3px;background:magenta;z-index:9999;pointer-events:none";let _=document.querySelector(".composer-buttons");_&&(_.style.outline="2px solid cyan");let y=E=>E?`top=${E.top.toFixed(0)} h=${E.height.toFixed(0)} bottom=${E.bottom.toFixed(0)}`:"n/a",m=document.body.getBoundingClientRect();s.textContent=`innerHeight=${window.innerHeight} appH(vv+inset)=${e.toFixed(1)} inset=${Bi().toFixed(0)}
467
+ Replace it? (Any live attach will be closed.)`)){M({banner:{kind:"warn",text:"Import cancelled."}});return}try{let o=await $i(t,{replace:!0});M({banner:{kind:"good",text:`Replaced ${Ee(o.sessionId)} from bundle`}}),ke()}catch(o){M({banner:{kind:"bad",text:"import failed: "+o.message}})}return}M({banner:{kind:"bad",text:"import failed: "+n.message}})}var Oi="hydra-acp-browser:lastCwd";function Kc(){try{return localStorage.getItem(Oi)}catch{return null}}function zc(e){try{localStorage.setItem(Oi,e)}catch{}}function Li(){M({modal:{kind:"session",cwd:Kc()??i.defaultCwd??"",agentId:"",name:"",prompt:"",err:null,busy:!1}})}function Gc(e){return l("div",{class:"modal-bg",...I(t=>{t.target.classList.contains("modal-bg")&&fe()})},l("div",{class:"modal"},l("h2",null,"New session"),l("div",{class:"field"},l("label",{for:"f-cwd"},"cwd"),l("input",{id:"f-cwd","data-focus-key":"session-modal-cwd",value:e.cwd,placeholder:"/home/you/dev/project",oninput:t=>{e.cwd=t.target.value}})),l("div",{class:"field"},l("label",{for:"f-agent"},"agent"),Wc(e)),l("div",{class:"field"},l("label",{for:"f-name"},"name (optional)"),l("input",{id:"f-name","data-focus-key":"session-modal-name",value:e.name,placeholder:"feature-x",oninput:t=>{e.name=t.target.value}})),l("div",{class:"field"},l("label",{for:"f-prompt"},"first prompt (optional)"),l("textarea",{id:"f-prompt","data-focus-key":"session-modal-prompt",rows:"4",placeholder:"What should the agent do first?",autocapitalize:"off",oninput:t=>{e.prompt=t.target.value}},e.prompt)),e.err?l("div",{class:"err"},e.err):null,l("div",{class:"actions"},l("button",{...I(fe),disabled:e.busy},"Cancel"),l("button",{class:"primary",...I(Yc),disabled:e.busy},e.busy?"Creating\u2026":"Create"))))}function Wc(e){let t=l("select",{id:"f-agent","data-focus-key":"session-modal-agent",onchange:s=>{e.agentId=s.target.value}}),n=l("option",{value:""},"<default>");e.agentId===""&&n.setAttribute("selected",""),t.appendChild(n);for(let s of i.agents){let r=l("option",{value:s.id},s.id);s.id===e.agentId&&r.setAttribute("selected",""),t.appendChild(r)}return t}async function Yc(){let e=i.modal;if(!(!e||e.kind!=="session")){if(!e.cwd){e.err="cwd is required",w();return}e.busy=!0,e.err=null,w();try{let t={cwd:e.cwd};e.agentId&&(t.agentId=e.agentId),e.name&&(t.name=e.name),e.prompt&&(t.prompt=e.prompt);let n=await ee("/api/sessions",{method:"POST",body:JSON.stringify(t)});zc(e.cwd),fe(),ke(),n&&n.sessionId&&Ge(n.sessionId,!1)}catch(t){e.err=t.message,e.busy=!1,w()}}}function fe(){M({modal:null})}function Qc(){!i.current?.models||i.current.models.length===0||M({modal:{kind:"models"}})}function gi(e,t,n,s){return l("div",{class:"modal-bg",...I(r=>{r.target.classList.contains("modal-bg")&&fe()})},l("div",{class:"modal"},l("h2",null,e),...t.map(r=>l("div",{class:"card",...I(()=>{s(r),fe()})},l("div",{class:"meta"},l("div",{class:"row1"},r.name||r.id),l("div",{class:"row2"},r.id)),r.id===n?l("span",{class:"badge warm"},"current"):null))))}var Dn=5;function Xc(e){let t=e.armedTaskList;if(!t||t.length===0)return document.createTextNode("");let n=t.slice(0,Dn),s=Date.now();return l("div",{class:"armed-tasks"},...n.map(r=>l("div",{class:"armed-task"},l("span",{class:"dot"},"\u25D0"),l("span",{class:"label"},r.label.length>0?r.label:r.taskType??"background task"),l("span",{class:"elapsed"},wi(s-r.since)))),t.length>Dn?l("div",{class:"armed-tasks-more"},`+${t.length-Dn} more`):null)}var Pn=200,Hn=450,Vc=250;function it(e){if(!e.stickToBottom||e.touchActive)return;let t=performance.now();if(t-e.lastTouchEndAt<Hn||t-e.lastScrollAt<Vc)return;let n=e.body,s=n.scrollHeight-n.clientHeight;Math.abs(n.scrollTop-s)>1&&(n.scrollTop=n.scrollHeight)}var ot=new WeakMap;function Zc(e){let t=ot.get(e);if(t)return t;let n=l("div",{class:"chat-body"}),s=l("button",{class:"jump-to-latest",...I(()=>{n.scrollTop=n.scrollHeight,s.classList.remove("visible")})},"\u2193 Jump to latest"),r=0;n.addEventListener("scroll",()=>{t.lastScrollAt=performance.now();let y=n.scrollHeight-n.scrollTop-n.clientHeight<50;t.stickToBottom=y,r&&cancelAnimationFrame(r),r=requestAnimationFrame(()=>{r=0,s.classList.toggle("visible",!y)})},{passive:!0});let o=0;n.addEventListener("touchstart",()=>{t.touchActive=!0,o=n.scrollHeight},{passive:!0});let a=y=>{y.touches.length>0||(t.touchActive=!1,t.lastTouchEndAt=performance.now(),n.scrollHeight!==o&&(setTimeout(()=>it(t),Hn+50),setTimeout(()=>it(t),Hn+900)))};n.addEventListener("touchend",a,{passive:!0}),n.addEventListener("touchcancel",a,{passive:!0});let c=0,u=0;n.addEventListener("pointerdown",y=>{c=y.clientX,u=y.clientY},{passive:!0}),n.addEventListener("pointerup",y=>{if(me(y.target)||Math.hypot(y.clientX-c,y.clientY-u)>ln)return;let _=document.activeElement;(_ instanceof HTMLTextAreaElement||_ instanceof HTMLInputElement)&&_.blur()},{passive:!0});let d=l("div",{class:"chat-slot"}),f=l("div",{class:"chat-slot"}),p=l("div",{class:"chat-slot"}),g=l("div",{class:"chat-slot"});{let m=null,E=null,A=!1,R=!1,O=()=>{let D=document.activeElement;R&&(D instanceof HTMLTextAreaElement||D instanceof HTMLInputElement)&&D.blur(),m=null,E=null,A=!1,R=!1};g.addEventListener("touchstart",D=>{m=null,E=null,A=!1,R=!1;let x=document.activeElement;if(!(x instanceof HTMLTextAreaElement||x instanceof HTMLInputElement))return;let K=D.touches[0];K&&(m=K.clientX,E=K.clientY)},{passive:!0}),g.addEventListener("touchmove",D=>{if(m===null||E===null)return;let x=D.touches[0];if(!x)return;let K=x.clientX-m,P=x.clientY-E;if(!A){if(Math.abs(K)<10&&Math.abs(P)<10)return;if(Math.abs(K)>Math.abs(P)||P<0){m=null,E=null;return}A=!0}R=P>=50},{passive:!0}),g.addEventListener("touchend",O,{passive:!0}),g.addEventListener("touchcancel",O,{passive:!0})}return t={root:l("div",{class:"chat"},d,f,p,n,g),body:n,jump:s,headerSlot:d,detailsSlot:f,armedSlot:p,composerSlot:g,stickToBottom:!0,touchActive:!1,lastTouchEndAt:0,lastScrollAt:0},ot.set(e,t),t}var mi=new WeakMap;function Jc(e){if(e.kind==="stream"){let t=e.queueEntry;return[e.text,e.role,e.synthetic??!1,e.closed??!1,rt.has(e),t?.status,t?.amendedByMessageId,t?.amendsMessageId,e.attachments?.length??0]}return e.kind==="system"||e.kind==="error"?[e.text]:e.kind==="edit-diff"?[e.diff,e.expanded,e.status]:e.kind==="exit-plan-mode"?[e.plan,e.status]:null}function jc(e){let t=Jc(e);if(t===null)return bi(e);let n=mi.get(e);if(n&&n.sig.length===t.length&&n.sig.every((r,o)=>r===t[o]))return n.node;let s=bi(e);return mi.set(e,{node:s,sig:t}),s}function el(e,t){for(let n=0;n<t.length;n++){let s=t[n],r=e.childNodes[n]??null;r!==s&&e.insertBefore(s,r)}for(;e.childNodes.length>t.length;)e.removeChild(e.lastChild)}function tl(e,t){let n=t.body,s=!e.renderAllHistory&&e.log.length>Pn,r=s?e.log.slice(e.log.length-Pn):e.log,o=[];if(e.historyIsPartial&&!s&&o.push(l("button",{class:"show-earlier",...I(()=>ii(e))},"Load full history")),s){let a=e.log.length-Pn;o.push(l("button",{class:"show-earlier",...I(()=>{e.renderAllHistory=!0,w()})},`Show ${a} earlier message${a===1?"":"s"}`))}for(let a of r)i.hideThoughts&&a.kind==="stream"&&a.role==="thought"||o.push(jc(a));o.push(t.jump),el(n,o),it(t)}function Di(e,t){if(t.view!=="chat"||!t.current||t.banner||t.modal||t.current.fileOverlay)return!1;let n=ot.get(t.current);if(!n)return!1;if(ie()){if(e.childNodes.length!==1)return!1;let s=e.firstElementChild;if(!s||!s.classList.contains("split"))return!1;let r=s.querySelector(":scope > .rail"),o=s.querySelector(":scope > .split-detail");return!r||!o||o.childNodes.length!==1||o.firstChild!==n.root?!1:(Nc(r),Qt(t.current),!0)}return e.childNodes.length!==1||e.firstChild!==n.root?!1:(Qt(t.current),!0)}function Pi(e){let t=ot.get(e);t&&it(t)}function $t(e){let t=ot.get(e);t&&(t.stickToBottom=!0,it(t))}function Qt(e){let t=i.sessions.find(m=>m.sessionId===e.sessionId),n=t?.title||e.title||vi(e.sessionId),s=t?.cwd||e.cwd,r=()=>{e.headerExpanded=!e.headerExpanded,w()},o=l("div",{class:"chat-header"},l("div",{class:"chat-title-row"},l("button",{class:"chat-back",title:"Back to session list",...I(()=>ie()?Yt():Ne())},"\u2190"),l("div",{class:"chat-title clickable",title:"Click for session details",...I(r)},n)),l("div",{class:"chat-header-row"},!e.ready&&e.cold?l("span",{class:"pill cold clickable",title:"Session closed cold \u2014 sending a prompt will resurrect it",...I(r)},"cold"):e.ready?e.inTurn?l("span",{class:"pill working clickable",title:"Agent is working",...I(r)},l("span",{class:"dot"},"\u25CF"),"thinking"):e.armedTasks&&e.armedTasks>0?l("span",{class:"pill waiting clickable",title:e.armedSince?`Agent has a background task running (armed ${Math.max(1,Math.floor((Date.now()-e.armedSince)/6e4))}m ago). It may resume on its own.`:"Agent has a background task running. It may resume on its own.",...I(r)},l("span",{class:"dot"},"\u25CF"),"waiting"):l("span",{class:"pill ready clickable",title:"Ready for a prompt",...I(r)},l("span",{class:"dot"},"\u25CF"),"ready"):l("span",{class:"pill clickable",title:"Click for session details",...I(r)},"connecting\u2026"),t?.workspace?l("span",{class:"pill clickable",title:`In workspace "${t.workspace.label}" (source: ${Xt(t.workspace.sourceCwd)})`,...I(r)},"\u2387 "+t.workspace.label):null,e.model?l("span",{class:"pill clickable",title:"Model (click to change)",...I(Qc)},e.model):null,e.contextUsed!=null&&e.contextSize?l("span",{class:e.compactionPhase?"pill clickable compacting":"pill clickable",title:e.compactionPhase?e.compactionPhase==="deferred"?"Compaction queued \u2014 will run once the session is idle.":"Compacting\u2026":`${e.contextUsed.toLocaleString()} / ${e.contextSize.toLocaleString()} context tokens \u2014 click to compact`,...I(()=>Uc(e))},e.compactionPhase?e.compactionPhase==="deferred"?"\u23F3 queued":"\u25D0 compacting\u2026":`${di(e.contextUsed)}/${di(e.contextSize)}`):null,fi(e.cost)?l("span",{class:"pill",title:"Session cost so far"},fi(e.cost)):null,l("button",{...I(Ci),title:"Options"},"\u2699"),l("button",{...I(gl),title:"Files"},"\u{1F4C1}"),l("button",{title:"Export this session as a *.hydra bundle",...I(()=>Ri(e.sessionId))},"\u2B07"),l("div",{class:"info clickable",title:"Click for session details",...I(r)}))),a=e.headerExpanded?l("div",{class:"chat-details"},Ln("title",n),Ln("session",Ee(e.sessionId)),Ln("directory",s||"?"),Mc(t?.workspace),...e.configOptions.map(Bc)):null,c=Zc(e),u=m=>{m.style.height="auto",m.style.height=m.scrollHeight+"px"},d=(m,E)=>{m.value=E,e.composerValue=E,$e(e.sessionId,E),u(m),m.setSelectionRange(E.length,E.length)},f=m=>{if(m.isComposing)return;if(m.key==="Escape"&&ie()&&!i.modal){m.preventDefault(),m.stopPropagation(),Yt();return}let E=m.target;if(m.key==="ArrowUp"&&!m.shiftKey&&!m.altKey&&!m.ctrlKey&&!m.metaKey&&E.selectionStart===0&&E.selectionEnd===0&&e.history.length>0){let A=e.historyIndex===null?0:Math.min(e.history.length-1,e.historyIndex+1);e.historyIndex===null&&(e.historyDraft=e.composerValue),e.historyIndex=A,m.preventDefault(),d(E,e.history[A]);return}if(m.key==="ArrowDown"&&!m.shiftKey&&!m.altKey&&!m.ctrlKey&&!m.metaKey&&E.selectionStart===E.value.length&&E.selectionEnd===E.value.length&&e.historyIndex!==null){if(m.preventDefault(),e.historyIndex>0)e.historyIndex-=1,d(E,e.history[e.historyIndex]);else{let A=e.historyDraft??"";e.historyIndex=null,e.historyDraft=null,d(E,A)}return}if(m.key==="Enter"&&!m.shiftKey){if(m.altKey||m.ctrlKey||m.metaKey){m.preventDefault(),_l(E,`
468
+ `);return}m.preventDefault(),nt()}},p=l("textarea",{"data-focus-key":"composer",placeholder:e.ready?"Message\u2026":e.cold?"Message\u2026 (wakes the session)":"Connecting\u2026",rows:"1",autocapitalize:"off",onkeydown:f,onpaste:m=>{let E=m.clipboardData?.items;if(!E)return;let A=[];for(let R of E){if(R.kind!=="file"||!R.type.startsWith("image/"))continue;let O=R.getAsFile();O&&A.push(O)}A.length!==0&&(m.preventDefault(),vc(e,A))},oninput:m=>{Hi();let E=m.target;e.composerValue=E.value,$e(e.sessionId,E.value),e.historyIndex!==null&&(e.historyIndex=null,e.historyDraft=null),u(E);let A=E.value.trim().length>0||e.attachments.length>0,R=E.closest(".composer")?.querySelectorAll(".content-gated")??[];for(let O of R)O.disabled=!A}},e.composerValue);e.composerValue&&e.composerValue.length>0&&queueMicrotask(()=>u(p)),!e.composerAutoFocused&&Vn()&&(e.composerAutoFocused=!0,queueMicrotask(()=>p.focus()));let g=e.composerValue.trim().length>0||e.attachments.length>0,b=[];e.inTurn?(e.daemonSupportsAmend&&e.currentHeadMessageId!==void 0&&b.push(l("button",{class:"content-gated",disabled:!g,...I(Ur),title:"Cancel the current turn and replace its prompt"},"Amend")),b.push(l("button",{class:"primary content-gated",disabled:!g,...I(nt),title:"Queue this prompt to run after the current turn"},"Enqueue"))):b.push(l("button",{class:"primary content-gated",disabled:!g,...I(nt)},"Send"));let y=l("div",{class:"composer"},wc(e),p,l("div",{class:"composer-buttons"},l("button",{class:"stop",disabled:!e.inTurn&&!e.promptQueue.some(m=>m.status==="queued"||m.status==="pending"),...I(Kr),title:"Cancel current turn"},"Stop"),...b));return c.headerSlot.replaceChildren(o),a!==null&&document.activeElement!==null&&c.detailsSlot.contains(document.activeElement)||(a?c.detailsSlot.replaceChildren(a):c.detailsSlot.replaceChildren()),c.armedSlot.replaceChildren(Xc(e)),c.composerSlot.replaceChildren(y),tl(e,c),c.root}var hi=new WeakMap;function Bi(e,t){let n=hi.get(e);if(n&&n.text===t)return n.html;let s=fr(t);return hi.set(e,{text:t,html:s}),s}function bi(e){if(e.kind==="stream"){let t=e.role==="thought",n=e.role==="user"?"msg user":t?"msg system":"msg agent",s=t&&rt.has(e),r=l("div",{class:s?n+" collapsed":n});t&&r.addEventListener("click",()=>{if(!!rt.has(e)){rt.delete(e),w();return}let c=document.querySelector(".chat-body"),u=c?.getBoundingClientRect(),d=r.getBoundingClientRect(),f=d.top-(u?.top??0)+(c?.scrollTop??0),g=!u||d.top>=u.top&&d.top<u.bottom?c?.scrollTop??0:f;rt.add(e),w(),requestAnimationFrame(()=>{let b=document.querySelector(".chat-body");b&&(b.scrollTop=g)})});let o=e.queueEntry;if(o&&o.amendedByMessageId!==void 0&&o.status==="amended"&&r.classList.add("amended-target"),o&&(o.status==="queued"||o.status==="pending"||o.status==="cancelled"||o.status==="editing"||o.status==="amended"||o.status==="offline")&&r.appendChild(cl(o)),o&&o.amendsMessageId!==void 0&&r.appendChild(l("span",{class:"amend-badge",title:"Merged amend \u2014 replaces the previous, cancelled prompt"},"+")),o&&o.status==="editing")r.appendChild(ll(o,a=>{e.text=a}));else{e.attachments&&e.attachments.length>0&&r.appendChild(l("div",{class:"attachment-thumbs"},...e.attachments.map(c=>l("img",{class:"attachment-thumb",src:_i(c)}))));let a=l("div",{class:e.synthetic?"body raw":"body"});e.synthetic?a.textContent=e.text:a.innerHTML=Bi(e,e.text),o&&o.status==="cancelled"&&(a.style.textDecoration="line-through",a.style.opacity="0.6"),r.appendChild(a)}return r}if(e.kind==="system")return l("div",{class:"msg system"},e.text);if(e.kind==="error")return l("div",{class:"msg error"},e.text);if(e.kind==="spinner")return ul(e.spinner);if(e.kind==="perm"){if(!i.current)return document.createTextNode("");let t=i.current.pendingPermissions.get(e.toolCallId);return t?fl(t):document.createTextNode("")}return e.kind==="plan"?pl(e.entries):e.kind==="exit-plan-mode"?ol(e):e.kind==="edit-diff"?il(e):document.createTextNode("")}function nl(e){return e==="+"?"diff-line hljs-addition":e==="-"?"diff-line hljs-deletion":e==="gap"?"diff-line diff-gap":"diff-line"}function sl(e){return e==="+"?"+ ":e==="-"?"- ":e==="gap"?"":" "}var Ei=new WeakMap;function rl(e){let t=Ei.get(e);return t||(t={counts:hr(e)},Ei.set(e,t)),t}function il(e){let t=rl(e.diff),n=t.counts,s=e.diff.path?Xt(e.diff.path):"file",r=[];n.added>0&&r.push(l("span",{class:"add"},`+${n.added}`)),n.removed>0&&r.push(l("span",{class:"del"},`-${n.removed}`));let o=l("div",{class:"head",...I(()=>{e.expanded=!e.expanded,w()})},l("span",null,e.expanded?"\u25BE":"\u25B8"),l("span",{class:"title"},`Edited ${s}`),r.length>0?l("span",{class:"kind edit-summary"},r):null),a=l("div",{class:e.expanded?"toolcard open":"toolcard"},o);if(e.expanded){let c=t.lines??(t.lines=br(e.diff));a.appendChild(l("div",{class:"body"},l("pre",null,l("code",{class:"diff-body"},c.map(u=>l("div",{class:nl(u.op)},sl(u.op)+u.text))))))}return a}function ol(e){let t=l("div",{class:"msg agent plan-markdown"});t.appendChild(l("div",{class:"plan-header"},"\u{1F4CB} Plan"));let n=l("div",{class:"body"});n.innerHTML=Bi(e,e.plan),t.appendChild(n);let s=al(e.status);return s!==null&&t.appendChild(s),t}function al(e){if(e===void 0)return null;switch(e){case"completed":case"succeeded":case"ok":return l("div",{class:"plan-status plan-status-ok"},"\u2713 Approved");case"failed":case"error":case"rejected":return l("div",{class:"plan-status plan-status-fail"},"\u2717 Rejected");case"cancelled":return l("div",{class:"plan-status plan-status-cancelled"},"\u229D Cancelled");case"pending":case"in_progress":case"running":case"updated":return l("div",{class:"plan-status plan-status-pending"},"awaiting approval\u2026");default:return null}}function cl(e){if(e.status==="queued"||e.status==="pending"){let t=e.status==="pending"?"sending\u2026":`queued \xB7 ${Math.max(1,e.aheadAtEnqueue)} ahead`+(e.held?" \xB7 held: agent resumed":"");return l("div",{class:"queue-chip queue-queued"},l("span",null,t),l("button",{class:"queue-edit",...I(()=>{e.status="editing",w()}),title:"Edit before sending"},l("span",{class:"queue-btn-glyph"},"\u270E")),l("button",{class:"queue-cancel",...I(()=>qt(e)),title:"Cancel before sending"},l("span",{class:"queue-btn-glyph"},"\xD7")))}return e.status==="editing"?l("div",{class:"queue-chip queue-editing"},l("span",null,"editing \u2014 Save or Cancel below")):e.status==="processing"?l("div",{class:"queue-chip queue-processing"},l("span",{class:"dot"}),l("span",null,"processing")):e.status==="cancelled"?l("div",{class:"queue-chip queue-cancelled"},l("span",null,"cancelled")):e.status==="amended"?l("div",{class:"queue-chip queue-amended"},l("span",null,"amended \u2014 merged into the next prompt")):e.status==="offline"?l("div",{class:"queue-chip queue-offline"},l("span",null,"pending"),l("button",{class:"queue-edit",...I(()=>{e.editReturnStatus="offline",e.status="editing",w()}),title:"Edit before sending"},l("span",{class:"queue-btn-glyph"},"\u270E")),l("button",{class:"queue-cancel",...I(()=>qt(e)),title:"Discard, this was never sent"},l("span",{class:"queue-btn-glyph"},"\xD7"))):document.createTextNode("")}function ll(e,t){let n=l("textarea",{class:"queue-edit-area",rows:"3",autocapitalize:"off"});n.value=e.text;let s=()=>{e.status=e.editReturnStatus??"queued",e.editReturnStatus=void 0},r=()=>{let a=n.value;e.text=a,t(a),s(),Hr(e,a),w()},o=()=>{s(),w()};return n.addEventListener("keydown",a=>{a.key==="Enter"&&!a.shiftKey?(a.preventDefault(),r()):a.key==="Escape"&&(a.preventDefault(),o())}),queueMicrotask(()=>{n.focus(),n.setSelectionRange(n.value.length,n.value.length)}),l("div",{class:"queue-editor"},n,l("div",{class:"queue-editor-actions"},l("button",{class:"ghost",...I(o)},"Cancel"),l("button",{class:"primary",...I(r)},"Save")))}function ul(e){let t=l("button",{class:"queue-cancel",...I(()=>qr()),title:"Cancel this turn"},l("span",{class:"queue-btn-glyph"},"\xD7"));if(!e.expanded)return l("div",{class:"spinner",...I(()=>{e.expanded=!0,w()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,e.toolCallIds.length===0?"thinking\u2026":`working \u2014 ${e.toolCallIds.length} tool call${e.toolCallIds.length===1?"":"s"}`),t));let n=e.toolCallIds.map(s=>{let r=i.current?.toolCalls.get(s);if(!r)return null;let o=r.status==="completed"||r.status==="success"?"\u2705":r.status==="failed"||r.status==="error"?"\u274C":"\u25B6";return l("li",null,l("span",{class:"icon"},o),document.createTextNode(" "+r.title))});return l("div",{class:"spinner expanded",...I(()=>{e.expanded=!1,w()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,"working"),t),l("ul",null,n))}function dl(e){let t=f=>typeof f=="string"&&f.length>0?f:void 0,n=[],s=(f,p)=>l("div",{class:"detail"},l("span",{class:"k"},f),l("code",null,p)),r=t(e.kind);r&&n.push(s("kind",r));let o=new Set,a=[],c=f=>{let p=t(f);p&&!o.has(p)&&(o.add(p),a.push(p))},u=e.locations;if(Array.isArray(u))for(let f of u)f&&typeof f=="object"&&c(f.path);let d=e.rawInput&&typeof e.rawInput=="object"?e.rawInput:void 0;d&&(c(d.file_path),c(d.filePath),c(d.path));for(let f of a)n.push(s("path",f));if(d){let f=t(d.command);f&&n.push(s("command",f));let p=t(d.url);p&&n.push(s("url",p));let g=t(d.description);g&&n.push(l("div",{class:"detail note"},g))}return n}function fl(e){let t=e.toolCall||{};return l("div",{class:"perm"},l("div",{class:"title"},"\u{1F512} Permission requested"),l("div",{class:"desc"},t.title||t.name||"tool call"),dl(t),l("div",{class:"opts"},...e.options.map(n=>l("button",{class:n.kind?.startsWith("allow")?"primary":n.kind?.startsWith("reject")?"danger":"",...I(()=>xn(e.toolCallId,n.optionId))},n.name||n.optionId)),l("button",{...I(()=>xn(e.toolCallId,"__cancel__"))},"Cancel")))}function pl(e){return Array.isArray(e)?l("div",{class:"msg agent"},l("div",{class:"body"},l("strong",null,"Plan")),l("ul",null,...e.map(t=>l("li",null,`${t.status==="completed"?"\u2713":t.status==="in_progress"?"\u25B8":"\xB7"} ${t.content||t.title||""}`)))):document.createTextNode("")}function gl(){i.current&&(i.current.fileOverlay={path:"",entries:[],preview:null,err:null},w(),at(""))}async function at(e){if(i.current)try{let t=await ee("/api/files/list",{method:"POST",body:JSON.stringify({sessionId:i.current.sessionId,path:e})});i.current.fileOverlay={path:t.path,entries:t.entries??[],preview:null,err:null},w()}catch(t){i.current.fileOverlay={path:e,entries:[],preview:null,err:t.message},w()}}async function ml(e){if(i.current)try{let t=await ee("/api/files/read",{method:"POST",body:JSON.stringify({sessionId:i.current.sessionId,path:e})}),n=i.current.fileOverlay;i.current.fileOverlay={path:n.path,entries:n.entries,preview:{path:e,content:t.content},err:null},w()}catch(t){i.current.fileOverlay&&(i.current.fileOverlay={...i.current.fileOverlay,err:t.message}),w()}}function yi(){i.current&&(i.current.fileOverlay=null,w())}function hl(e){if(!i.current?.fileOverlay)return;let t=i.current.fileOverlay,n=t.path?`${t.path}/${e.name}`:e.name;e.kind==="dir"?at(n):e.kind==="file"&&ml(n)}function bl(e){let t=e?e.split("/").filter(Boolean):[],n=[l("span",{class:"crumb",...I(()=>at(""))},".")],s="";for(let r of t){s=s?`${s}/${r}`:r;let o=s;n.push(document.createTextNode(" / ")),n.push(l("span",{class:"crumb",...I(()=>at(o))},r))}return l("div",{class:"crumbs"},n)}function El(e,t){if(!i.current)return;let n=`${e}:${t}`,s=i.current.composerValue;i.current.composerValue=s?`${s} ${n}`:n,$e(i.current.sessionId,i.current.composerValue),w()}function yl(){i.current?.fileOverlay&&(i.current.fileOverlay.preview=null,w())}function Fi(e){let t=e.fileOverlay;if(!t)return document.createTextNode("");let n;if(t.preview){let{path:s,content:r}=t.preview,o=cr(r,s)??oe(r),a=r.split(`
469
+ `).length,c=l("div",{class:"code-gutter"});for(let u=1;u<=a;u++){let d=u;c.appendChild(l("div",{class:"ln",...I(()=>El(s,d))},String(d)))}n=l("div",{class:"preview"},l("div",{class:"crumbs"},l("span",{class:"crumb",...I(()=>yl())},"\u2190 back to listing"),document.createTextNode(` ${s}`)),l("div",{class:"code-view"},c,l("pre",{},l("code",{class:"hljs",html:o}))))}else n=l("div",{class:"body"},t.err?l("div",{class:"msg error"},t.err):null,t.path?l("div",{class:"entry",...I(()=>at(t.path.split("/").slice(0,-1).join("/")))},l("span",{class:"icon"},"\u25B8"),l("span",{class:"name"},".."),l("span",{class:"size"},"")):null,...t.entries.map(s=>l("div",{class:"entry",...I(()=>hl(s))},l("span",{class:"icon"},s.kind==="dir"?"\u25B8":"\xB7"),l("span",{class:"name"},s.name),l("span",{class:"size"},s.kind==="file"?`${s.size}b`:""))));return l("div",{class:"modal-bg",...I(s=>{s.target.classList.contains("modal-bg")&&yi()})},l("div",{class:"modal file-modal"},l("div",{class:"topbar",style:"border-bottom:1px solid var(--border)"},l("span",{class:"title"},"Files"),l("span",{class:"pill"},e.cwd),l("span",{class:"spacer"}),l("button",{...I(yi)},"\xD7")),bl(t.path),l("div",{class:"files"},n)))}function _l(e,t){e.focus();let n=!1;if(typeof document.execCommand=="function")try{n=document.execCommand("insertText",!1,t)}catch{n=!1}if(!n){let s=e.selectionStart??e.value.length,r=e.selectionEnd??e.value.length,o=e.value.slice(0,s),a=e.value.slice(r);e.value=o+t+a;let c=s+t.length;e.setSelectionRange(c,c),e.dispatchEvent(new Event("input",{bubbles:!0}))}}var $n=!1,vl=100,Ki=0,ct=!1,lt=!1;document.addEventListener("pointerdown",()=>{ct=!0},!0);document.addEventListener("pointerup",e=>{if(!ct||(ct=!1,!lt))return;lt=!1;let n=e.target?.tagName;if(n==="TEXTAREA"||n==="INPUT"||n==="SELECT"){setTimeout(w,300);return}w()},!0);document.addEventListener("pointercancel",()=>{ct=!1,lt&&(lt=!1,w())},!0);var zi=250,Gi=0;function Hi(){Gi=performance.now()}function Kn(){let e=document.activeElement;return!(e instanceof HTMLTextAreaElement)&&!(e instanceof HTMLInputElement)?!1:performance.now()-Gi<zi}var qn=!1;function w(){if($n)return;$n=!0;let e=performance.now()-Ki,t=Math.max(0,vl-e),n=()=>{if($n=!1,ct){lt=!0;return}if(Kn()){qn=!0,setTimeout(()=>{qn&&(qn=!1,w())},zi);return}Ki=performance.now(),wl()};t>0?setTimeout(()=>requestAnimationFrame(n),t):requestAnimationFrame(n)}function wl(){let e=document.getElementById("app");if(!e)return;let t=document.activeElement,n=null,s=null,r=null;if(t&&t!==document.body&&t.dataset&&t.dataset.focusKey&&(n=t.dataset.focusKey,"selectionStart"in t))try{s=t.selectionStart,r=t.selectionEnd}catch{}let o=()=>{if(!n)return;let A=e.querySelector(`[data-focus-key="${CSS.escape(n)}"]`);if(!A)return;A.focus();let R=A;if(s!==null&&typeof R.setSelectionRange=="function")try{R.setSelectionRange(s,r)}catch{}};if(Di(e,i)){o();return}let a=e.querySelector(".chat-body"),c=a?a.scrollTop:null,u=e.querySelector(".list"),d=u?u.scrollTop:null,f=e.querySelector(".files .body"),p=f?f.scrollTop:null,g=e.querySelector(".files .preview"),b=g?g.scrollTop:null;e.replaceChildren(),Si(e,i);let y=e.querySelector(".chat-body");if(y){c!==null&&(y.scrollTop=c),i.current&&Pi(i.current);let A=y.querySelector(".jump-to-latest");if(A){let R=y.scrollHeight-y.scrollTop-y.clientHeight<50;A.classList.toggle("visible",!R)}}let _=e.querySelector(".list");_&&d!==null&&(_.scrollTop=d);let m=e.querySelector(".files .body");m&&p!==null&&(m.scrollTop=p);let E=e.querySelector(".files .preview");E&&b!==null&&(E.scrollTop=b),o()}var Wi="hydra-acp-browser:filters",Yi=["groupBy","showCold","hostFilter","hideThoughts","notifyOnTurnEnd","theme"];function Sl(){try{let e=localStorage.getItem(Wi);return e?JSON.parse(e):{}}catch{return{}}}function Tl(){try{let e={};for(let t of Yi)e[t]=i[t];localStorage.setItem(Wi,JSON.stringify(e))}catch{}}var i={view:"list",sessions:[],agents:[],defaultCwd:null,groupBy:"project",showCold:!1,hostFilter:"__local",listHighlightedSessionId:null,hideThoughts:!1,notifyOnTurnEnd:!1,theme:"dark",banner:null,modal:null,current:null,lastSessionId:null,...Sl()},Il=["sessions","groupBy","showCold","hostFilter","listHighlightedSessionId"],Vt=!0;function Qi(){Vt=!0}function Ui(){return Vt}function Un(){Vt=!1}function M(e){let t=!1,n=!1;for(let s of Object.keys(e)){let r=e[s];zn(i[s],r)||(i[s]=r,t=!0,Yi.includes(s)&&(n=!0),Il.includes(s)&&(Vt=!0))}n&&Tl(),t&&w()}function zn(e,t){return e===t?!0:e===null||t===null||typeof e!=typeof t||typeof e!="object"?!1:JSON.stringify(e)===JSON.stringify(t)}function Al(){let e=window.getSelection();return!e||e.isCollapsed?!1:e.toString().length>0}async function ee(e,t){let n=await fetch(e,{credentials:"same-origin",headers:{"Content-Type":"application/json"},...t});if(!n.ok){let s=`${n.status} ${n.statusText}`;try{let r=await n.json();r&&r.error&&(s=r.error)}catch{}throw new Error(s)}return n.status===204?null:await n.json()}var Gn=null;async function ke(){if(!Kn()){if(i.view==="chat"&&i.current&&!ie()){await Nl(i.current.sessionId);return}await kl()}}async function Nl(e){try{let t=await ee(`/api/sessions/${encodeURIComponent(e)}`),n=i.sessions.findIndex(r=>r.sessionId===e);if(n>=0?i.sessions[n]=t:i.sessions.push(t),!i.current||i.current.sessionId!==e)return;let s=`${t.title}|${t.cwd}|${t.agentId}|${t.currentModel}|${t.workspace?.label}|${t.workspace?.vcs?.branch}|${t.workspace?.clean}`;s!==i.current._lastMetaFp&&(i.current._lastMetaFp=s,w())}catch{}}async function kl(){try{let n=(await ee("/api/sessions")).sessions??[],s=i.banner!==null,r=!zn(i.sessions,n);if(i.sessions=n,i.banner=null,r&&Qi(),!r&&!s||!s&&Al()||!s&&i.modal)return;w()}catch(e){M({banner:{kind:"bad",text:"session list failed: "+e.message}})}}function Xi(){Gn&&clearInterval(Gn),ke(),Gn=setInterval(()=>{ke()},2e3)}async function Vi(){try{let e=await ee("/api/agents");M({agents:e.agents??[]})}catch(e){M({banner:{kind:"warn",text:"agents unavailable: "+e.message}})}}async function Zi(){try{let e=await ee("/api/config");M({defaultCwd:e.defaultCwd??null})}catch{}}async function $i(e,t={}){return ee("/api/sessions/import",{method:"POST",body:JSON.stringify({bundle:e,replace:t.replace===!0})})}async function qi(e){let t=await fetch("/api/sessions/import",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({bundle:e})});if(t.ok)return{ok:!0,result:await t.json()};let n,s=`${t.status} ${t.statusText}`;try{let r=await t.json();r.existingSessionId&&(n=r.existingSessionId),r.error&&(s=r.error)}catch{}return{ok:!1,status:t.status,message:s,existingSessionId:n}}var Ji=70,xl=110,Zt=null,ut=!1,Ye=!1,We=null;function Wn(){return We||(We=document.createElement("div"),We.className="pull-refresh",document.body.appendChild(We),We)}function Cl(e){let t=Wn(),n=Math.max(0,Math.min(e,xl));Ye=n>=Ji,t.style.opacity=n>0?String(Math.min(n/Ji,1)):"0",t.style.transform=`translate(-50%, ${n>0?n-32:-48}px)`,t.textContent=Ye?"\u2191 Release to refresh":"\u2193 Pull to refresh"}function eo(){let e=Wn();e.style.opacity="0",e.style.transform="translate(-50%, -48px)"}function to(){return document.querySelector(".list")}function Ml(e){if(ut=!1,Ye=!1,i.view!=="list")return;let t=to(),n=e.touches[0];!t||!n||t.scrollTop>0||!t.contains(n.target)||(Zt=n.clientY,ut=!0)}function Rl(e){if(!ut||Zt===null)return;let t=to(),n=e.touches[0];if(!t||!n)return;let s=n.clientY-Zt;if(s<=0||t.scrollTop>0){eo(),Ye=!1;return}e.preventDefault(),Cl(s)}function ji(){if(ut&&Ye){let e=Wn();e.textContent="Refreshing\u2026",location.reload()}else eo();ut=!1,Ye=!1,Zt=null}function no(){document.addEventListener("touchstart",Ml,{passive:!0}),document.addEventListener("touchmove",Rl,{passive:!1}),document.addEventListener("touchend",ji,{passive:!0}),document.addEventListener("touchcancel",ji,{passive:!0})}var dt=80,so=12;function Ol(e){let t=e instanceof Element?e:null;for(;t&&t!==document.body;){if(t.scrollWidth>t.clientWidth&&t.scrollLeft>0)return!0;t=t.parentElement}return!1}var Qe=null,Jt=null,pe=null,jt=!1,en=!1,ye=null;function Ll(){return ye||(ye=document.createElement("div"),ye.className="swipe-back-hint",document.body.appendChild(ye),ye)}function Dl(){let e=i.lastSessionId,t=i.sessions.find(n=>n.sessionId===e);return t?.title?t.title:e?e.slice(0,12):""}function Pl(e,t){let n=Ll(),s=Math.min(Math.abs(e)/dt,1);n.classList.toggle("left",t==="toList"),t==="toChat"?(n.textContent=(s>=1?"\u21A9 Release to open ":"\u2190 ")+Dl(),n.style.transform=`translate(${Math.min(-e,dt+20)*-1}px, -50%)`):(n.textContent=s>=1?"\u21A9 Release for session list":"Session list \u2192",n.style.transform=`translate(${Math.min(e,dt+20)}px, -50%)`),n.style.opacity=s>0?String(s):"0"}function Bl(){ye&&(ye.style.opacity="0")}function tn(){Qe=null,Jt=null,pe=null,jt=!1,en=!1,Bl()}function Fl(e){tn();let t=e.touches[0];if(t){if(i.view==="list"&&i.lastSessionId)pe="toChat";else if(i.view==="chat"&&!me(t.target)&&!Ol(t.target))pe="toList";else return;Qe=t.clientX,Jt=t.clientY,jt=!0}}function Hl(e){if(!jt||Qe===null||Jt===null||!pe)return;let t=e.touches[0];if(!t)return;let n=t.clientX-Qe,s=t.clientY-Jt;if(!en){if(Math.abs(n)<so&&Math.abs(s)<so)return;let r=pe==="toChat"?n<0:n>0;if(Math.abs(s)>Math.abs(n)||!r){jt=!1;return}en=!0}Pl(n,pe)}function Ul(e){if(!en||Qe===null||!pe){tn();return}let t=e.changedTouches[0],n=t?t.clientX-Qe:0;if(pe==="toChat"&&n<=-dt){let s=i.lastSessionId,r=s?i.sessions.find(o=>o.sessionId===s):void 0;s&&r&&Ge(s,r.status==="cold")}else pe==="toList"&&n>=dt&&Ne();tn()}function ro(){document.addEventListener("touchstart",Fl,{passive:!0}),document.addEventListener("touchmove",Hl,{passive:!0}),document.addEventListener("touchend",Ul,{passive:!0}),document.addEventListener("touchcancel",tn,{passive:!0})}var $l=(()=>{try{return new URLSearchParams(window.location.search).get("vpdebug")==="1"}catch{return!1}})();function ql(e,t,n){let s=document.getElementById("__viewport_debug__");s||(s=document.createElement("div"),s.id="__viewport_debug__",s.style.cssText="position:absolute;top:0;left:0;right:0;z-index:9999;background:rgba(0,0,0,0.85);color:#fd9;padding:0.4rem 0.6rem;font:11px/1.4 ui-monospace,monospace;border:1px solid #d4a17e;border-radius:6px;white-space:pre;pointer-events:none;opacity:0.9",document.body.appendChild(s));let r=document.querySelector(".composer"),o=r?.getBoundingClientRect(),a=r?getComputedStyle(r).paddingBottom:"n/a",c=document.getElementById("app"),u=c?.getBoundingClientRect(),d=c?getComputedStyle(c).height:"n/a",p=document.querySelector(".chat-body")?.getBoundingClientRect(),g=document.getElementById("__vp_icb_line__");g||(g=document.createElement("div"),g.id="__vp_icb_line__",document.body.appendChild(g)),g.style.cssText=`position:absolute;left:0;right:0;top:${window.innerHeight-3}px;height:3px;background:lime;z-index:9999;pointer-events:none`;let b=document.getElementById("__vp_app_line__");b||(b=document.createElement("div"),b.id="__vp_app_line__",document.body.appendChild(b)),b.style.cssText="position:absolute;left:0;right:0;top:calc(var(--app-height, 100%) - 3px);height:3px;background:magenta;z-index:9999;pointer-events:none";let y=document.querySelector(".composer-buttons");y&&(y.style.outline="2px solid cyan");let _=E=>E?`top=${E.top.toFixed(0)} h=${E.height.toFixed(0)} bottom=${E.bottom.toFixed(0)}`:"n/a",m=document.body.getBoundingClientRect();s.textContent=`innerHeight=${window.innerHeight} appH(vv+inset)=${e.toFixed(1)} inset=${io().toFixed(0)}
415
470
  vv.offsetTop=${t.toFixed(1)} keyboard-open=${n}
416
471
  screen.h=${screen.height} docClientH=${document.documentElement.clientHeight}
417
- body ${y(m)}
418
- #app styleH=${d} ${y(u)}
419
- .chat-body ${y(p)}
420
- .composer padBottom=${a} ${y(o)}`}var ut=null;function Bi(){return ut||(ut=document.createElement("div"),ut.style.cssText="position:fixed;top:0;left:0;width:1px;height:env(safe-area-inset-top,0px);visibility:hidden;pointer-events:none",document.documentElement.appendChild(ut)),ut.getBoundingClientRect().height}function Fi(){let e=document.documentElement,t=new Map,n=null,s=null,r=null,o=()=>{let d=window.visualViewport,f=(d?.height??window.innerHeight)+Bi(),p=d?.offsetTop??0;f!==n&&(n=f,e.style.setProperty("--app-height",`${f}px`));let g=Math.round(d?.width??window.innerWidth),b=Math.max(f,t.get(g)??0);t.set(g,b);let _=b-f>100;_!==s&&(s=_,e.classList.toggle("keyboard-open",_));let y=_?p:0;y!==r&&(r=y,e.style.setProperty("--app-offset-top",`${y}px`)),hl&&bl(f,y,_)};o(),window.visualViewport&&(window.visualViewport.addEventListener("resize",o),window.visualViewport.addEventListener("scroll",o)),window.addEventListener("resize",o),window.addEventListener("orientationchange",o),window.addEventListener("pageshow",o),window.addEventListener("focus",o),document.addEventListener("visibilitychange",o);let a=1200,c=0,u=()=>{c&&cancelAnimationFrame(c);let d=performance.now()+a,f=null,p=0,g=()=>{o();let b=window.visualViewport?.height??window.innerHeight;if(f!==null&&Math.abs(b-f)<.5?p++:p=0,f=b,p>=2||performance.now()>=d){c=0;return}c=requestAnimationFrame(g)};c=requestAnimationFrame(g)};document.addEventListener("focusin",u),document.addEventListener("focusout",u),setInterval(o,1e3)}Fi();window.addEventListener("DOMContentLoaded",()=>{Ni(),ki(),xi(),Ke(),i.notifyOnTurnEnd&&typeof Notification<"u"&&Notification.permission==="granted"&&qt().then(()=>ze()),zr(),An(),w(),Li(),Pi()});window.addEventListener("hashchange",()=>{An()});document.addEventListener("visibilitychange",()=>tt());window.addEventListener("focus",()=>tt());window.addEventListener("blur",()=>tt());window.addEventListener("online",()=>Qr());window.addEventListener("keydown",e=>{e.key.toLowerCase()!=="p"||!e.ctrlKey||e.metaKey||e.altKey||(e.preventDefault(),i.view==="chat"&&Ae())});window.addEventListener("keydown",e=>ui(e));window.addEventListener("keydown",e=>{if(e.key!=="PageUp"&&e.key!=="PageDown"||i.view!=="chat")return;let t=document.activeElement;if(t instanceof HTMLTextAreaElement&&t.scrollHeight>t.clientHeight)return;let n=document.querySelector(".chat-body");if(!n)return;e.preventDefault();let s=n.clientHeight*.9;n.scrollBy({top:e.key==="PageDown"?s:-s,behavior:"smooth"})});})();
472
+ body ${_(m)}
473
+ #app styleH=${d} ${_(u)}
474
+ .chat-body ${_(p)}
475
+ .composer padBottom=${a} ${_(o)}`}var ft=null;function io(){return ft||(ft=document.createElement("div"),ft.style.cssText="position:fixed;top:0;left:0;width:1px;height:env(safe-area-inset-top,0px);visibility:hidden;pointer-events:none",document.documentElement.appendChild(ft)),ft.getBoundingClientRect().height}function oo(){let e=document.documentElement,t=new Map,n=null,s=null,r=null,o=()=>{let d=window.visualViewport,f=(d?.height??window.innerHeight)+io(),p=d?.offsetTop??0;f!==n&&(n=f,e.style.setProperty("--app-height",`${f}px`));let g=Math.round(d?.width??window.innerWidth),b=Math.max(f,t.get(g)??0);t.set(g,b);let y=b-f>100;y!==s&&(s=y,e.classList.toggle("keyboard-open",y));let _=y?p:0;_!==r&&(r=_,e.style.setProperty("--app-offset-top",`${_}px`)),$l&&ql(f,_,y)};o(),window.visualViewport&&(window.visualViewport.addEventListener("resize",o),window.visualViewport.addEventListener("scroll",o)),window.addEventListener("resize",o),window.addEventListener("orientationchange",o),window.addEventListener("pageshow",o),window.addEventListener("focus",o),document.addEventListener("visibilitychange",o);let a=1200,c=0,u=()=>{c&&cancelAnimationFrame(c);let d=performance.now()+a,f=null,p=0,g=()=>{o();let b=window.visualViewport?.height??window.innerHeight;if(f!==null&&Math.abs(b-f)<.5?p++:p=0,f=b,p>=2||performance.now()>=d){c=0;return}c=requestAnimationFrame(g)};c=requestAnimationFrame(g)};document.addEventListener("focusin",u),document.addEventListener("focusout",u),setInterval(o,1e3)}li();oo();Jn(()=>w());window.addEventListener("DOMContentLoaded",()=>{Xi(),Vi(),Zi(),Ke(),i.notifyOnTurnEnd&&typeof Notification<"u"&&Notification.permission==="granted"&&zt().then(()=>ze()),si(),Mn(),w(),no(),ro()});window.addEventListener("hashchange",()=>{Mn()});document.addEventListener("visibilitychange",()=>st());window.addEventListener("focus",()=>st());window.addEventListener("blur",()=>st());window.addEventListener("online",()=>ai());window.addEventListener("keydown",e=>{e.key.toLowerCase()!=="p"||!e.ctrlKey||e.metaKey||e.altKey||(e.preventDefault(),ie()?Yt():i.view==="chat"&&Ne())});window.addEventListener("keydown",e=>{e.key!=="Escape"||!i.modal||i.modal.kind==="session"&&i.modal.busy||(e.preventDefault(),e.stopImmediatePropagation(),fe())});window.addEventListener("keydown",e=>ki(e));window.addEventListener("keydown",e=>{if(e.key!=="PageUp"&&e.key!=="PageDown"||i.view!=="chat")return;let t=document.activeElement;if(t instanceof HTMLTextAreaElement&&t.scrollHeight>t.clientHeight)return;let n=document.querySelector(".chat-body");if(!n)return;e.preventDefault();let s=n.clientHeight*.9;n.scrollBy({top:e.key==="PageDown"?s:-s,behavior:"smooth"})});})();
421
476
  </script>
422
477
  </body>
423
478
  </html>