@timqi/pier 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +97 -0
  3. package/dist/agent/config.js +133 -0
  4. package/dist/agent/credentials.js +179 -0
  5. package/dist/agent/events.js +253 -0
  6. package/dist/agent/models.js +15 -0
  7. package/dist/agent/pi.js +296 -0
  8. package/dist/boards/boards.js +200 -0
  9. package/dist/boards/pier.css +445 -0
  10. package/dist/channels/chains.js +67 -0
  11. package/dist/channels/chunk.js +28 -0
  12. package/dist/channels/commands.js +28 -0
  13. package/dist/channels/config.js +172 -0
  14. package/dist/channels/control.js +71 -0
  15. package/dist/channels/conversations.js +65 -0
  16. package/dist/channels/gatekeeper.js +63 -0
  17. package/dist/channels/panel.js +233 -0
  18. package/dist/channels/receipts.js +104 -0
  19. package/dist/channels/routes.js +110 -0
  20. package/dist/channels/runtime.js +76 -0
  21. package/dist/channels/slack-api.js +296 -0
  22. package/dist/channels/slack-directory.js +77 -0
  23. package/dist/channels/slack-outbound.js +121 -0
  24. package/dist/channels/slack-panel.js +122 -0
  25. package/dist/channels/slack-render.js +214 -0
  26. package/dist/channels/slack-tool.js +334 -0
  27. package/dist/channels/slack.js +510 -0
  28. package/dist/channels/telegram-api.js +78 -0
  29. package/dist/channels/telegram-panel.js +113 -0
  30. package/dist/channels/telegram-render.js +96 -0
  31. package/dist/channels/telegram.js +473 -0
  32. package/dist/channels/types.js +27 -0
  33. package/dist/cli.js +101 -0
  34. package/dist/core/hub.js +53 -0
  35. package/dist/core/identity.js +66 -0
  36. package/dist/core/queue.js +11 -0
  37. package/dist/core/reply.js +202 -0
  38. package/dist/core/router.js +189 -0
  39. package/dist/core/types.js +7 -0
  40. package/dist/db.js +268 -0
  41. package/dist/log.js +55 -0
  42. package/dist/main.js +183 -0
  43. package/dist/paths.js +17 -0
  44. package/dist/secrets.js +191 -0
  45. package/dist/service.js +134 -0
  46. package/dist/settings.js +57 -0
  47. package/dist/tasks/agent.js +197 -0
  48. package/dist/tasks/callbacks.js +140 -0
  49. package/dist/tasks/command.js +74 -0
  50. package/dist/tasks/definitions.js +316 -0
  51. package/dist/tasks/execution.js +141 -0
  52. package/dist/tasks/groups.js +187 -0
  53. package/dist/tasks/messages.js +248 -0
  54. package/dist/tasks/routes.js +219 -0
  55. package/dist/tasks/runs.js +104 -0
  56. package/dist/tasks/service.js +282 -0
  57. package/dist/tasks/store.js +168 -0
  58. package/dist/tasks/tool.js +281 -0
  59. package/dist/tasks/types.js +5 -0
  60. package/dist/web/auth.js +280 -0
  61. package/dist/web/files.js +167 -0
  62. package/dist/web/public/assets/index-8CinH1uR.css +2 -0
  63. package/dist/web/public/assets/index-DAgP1Gq8.js +78 -0
  64. package/dist/web/public/icon-192.png +0 -0
  65. package/dist/web/public/icon-32.png +0 -0
  66. package/dist/web/public/icon-512.png +0 -0
  67. package/dist/web/public/icon-maskable-512.png +0 -0
  68. package/dist/web/public/icon-touch-192.png +0 -0
  69. package/dist/web/public/icon.svg +19 -0
  70. package/dist/web/public/index.html +251 -0
  71. package/dist/web/public/manifest.webmanifest +16 -0
  72. package/dist/web/public/sw.js +21 -0
  73. package/dist/web/server.js +366 -0
  74. package/dist/web/session-state.js +39 -0
  75. package/docs/deploy.md +307 -0
  76. package/package.json +55 -0
  77. package/skills/pier-boards/SKILL.md +210 -0
  78. package/skills/pier-slack/SKILL.md +135 -0
  79. package/skills/pier-tasks/SKILL.md +120 -0
@@ -0,0 +1,78 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=(e,t,n=`POST`)=>fetch(e,{method:n,headers:{"content-type":`application/json`},body:JSON.stringify(t)});async function u(e,t){return(await e.json().catch(()=>({}))).error??`${t} (${e.status})`}async function d(e,t,n,r){let i=window.prompt(e);if(!i?.trim())return{sent:!1};try{let e=await l(t,{message:i,...n});return{sent:!0,...e.ok?{}:{error:await u(e,r)}}}catch(e){return{sent:!0,error:`${r}: ${String(e)}`}}}function f(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function p(e){if(Array.isArray(e))return e}function m(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function h(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function g(e,t){return p(e)||m(e,t)||_(e,t)||h()}function _(e,t){if(e){if(typeof e==`string`)return f(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}var v=Object.entries,y=Object.setPrototypeOf,b=Object.isFrozen,x=Object.getPrototypeOf,S=Object.getOwnPropertyDescriptor,C=Object.freeze,w=Object.seal,T=Object.create,E=typeof Reflect<`u`&&Reflect,D=E.apply,O=E.construct;C||=function(e){return e},w||=function(e){return e},D||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},O||=function(e){return new e(...[...arguments].slice(1))};var k=P(Array.prototype.forEach),A=P(Array.prototype.lastIndexOf),ee=P(Array.prototype.pop),j=P(Array.prototype.push),te=P(Array.prototype.splice),M=Array.isArray,ne=P(String.prototype.toLowerCase),re=P(String.prototype.toString),ie=P(String.prototype.match),ae=P(String.prototype.replace),oe=P(String.prototype.indexOf),se=P(String.prototype.trim),ce=P(Number.prototype.toString),le=P(Boolean.prototype.toString),ue=typeof BigInt>`u`?null:P(BigInt.prototype.toString),de=typeof Symbol>`u`?null:P(Symbol.prototype.toString),fe=P(Object.prototype.hasOwnProperty),pe=P(Object.prototype.toString),N=P(RegExp.prototype.test),me=he(TypeError);function P(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return D(e,t,n)}}function he(e){return function(){return O(e,[...arguments])}}function F(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ne;if(y&&y(e,null),!M(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(b(t)||(t[r]=e),i=e)}e[i]=!0}return e}function ge(e){for(let t=0;t<e.length;t++)fe(e,t)||(e[t]=null);return e}function I(e){let t=T(null);for(let r of v(e)){var n=g(r,2);let i=n[0],a=n[1];fe(e,i)&&(t[i]=M(a)?ge(a):a&&typeof a==`object`&&a.constructor===Object?I(a):a)}return t}function _e(e){switch(typeof e){case`string`:return e;case`number`:return ce(e);case`boolean`:return le(e);case`bigint`:return ue?ue(e):`0`;case`symbol`:return de?de(e):`Symbol()`;case`undefined`:return pe(e);case`function`:case`object`:{if(e===null)return pe(e);let t=e,n=ve(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:pe(e)}return pe(e)}default:return pe(e)}}function ve(e,t){for(;e!==null;){let n=S(e,t);if(n){if(n.get)return P(n.get);if(typeof n.value==`function`)return P(n.value)}e=x(e)}function n(){return null}return n}function ye(e){try{return N(e,``),!0}catch{return!1}}var be=C(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),xe=C(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),Se=C([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Ce=C([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),we=C(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Te=C([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Ee=C([`#text`]),De=C(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),Oe=C(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dominant-baseline.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.pointer-events.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-orientation.text-rendering.textlength.type.u1.u2.unicode.values.vector-effect.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),ke=C(`accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Ae=C([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),je=w(/{{[\w\W]*|^[\w\W]*}}/g),Me=w(/<%[\w\W]*|^[\w\W]*%>/g),Ne=w(/\${[\w\W]*/g),Pe=w(/^data-[\-\w.\u00B7-\uFFFF]+$/),Fe=w(/^aria-[\-\w]+$/),Ie=w(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Le=w(/^(?:\w+script|data):/i),Re=w(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ze=w(/^html$/i),Be=w(/^[a-z][.\w]*(-[.\w]+)+$/i),Ve=w(/<[/\w!]/g),He=w(/<[/\w]/g),Ue=w(/<\/no(script|embed|frames)/i),We=w(/\/>/i),Ge={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Ke=[`style`,`script`,`xmp`,`iframe`,`noembed`,`noframes`,`plaintext`,`noscript`],qe=C(F({},Ke)),Je=function(){let e={};return k(Ke,t=>{e[t]=w(RegExp(`</`+t+`(?=[\\t\\n\\f\\r />])`,`i`))}),C(e)}(),Ye=function(){return typeof window>`u`?null:window},Xe=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},Ze=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Qe=function(e,t,n,r){return fe(e,t)&&M(e[t])?F(r.base?I(r.base):{},e[t],r.transform):n},$e=function(e,t,n){let r=fe(e,t)?e[t]:void 0;return r&&typeof r==`object`?I(r):n()};function et(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Ye(),t=e=>et(e);if(t.version=`3.4.14`,t.removed=[],!e||!e.document||e.document.nodeType!==Ge.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=ve(d,`cloneNode`),p=ve(d,`remove`),m=ve(d,`nextSibling`),h=ve(d,`childNodes`),g=ve(d,`parentNode`),_=ve(d,`shadowRoot`),y=ve(d,`attributes`),b=o&&o.prototype?ve(o.prototype,`nodeType`):null,x=o&&o.prototype?ve(o.prototype,`nodeName`):null,S=o&&o.prototype?ve(o.prototype,`ownerDocument`):null,E=function(e){return b?b(e):e.nodeType},D=function(e){return x?x(e):e.nodeName};if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let O,ce=``,le,ue=!1,de=0,pe=function(){if(de>0)throw me(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},P=function(e){pe(),de++;try{return O.createHTML(e)}finally{de--}},he=function(e){pe(),de++;try{return O.createScriptURL(e)}finally{de--}},ge=function(){return ue||=(le=Xe(u,i),!0),le},Ke=n,tt=Ke.implementation,nt=Ke.createNodeIterator,rt=Ke.createDocumentFragment,it=Ke.getElementsByTagName,at=r.importNode,L=Ze();t.isSupported=typeof v==`function`&&typeof g==`function`&&tt&&tt.createHTMLDocument!==void 0;let R=je,ot=Me,z=Ne,st=Pe,ct=Fe,lt=Le,ut=Re,dt=Be,ft=Ie,B=null,pt=F({},[...be,...xe,...Se,...we,...Ee]),V=null,mt=F({},[...De,...Oe,...ke,...Ae]),ht=Object.seal(T(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),gt=null,_t=null,vt=Object.seal(T(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),yt=!0,bt=!0,xt=!1,St=!0,Ct=!1,wt=!0,Tt=!1,Et=!1,Dt=null,Ot=null,kt=!1,At=!1,jt=!1,Mt=!1,Nt=!0,Pt=!1,Ft=`user-content-`,It=!0,Lt=!1,Rt={},zt=null,Bt=F({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Vt=null,Ht=F({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Ut=null,Wt=F({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),Gt=`http://www.w3.org/1998/Math/MathML`,Kt=`http://www.w3.org/2000/svg`,qt=`http://www.w3.org/1999/xhtml`,Jt=qt,Yt=!1,Xt=null,Zt=F({},[Gt,Kt,qt],re),Qt=C([`mi`,`mo`,`mn`,`ms`,`mtext`]),$t=F({},Qt),en=C([`annotation-xml`]),tn=F({},en),nn=F({},[`title`,`style`,`font`,`a`,`script`]),rn=null,an=[`application/xhtml+xml`,`text/html`],H=null,on=null,sn=n.createElement(`form`),cn=function(e){return e instanceof RegExp||e instanceof Function},ln=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(on&&on===e)return;(!e||typeof e!=`object`)&&(e={}),e=I(e),rn=an.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,H=rn===`application/xhtml+xml`?re:ne,B=Qe(e,`ALLOWED_TAGS`,pt,{transform:H}),V=Qe(e,`ALLOWED_ATTR`,mt,{transform:H}),Xt=Qe(e,`ALLOWED_NAMESPACES`,Zt,{transform:re}),Ut=Qe(e,`ADD_URI_SAFE_ATTR`,Wt,{transform:H,base:Wt}),Vt=Qe(e,`ADD_DATA_URI_TAGS`,Ht,{transform:H,base:Ht}),zt=Qe(e,`FORBID_CONTENTS`,Bt,{transform:H}),gt=Qe(e,`FORBID_TAGS`,I({}),{transform:H}),_t=Qe(e,`FORBID_ATTR`,I({}),{transform:H}),Rt=fe(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?I(e.USE_PROFILES):e.USE_PROFILES:!1,yt=e.ALLOW_ARIA_ATTR!==!1,bt=e.ALLOW_DATA_ATTR!==!1,xt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,St=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ct=e.SAFE_FOR_TEMPLATES||!1,wt=e.SAFE_FOR_XML!==!1,Tt=e.WHOLE_DOCUMENT||!1,At=e.RETURN_DOM||!1,jt=e.RETURN_DOM_FRAGMENT||!1,Mt=e.RETURN_TRUSTED_TYPE||!1,kt=e.FORCE_BODY||!1,Nt=e.SANITIZE_DOM!==!1,Pt=e.SANITIZE_NAMED_PROPS||!1,It=e.KEEP_CONTENT!==!1,Lt=e.IN_PLACE||!1,ft=ye(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:Ie,Jt=typeof e.NAMESPACE==`string`?e.NAMESPACE:qt,$t=$e(e,`MATHML_TEXT_INTEGRATION_POINTS`,()=>F({},Qt)),tn=$e(e,`HTML_INTEGRATION_POINTS`,()=>F({},en));let t=$e(e,`CUSTOM_ELEMENT_HANDLING`,()=>T(null));if(ht=T(null),fe(t,`tagNameCheck`)&&cn(t.tagNameCheck)&&(ht.tagNameCheck=t.tagNameCheck),fe(t,`attributeNameCheck`)&&cn(t.attributeNameCheck)&&(ht.attributeNameCheck=t.attributeNameCheck),fe(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(ht.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),w(ht),Ct&&(bt=!1),jt&&(At=!0),Rt&&(B=F({},Ee),V=T(null),Rt.html===!0&&(F(B,be),F(V,De)),Rt.svg===!0&&(F(B,xe),F(V,Oe),F(V,Ae)),Rt.svgFilters===!0&&(F(B,Se),F(V,Oe),F(V,Ae)),Rt.mathMl===!0&&(F(B,we),F(V,ke),F(V,Ae))),vt.tagCheck=null,vt.attributeCheck=null,fe(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?vt.tagCheck=e.ADD_TAGS:M(e.ADD_TAGS)&&(B===pt&&(B=I(B)),F(B,e.ADD_TAGS,H))),fe(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?vt.attributeCheck=e.ADD_ATTR:M(e.ADD_ATTR)&&(V===mt&&(V=I(V)),F(V,e.ADD_ATTR,H))),fe(e,`ADD_FORBID_CONTENTS`)&&M(e.ADD_FORBID_CONTENTS)&&(zt===Bt&&(zt=I(zt)),F(zt,e.ADD_FORBID_CONTENTS,H)),It&&(B[`#text`]=!0),Tt&&F(B,[`html`,`head`,`body`]),B.table&&(F(B,[`tbody`]),delete gt.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw me(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw me(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=O;O=e.TRUSTED_TYPES_POLICY;try{ce=P(``)}catch(e){throw O=t,e}}else e.TRUSTED_TYPES_POLICY===null?(O=void 0,ce=``):(O===void 0&&(O=ge()),O&&typeof ce==`string`&&(ce=P(``)));C&&C(e),on=e},un=F({},[...xe,...Se,...Ce]),dn=F({},[...we,...Te]),fn=function(e,t,n){return t.namespaceURI===qt?e===`svg`:t.namespaceURI===Gt?e===`svg`&&(n===`annotation-xml`||$t[n]):!!un[e]},pn=function(e,t,n){return t.namespaceURI===qt?e===`math`:t.namespaceURI===Kt?e===`math`&&tn[n]:!!dn[e]},mn=function(e,t,n){return t.namespaceURI===Kt&&!tn[n]||t.namespaceURI===Gt&&!$t[n]?!1:!dn[e]&&(nn[e]||!un[e])},hn=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:Jt,tagName:`template`});let n=ne(e.tagName),r=ne(t.tagName);return Xt[e.namespaceURI]?e.namespaceURI===Kt?fn(n,t,r):e.namespaceURI===Gt?pn(n,t,r):e.namespaceURI===qt?mn(n,t,r):!!(rn===`application/xhtml+xml`&&Xt[e.namespaceURI]):!1},gn=function(e){j(t.removed,{element:e});try{g(e).removeChild(e)}catch{if(p(e),!g(e))throw me(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},_n=function(e,t,n){try{e.removeAttributeNode(t)}catch{try{e.removeAttribute(n)}catch{}}},vn=function(e){xn(e);let t=h(e);if(t){let e=[];k(t,t=>{j(e,t)}),k(e,e=>{try{p(e)}catch{}})}let n=y(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;typeof i==`string`&&_n(e,r,i)}},yn=function(e,n,r){if(!r)try{r=n.getAttributeNode(e)}catch{r=null}j(t.removed,{attribute:r||null,from:n});try{r?n.removeAttributeNode(r):n.removeAttribute(e)}catch{try{n.removeAttribute(e)}catch{}}if(e===`is`){if(At||jt)try{gn(n)}catch{}else try{n.setAttribute(e,``)}catch{}}},bn=function(e){let t=y(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;typeof i!=`string`||V[H(i)]||_n(e,r,i)}},xn=function(e){let t=[e];for(;t.length>0;){let e=t.pop();E(e)===Ge.element&&bn(e);let n=h(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},Sn=function(e,t){return wt?e===`patchsrc`||e===`for`&&t!==`label`&&t!==`output`:!1},Cn=function(e){if(!wt)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=E(e);if(n===Ge.processingInstruction||n===Ge.comment&&N(He,e.data)){try{p(e)}catch{}continue}if(n===Ge.element){let t=e,n=H(D(e));try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&Sn(`for`,n)&&t.removeAttribute(`for`)}catch{}}let r=h(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},wn=function(e){let t=null,r=null;if(kt)e=`<remove></remove>`+e;else{let t=ie(e,/^[\r\n\t ]+/);r=t&&t[0]}rn===`application/xhtml+xml`&&Jt===qt&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=O?P(e):e;if(Jt===qt)try{t=new l().parseFromString(i,rn)}catch{}if(!t||!t.documentElement){t=tt.createDocument(Jt,`template`,null);try{t.documentElement.innerHTML=Yt?ce:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Jt===qt?it.call(t,Tt?`html`:`body`)[0]:Tt?t.documentElement:a},Tn=function(e){let t=S?S(e):e.ownerDocument;return nt.call(t||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},En=function(e){return e=ae(e,R,` `),e=ae(e,ot,` `),e=ae(e,z,` `),e},Dn=function(e){e.normalize();let t=S?S(e):e.ownerDocument,n=nt.call(t||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),r=n.nextNode();for(;r;)r.data=En(r.data),r=n.nextNode();let i=e.querySelectorAll?.call(e,`template`);i&&k(i,e=>{kn(e.content)&&Dn(e.content)})},On=function(e){let t=x?x(e):null;return typeof t!=`string`||H(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==y(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==b(e)||e.childNodes!==h(e)},kn=function(e){if(!b||typeof e!=`object`||!e)return!1;try{return b(e)===Ge.documentFragment}catch{return!1}},An=function(e){if(!b||typeof e!=`object`||!e)return!1;try{return typeof b(e)==`number`}catch{return!1}};function U(e,n,r){e.length!==0&&k(e,e=>{e.call(t,n,r,on)})}let jn=function(e,t){return!!(wt&&e.hasChildNodes()&&!An(e.firstElementChild)&&N(Ve,e.textContent)&&N(Ve,e.innerHTML)||wt&&e.namespaceURI===qt&&qe[t]&&(An(e.firstElementChild)||typeof e.textContent==`string`&&N(Je[t],e.textContent))||e.nodeType===Ge.processingInstruction||wt&&e.nodeType===Ge.comment&&N(He,e.data))},Mn=function(e,t){return e instanceof RegExp?N(e,t):e instanceof Function&&!!e(t,...[...arguments].slice(2))},W=function(e,t,n){if(!gt[t]&&Rn(t)&&Mn(ht.tagNameCheck,t))return!1;if(It&&!zt[t]){let t=g(e),r=h(e);if(r&&t){let i=r.length;for(let a=i-1;a>=0;--a){let i=e===n?f(r[a],!0):r[a];t.insertBefore(i,m(e))}}}return gn(e),!0},Nn=function(e,t,n,r){return e.length===0?t:t===n||t===r?I(t):t},Pn=function(e,t){return e===t||g(e)!==null?!1:(Lt&&xn(e),!0)},Fn=function(e,n){if(U(L.beforeSanitizeElements,e,null),Pn(e,n))return!0;if(On(e))return gn(e),!0;let r=H(D(e));if(B=Nn(L.uponSanitizeElement,B,pt,Dt),U(L.uponSanitizeElement,e,{tagName:r,allowedTags:B}),Pn(e,n))return!0;if(jn(e,r))return gn(e),!0;if(gt[r]||!(vt.tagCheck instanceof Function&&vt.tagCheck(r))&&!B[r]){let t=W(e,r,n);return t===!1&&U(L.afterSanitizeElements,e,null),t}if(E(e)===Ge.element&&!hn(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&N(Ue,e.innerHTML))return gn(e),!0;if(Ct&&e.nodeType===Ge.text){let n=En(e.textContent);e.textContent!==n&&(j(t.removed,{element:e.cloneNode()}),e.textContent=n)}return U(L.afterSanitizeElements,e,null),!1},In=function(e,t,r){if(_t[t]||Sn(t,e)||Nt&&(t===`id`||t===`name`)&&(r in n||r in sn))return!1;let i=V[t]||vt.attributeCheck instanceof Function&&vt.attributeCheck(t,e);return bt&&N(st,t)||yt&&N(ct,t)?!0:i?Ut[t]||N(ft,ae(r,ut,``))||(t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&oe(r,`data:`)===0&&Vt[e]||xt&&!N(lt,ae(r,ut,``))?!0:!r:Rn(e)&&Mn(ht.tagNameCheck,e)&&Mn(ht.attributeNameCheck,t,e)||t===`is`&&ht.allowCustomizedBuiltInElements&&Mn(ht.tagNameCheck,r)},Ln=F({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),Rn=function(e){return!Ln[ne(e)]&&N(dt,e)},zn=function(e,t,n,r){if(O&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return P(r);case`TrustedScriptURL`:return he(r)}return r},Bn=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),On(e)?gn(e):ee(t.removed)}catch{yn(n,e)}},Vn=function(e){U(L.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||On(e))return;V=Nn(L.uponSanitizeAttribute,V,mt,Ot);let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:V,forceKeepAttr:void 0},r=t.length,i=H(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=H(o),u=c,d=o===`value`?u:se(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,U(L.uponSanitizeAttribute,e,n),d=n.attrValue,Pt&&(l===`id`||l===`name`)&&oe(d,Ft)!==0&&(yn(o,e,a),d=Ft+d),wt&&N(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){yn(o,e,a);continue}if(l===`attributename`&&ie(d,`href`)){yn(o,e,a);continue}if(!n.forceKeepAttr){if(!n.keepAttr){yn(o,e,a);continue}if(!St&&N(We,d)){yn(o,e,a);continue}if(Ct&&(d=En(d)),!In(i,l,d)){yn(o,e,a);continue}d=zn(i,l,s,d),d!==u&&Bn(e,o,s,d)}}U(L.afterSanitizeAttributes,e,null)},Hn=function(e){let t=null,n=Tn(e);for(U(L.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(U(L.uponSanitizeShadowNode,t,null),Fn(t,e),Vn(t),kn(t.content)&&Hn(t.content),E(t)===Ge.element){let e=_(t);kn(e)&&(Un(e),Hn(e))}U(L.afterSanitizeShadowDOM,e,null)},Un=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){Hn(e.shadow);continue}let n=e.node,r=E(n)===Ge.element,i=h(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=x?x(n):null;if(typeof e==`string`&&H(e)===`template`){let e=n.content;kn(e)&&t.push({node:e,shadow:null})}}if(r){let e=_(n);kn(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(Yt=!e,Yt&&(e=`<!-->`),typeof e!=`string`&&!An(e)&&(e=_e(e),typeof e!=`string`))throw me(`dirty is not a string, aborting`);if(!t.isSupported)return e;Et?(B=Dt,V=Ot):ln(n),(L.uponSanitizeElement.length>0||L.uponSanitizeAttribute.length>0)&&(B=I(B)),L.uponSanitizeAttribute.length>0&&(V=I(V)),t.removed=[];let c=Lt&&typeof e!=`string`&&An(e);if(c){Cn(e);let t=D(e);if(typeof t==`string`){let n=H(t);if(!B[n]||gt[n])throw vn(e),me(`root node is forbidden and cannot be sanitized in-place`)}if(On(e))throw vn(e),me(`root node is clobbered and cannot be sanitized in-place`);try{Un(e)}catch(t){throw vn(e),t}}else if(An(e))i=wn(`<!---->`),a=i.ownerDocument.importNode(e,!0),a.nodeType===Ge.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),Un(a);else{if(!At&&!Ct&&!Tt&&e.indexOf(`<`)===-1)return O&&Mt?P(e):e;if(i=wn(e),!i)return At?null:Mt?ce:``}i&&kt&&gn(i.firstChild);let l=c?e:i;try{let e=Tn(l);for(;o=e.nextNode();)Fn(o,l),Vn(o),kn(o.content)&&Hn(o.content)}catch(n){throw c&&(vn(e),k(t.removed,e=>{e.element&&xn(e.element)})),n}if(c)return k(t.removed,e=>{e.element&&xn(e.element)}),Ct&&Dn(e),e;if(At){if(Ct&&Dn(i),jt)for(s=rt.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(V.shadowroot||V.shadowrootmode)&&(s=at.call(r,s,!0)),s}let u=Tt?i.outerHTML:i.innerHTML;return Tt&&B[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&N(ze,i.ownerDocument.doctype.name)&&(u=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
3
+ `+u),Ct&&(u=En(u)),O&&Mt?P(u):u},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ln(e),Et=!0,Dt=B,Ot=V},t.clearConfig=function(){on=null,Et=!1,Dt=null,Ot=null,O=le,ce=``},t.isValidAttribute=function(e,t,n){on||ln({});let r=H(e),i=H(t);return In(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&fe(L,e)&&j(L[e],t)},t.removeHook=function(e,t){if(fe(L,e)){if(t!==void 0){let n=A(L[e],t);return n===-1?void 0:te(L[e],n,1)[0]}return ee(L[e])}},t.removeHooks=function(e){fe(L,e)&&(L[e]=[])},t.removeAllHooks=function(){L=Ze()},t}var tt=et();function nt(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var rt=nt();function it(e){rt=e}var at={exec:()=>null};function L(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function R(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(z.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var ot=((e=``)=>{try{return!!RegExp(`(?<=1)(?<!1)`+e)}catch{return!1}})(),z={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:L(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:L(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:L(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:L(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:L(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:L(e=>RegExp(`^ {0,${e}}>`))},st=/^(?:[ \t]*(?:\n|$))+/,ct=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,lt=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,ut=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,dt=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ft=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,B=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,pt=R(B).replace(/bull/g,ft).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),V=R(B).replace(/bull/g,ft).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),mt=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,ht=/^[^\n]+/,gt=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,_t=R(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,gt).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),vt=R(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,ft).getRegex(),yt=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,bt=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,xt=R(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,bt).replace(`tag`,yt).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),St=e=>R(mt).replace(`hr`,ut).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,e).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,yt).getRegex(),Ct=St(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),wt=St(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Tt={blockquote:R(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,wt).getRegex(),code:ct,def:_t,fences:lt,heading:dt,hr:ut,html:xt,lheading:pt,list:vt,newline:st,paragraph:Ct,table:at,text:ht},Et=R(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,ut).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,yt).getRegex(),Dt={...Tt,lheading:V,table:Et,paragraph:R(mt).replace(`hr`,ut).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Et).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,yt).getRegex()},Ot={...Tt,html:R(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,bt).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:at,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:R(mt).replace(`hr`,ut).replace(`heading`,` *#{1,6} *[^
4
+ ]`).replace(`lheading`,pt).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},kt=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,At=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,jt=/^( {2,}|\\)\n(?!\s*$)/,Mt=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Nt=/[\p{P}\p{S}]/u,Pt=/[\s\p{P}\p{S}]/u,Ft=/[^\s\p{P}\p{S}]/u,It=R(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,Pt).getRegex(),Lt=/[\p{Pi}\p{Ps}"']/u,Rt=/(?!~)[\p{P}\p{S}]/u,zt=/(?!~)[\s\p{P}\p{S}]/u,Bt=/(?:[^\s\p{P}\p{S}]|~)/u,Vt=R(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,ot?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Ht=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Ut=R(Ht,`u`).replace(/punct/g,Nt).getRegex(),Wt=R(Ht,`u`).replace(/punct/g,Rt).getRegex(),Gt=R(/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,`u`).replace(/openQuote/g,Lt).replace(/punct/g,Nt).getRegex(),Kt=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,qt=R(Kt,`gu`).replace(/notPunctSpace/g,Ft).replace(/punctSpace/g,Pt).replace(/punct/g,Nt).getRegex(),Jt=R(Kt,`gu`).replace(/notPunctSpace/g,Bt).replace(/punctSpace/g,zt).replace(/punct/g,Rt).getRegex(),Yt=R(`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Ft).replace(/punctSpace/g,Pt).replace(/punct/g,Nt).getRegex(),Xt=R(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Ft).replace(/punctSpace/g,Pt).replace(/punct/g,Nt).getRegex(),Zt=R(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Ft).replace(/punctSpace/g,Pt).replace(/punct/g,Nt).getRegex(),Qt=R(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,Nt).getRegex(),$t=R(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Ft).replace(/punctSpace/g,Pt).replace(/punct/g,Nt).getRegex(),en=R(/\\(punct)/,`gu`).replace(/punct/g,Nt).getRegex(),tn=R(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),nn=R(bt).replace(`(?:-->|$)`,`-->`).getRegex(),rn=R(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,nn).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),an=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,H=R(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,an).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),on=R(/^!?\[(label)\]\[(ref)\]/).replace(`label`,an).replace(`ref`,gt).getRegex(),sn=R(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,gt).getRegex(),cn=R(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,on).replace(`nolink`,sn).getRegex(),ln=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,un={_backpedal:at,anyPunctuation:en,autolink:tn,blockSkip:Vt,br:jt,code:At,del:at,delLDelim:at,delRDelim:at,emStrongLDelim:Ut,emStrongRDelimAst:qt,emStrongRDelimUnd:Xt,escape:kt,link:H,nolink:sn,punctuation:It,reflink:on,reflinkSearch:cn,tag:rn,text:Mt,url:at},dn={...un,emStrongLDelim:Gt,emStrongRDelimAst:Yt,emStrongRDelimUnd:Zt,link:R(/^!?\[(label)\]\((.*?)\)/).replace(`label`,an).getRegex(),reflink:R(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,an).getRegex()},fn={...un,emStrongRDelimAst:Jt,emStrongLDelim:Wt,delLDelim:Qt,delRDelim:$t,url:R(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,ln).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:R(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,ln).getRegex()},pn={...fn,br:R(jt).replace(`{2,}`,`*`).getRegex(),text:R(fn.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},mn={normal:Tt,gfm:Dt,pedantic:Ot},hn={normal:un,gfm:fn,breaks:pn,pedantic:dn},gn={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},_n=e=>gn[e];function vn(e,t){if(t){if(z.escapeTest.test(e))return e.replace(z.escapeReplace,_n)}else if(z.escapeTestNoEncode.test(e))return e.replace(z.escapeReplaceNoEncode,_n);return e}function yn(e){try{e=encodeURI(e).replace(z.percentDecode,`%`)}catch{return null}return e}function bn(e,t){let n=e.replace(z.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(z.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t){if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``)}for(;r<n.length;r++)n[r]=n[r].trim().replace(z.slashPipe,`|`);return n}function xn(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function Sn(e){let t=e.split(`
5
+ `),n=t.length-1;for(;n>=0&&z.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
6
+ `)}function Cn(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function wn(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function Tn(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function En(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
7
+ `).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(`
8
+ `)}var Dn=class{options;rules;lexer;constructor(e){this.options=e||rt}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:Sn(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=En(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=xn(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:xn(t[0],`
9
+ `),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:xn(t[0],`
10
+ `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=xn(t[0],`
11
+ `).split(`
12
+ `),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o<e.length;o++)if(this.rules.other.blockquoteStart.test(e[o]))a.push(e[o]),t=!0;else if(!t)a.push(e[o]);else break;e=e.slice(o);let s=a.join(`
13
+ `),c=s.replace(this.rules.other.blockquoteSetextReplace,`
14
+ $1`).replace(this.rules.other.blockquoteSetextReplace2,``);n=n?`${n}
15
+ ${s}`:s,r=r?`${r}
16
+ ${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,i,!0),this.lexer.state.top=l,e.length===0)break;let u=i.at(-1);if(u?.type===`code`)break;if(u?.type===`blockquote`){let t=u,a=e.join(`
17
+ `),o=t.raw+`
18
+ `+a.replace(this.rules.other.blockquoteSetextReplace2,``),s=this.blockquote(o);i[i.length-1]=s,n=`${n}
19
+ ${a}`,r=r.substring(0,r.length-t.text.length)+s.text;break}if(u?.type===`list`){let t=u,a=t.raw+`
20
+ `+e.join(`
21
+ `),o=this.list(a);i[i.length-1]=o,n=n.substring(0,n.length-u.raw.length)+o.raw,r=r.substring(0,r.length-t.raw.length)+o.raw,e=a.substring(i.at(-1).raw.length).split(`
22
+ `);continue}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=wn(t[2].split(`
23
+ `,1)[0],t[1].length),l=e.split(`
24
+ `,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+`
25
+ `,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(`
26
+ `,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=`
27
+ `+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=`
28
+ `+l}u=!l.trim(),r+=p+`
29
+ `,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items)if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}for(let e of i.items){let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=Sn(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:xn(t[0],`
30
+ `),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=bn(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(`
31
+ `):[],a={type:`table`,raw:xn(t[0],`
32
+ `),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push(bn(e,a.header.length).map((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:xn(t[0],`
33
+ `),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===`
34
+ `?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=xn(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=Cn(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),Tn(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return Tn(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...r[0]].length-1,a,o,s=i,c=0,l=r[0][0],u=n===l,d=l===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,t=t.slice(-1*e.length+i);(r=d.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){s+=o;continue}if(r[5]||r[6]){if(i%3&&!((i+o)%3)){c+=o;continue}if(u)break}if(s-=o,s>0)continue;o=Math.min(o,o+s+c);let t=[...r[0]][0].length,n=e.slice(0,i+r.index+t+o);if(Math.min(i,o)%2){let e=n.slice(1,-1);return{type:`em`,raw:n,text:e,tokens:this.lexer.inlineTokens(e)}}let l=n.slice(2,-2);return{type:`strong`,raw:n,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},On=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||rt,this.options.tokenizer=this.options.tokenizer||new Dn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:z,block:mn.normal,inline:hn.normal};this.options.pedantic?(t.block=mn.pedantic,t.inline=hn.pedantic):this.options.gfm&&(t.block=mn.gfm,t.inline=this.options.breaks?hn.breaks:hn.gfm),this.tokenizer.rules=t}static get rules(){return{block:mn,inline:hn}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(z.carriageReturn,`
35
+ `),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(z.tabCharGlobal,` `).replace(z.spaceLine,``));let r=1/0;for(;e;){if(e.length<r)r=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(n=>(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=`
36
+ `:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
37
+ `)?``:`
38
+ `)+i.raw,n.text+=`
39
+ `+i.text,this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
40
+ `)?``:`
41
+ `)+i.raw,n.text+=`
42
+ `+i.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},t.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),t.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(a=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let r=t.at(-1);n&&r?.type===`paragraph`?(r.raw+=(r.raw.endsWith(`
43
+ `)?``:`
44
+ `)+i.raw,r.text+=`
45
+ `+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(`
46
+ `)?``:`
47
+ `)+i.raw,n.text+=`
48
+ `+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e;if(this.tokens.links){let e=Object.keys(this.tokens.links);e.length>0&&(n=n.replace(this.tokenizer.rules.inline.reflinkSearch,t=>e.includes(t.slice(t.lastIndexOf(`[`)+1,-1))?`[`+`a`.repeat(t.length-2)+`]`:t))}n=n.replace(this.tokenizer.rules.inline.anyPunctuation,e=>`+`.repeat(e.length)),n=n.replace(this.tokenizer.rules.inline.blockSkip,(e,t,n)=>{let r=n?n.length:0;return e.slice(0,r)+`[`+`a`.repeat(e.length-r-2)+`]`}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let r=!1,i=``,a=1/0;for(;e;){if(e.length<a)a=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}r||(i=``),r=!1;let o;if(this.options.extensions?.inline?.some(n=>(o=n.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let n=t.at(-1);o.type===`text`&&n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(o=this.tokenizer.inlineText(s)){e=e.substring(o.raw.length),o.raw.slice(-1)!==`_`&&(i=o.raw.slice(-1)),r=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},kn=class{options;parser;constructor(e){this.options=e||rt}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(z.notSpaceStart)?.[0],i=e.replace(z.endingNewline,``)+`
49
+ `;return r?`<pre><code class="language-`+vn(r)+`">`+(n?i:vn(i,!0))+`</code></pre>
50
+ `:`<pre><code>`+(n?i:vn(i,!0))+`</code></pre>
51
+ `}blockquote({tokens:e}){return`<blockquote>
52
+ ${this.parser.parse(e)}</blockquote>
53
+ `}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
54
+ `}hr(e){return`<hr>
55
+ `}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t<e.items.length;t++){let n=e.items[t];r+=this.listitem(n)}let i=t?`ol`:`ul`,a=t&&n!==1?` start="`+n+`"`:``;return`<`+i+a+`>
56
+ `+r+`</`+i+`>
57
+ `}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
58
+ `}checkbox({checked:e}){return`<input `+(e?`checked="" `:``)+`disabled="" type="checkbox"> `}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
59
+ `}table(e){let t=``,n=``;for(let t=0;t<e.header.length;t++)n+=this.tablecell(e.header[t]);t+=this.tablerow({text:n});let r=``;for(let t=0;t<e.rows.length;t++){let i=e.rows[t];n=``;for(let e=0;e<i.length;e++)n+=this.tablecell(i[e]);r+=this.tablerow({text:n})}return r&&=`<tbody>${r}</tbody>`,`<table>
60
+ <thead>
61
+ `+t+`</thead>
62
+ `+r+`</table>
63
+ `}tablerow({text:e}){return`<tr>
64
+ ${e}</tr>
65
+ `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
66
+ `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${vn(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=yn(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+vn(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=yn(e);if(i===null)return vn(n);e=i;let a=`<img src="${e}" alt="${vn(n)}"`;return t&&(a+=` title="${vn(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:vn(e.text)}},An=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},U=class e{options;renderer;textRenderer;constructor(e){this.options=e||rt,this.options.renderer=this.options.renderer||new kn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new An}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`checkbox`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`checkbox`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},jn=class{options;block;constructor(e){this.options=e||rt}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?On.lex:On.lexInline}provideParser(e=this.block){return e?U.parse:U.parseInline}},Mn=new class{defaults=nt();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=U;Renderer=kn;TextRenderer=An;Lexer=On;Tokenizer=Dn;Hooks=jn;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new kn(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new Dn(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new jn;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=jn.passThroughHooks.has(n)?e=>{if(this.defaults.async&&jn.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return On.lex(e,t??this.defaults)}parser(e,t){return U.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?On.lex:On.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?U.parse:U.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?On.lex:On.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?U.parse:U.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
67
+ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+vn(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function W(e,t){return Mn.parse(e,t)}W.options=W.setOptions=function(e){return Mn.setOptions(e),W.defaults=Mn.defaults,it(W.defaults),W},W.getDefaults=nt,W.defaults=rt;function Nn(...e){return Mn.use(...e),W.defaults=Mn.defaults,it(W.defaults),W}W.use=Nn,W.walkTokens=function(e,t){return Mn.walkTokens(e,t)},W.parseInline=Mn.parseInline,W.Parser=U,W.parser=U.parse,W.Renderer=kn,W.TextRenderer=An,W.Lexer=On,W.lexer=On.lex,W.Tokenizer=Dn,W.Hooks=jn,W.parse=W,W.options,W.setOptions,W.walkTokens,W.parseInline,U.parse,On.lex;var Pn=/[\u201c\u201d"\u2018\u2019'()\uff08\uff09\u300c\u300d\u300e\u300f\u3010\u3011\u300a\u300b\u3008\u3009[\]]/;function Fn(e){let t=[],n=e=>`\uE010${t.push(e)-1}\uE011`,r=e.replace(/```[\s\S]*?```/g,e=>n(e)).replace(/`[^`\n]+`/g,e=>n(e));return r=r.replace(/\*\*(\S|\S[\s\S]*?\S)\*\*/g,(e,t)=>{let n=``,r=``,i=t;for(;i.length>1&&Pn.test(i[0]);)n+=i[0],i=i.slice(1);for(;i.length>1&&Pn.test(i.at(-1));)r=i.at(-1)+r,i=i.slice(0,-1);return n||r?`${n}**${i}**${r}`:e}),r.replace(/\uE010(\d+)\uE011/g,(e,n)=>t[Number(n)]??``)}var In=e=>e===`xhigh`?`Extra high`:e[0].toUpperCase()+e.slice(1),Ln=e=>{if(e<1e3)return String(e);let t=e/1e3;return t>=9.95?`${Math.round(t)}K`:`${t.toFixed(1)}K`};function Rn(e){let t=Math.max(1,Math.round(e/1e3));return t<60?`${t}s`:`${Math.floor(t/60)}m${t%60}s`}var zn=e=>`${Rn(e.durationMs)} · ${Ln(e.tokens)} tok`,Bn=/(?:^|\n)[ \t]*-{3,}[ \t]*\r?\n((?:[ \t]*\[[^\]\r\n]+\][ \t]*(?:[||][ \t]*)?)+)\s*$/,Vn=/\[([^\]\r\n]+)\]/g,Hn=5,Un=/<silent>([\s\S]*?)<\/silent>/gi;function Wn(e){let t=[...e.matchAll(Un)].map(e=>(e[1]??``).trim()).filter(Boolean);return t.length?t.join(` · `):void 0}function Gn(e,t){let n=Fn(e.replace(Un,``).trim()),r=Wn(e),i=Bn.exec(n);if(!i?.[1])return{text:n,suggestions:[],meta:t,silence:r};let a=[...i[1].matchAll(Vn)].map(e=>(e[1]??``).trim()).filter(Boolean).slice(0,Hn);return a.length?{text:n.slice(0,i.index).trimEnd(),suggestions:a,meta:t,silence:r}:{text:n,suggestions:[],meta:t,silence:r}}var G=e=>{let t=document.querySelector(e);if(!t)throw Error(`missing element: ${e}`);return t};function Kn(e){let t=Math.round((Date.now()-e)/6e4);return t<1?`now`:t<60?`${t}m`:t<1440?`${Math.round(t/60)}h`:`${Math.round(t/1440)}d`}function K(e,t,...n){let r=document.createElement(e);return t&&(r.className=t),r.append(...n),r}var qn=e=>e.split(`/`).filter(Boolean).pop()??e;function Jn(e){let t=Math.max(0,Math.round(e/1e3));return t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}function Yn(e,t,n){return{visible:!1,show(n){this.visible=!0,e.classList.remove(`hidden`),e.classList.add(`flex`),t(n)},hide(){n?.(),this.visible=!1,e.classList.add(`hidden`),e.classList.remove(`flex`)}}}function Xn(e){let t=K(`span`,`help`);t.innerHTML=tt.sanitize(W.parseInline(e,{async:!1}));for(let e of t.querySelectorAll(`a`))e.target=`_blank`,e.rel=`noreferrer`;return t}async function Zn(e){if(navigator.clipboard)return navigator.clipboard.writeText(e);let t=document.createElement(`textarea`);t.value=e,t.className=`fixed opacity-0`,document.body.append(t),t.select();let n=document.execCommand(`copy`);if(t.remove(),!n)throw Error(`clipboard unavailable`)}function Qn(e,t){let n=K(`button`,e,`Copy`);n.title=`Copy to clipboard`;let r;return n.onclick=async e=>{e.stopPropagation(),n.textContent=await Zn(t()).then(()=>`Copied`,()=>`Failed`),clearTimeout(r),r=setTimeout(()=>n.textContent=`Copy`,1200)},n}function $n(e,t){let n=document.createElement(`details`);n.className=e;let r=K(`summary`,`flex cursor-pointer select-none items-center gap-1.5`);return r.append(K(`span`,`chev`,`▶`),...t),n.append(r),{el:n,summary:r}}var er=G(`#image-dialog`),tr=G(`#image-full`),nr=G(`#image-prev`),rr=G(`#image-next`),ir=[],ar=0;function or(e){ir.length<2||(ar=(ar+e+ir.length)%ir.length,tr.src=ir[ar])}function sr(e){let t=new URL(e,location.href).href;ir=[...G(`#turns`).querySelectorAll(`img.thumb`)].map(e=>e.src),ar=Math.max(0,ir.indexOf(t)),tr.src=t;let n=ir.length<2?`none`:`flex`;nr.style.display=n,rr.style.display=n,er.showModal()}er.onclick=()=>er.close();var cr=(e,t)=>{e.onclick=e=>{e.stopPropagation(),or(t)}};cr(nr,-1),cr(rr,1),er.onkeydown=e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.preventDefault(),or(e.key===`ArrowLeft`?-1:1))};function lr(e){let t=e.querySelector(`:scope > .thumbs`);if(t)return t;let n=K(`div`,`thumbs`);return e.append(n),n}function ur(e){let t=document.createElement(`img`);return t.src=e,t.loading=`lazy`,t.className=`thumb`,t.onclick=()=>sr(e),t}var dr=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`avif`,`bmp`]),fr=new Set([`txt`,`md`,`log`,`json`,`csv`,`yaml`,`yml`]),pr=524288,mr=G(`#file-dialog`),hr=G(`#file-name`),gr=G(`#file-text`),_r=G(`#file-download`);G(`#file-close`).onclick=()=>mr.close();var vr=e=>e.split(`.`).pop()?.toLowerCase()??``,yr=(e,t,n=!1)=>`/api/sessions/${encodeURIComponent(e)}/files?path=${encodeURIComponent(t)}${n?`&download=1`:``}`;function br(e,t){return e.replace(/\]\(\s*<?file:\/\/(\/[^)>\s]*)>?\s*\)/g,(e,n)=>{let r=n;try{r=decodeURIComponent(n)}catch{}return`](${yr(t,r)})`})}var xr=e=>/^\/api\/sessions\/[^/]+\/files\?/.test(e);function Sr(e){return new URLSearchParams(e.slice(e.indexOf(`?`)+1)).get(`path`)??``}async function Cr(e,t){hr.textContent=t,_r.href=`${e}&download=1`,gr.textContent=`loading…`,mr.showModal();let n=await fetch(e),r=n.ok?await n.text():`failed to load: ${n.status}`;gr.textContent=r.length>pr?`${r.slice(0,pr)}\n…`:r}function wr(e,t){let n=ur(e);return n.alt=t,n}function Tr(e,t){let n=vr(t),r=K(`span`,`inline-flex max-w-full items-center gap-2.5 rounded-lg border border-neutral-200 bg-neutral-50 px-2.5 py-1.5 no-underline`),i=K(`span`,`flex h-7 w-7 flex-none items-center justify-center rounded-md bg-indigo-50 text-[10px] font-semibold uppercase text-indigo-600`,n.slice(0,4)||`file`),a=K(`span`,`min-w-0 truncate text-[13px] font-medium text-neutral-800`,t),o=K(`span`,`ml-1 flex flex-none items-center gap-0.5`);if(fr.has(n)||n===`pdf`){let r=K(`button`,`icon-btn h-6 w-6 text-[13px]`,`◉`);r.title=`Preview`,r.onclick=r=>{r.preventDefault(),n===`pdf`?window.open(e,`_blank`,`noopener`):Cr(e,t)},o.append(r)}let s=document.createElement(`a`);return s.className=`icon-btn h-6 w-6 text-[13px] no-underline`,s.href=`${e}&download=1`,s.download=t,s.title=`Download`,s.textContent=`↓`,o.append(s),r.append(i,a,o),r}function Er(e){let t=new Set;for(let n of e)n.parentElement&&t.add(n.parentElement);for(let n of t){let t=[...n.children].filter(t=>e.includes(t));if([...n.childNodes].every(e=>e.nodeType===Node.TEXT_NODE?!e.textContent?.trim():t.includes(e))){n.classList.add(`thumbs`);continue}let r=K(`div`,`thumbs`);r.append(...t),n.after(r)}}function Dr(e){let t=[];for(let n of e.querySelectorAll(`img`)){let e=n.getAttribute(`src`)??``;if(!xr(e))continue;let r=wr(e,qn(Sr(e)));n.replaceWith(r),t.push(r)}for(let n of e.querySelectorAll(`a`)){let e=n.getAttribute(`href`)??``;if(!xr(e))continue;let r=qn(Sr(e))||n.textContent?.trim()||`file`,i=dr.has(vr(r))?wr(e,r):Tr(e,r);n.replaceWith(i),t.push(i)}t.length&&Er(t)}var Or=c(o(((e,t)=>{function n(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw Error(`map is read-only`)}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw Error(`set is read-only`)}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let r=e[t],i=typeof r;(i===`object`||i===`function`)&&!Object.isFrozen(r)&&n(r)}),e}var r=class{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function i(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#x27;`)}function a(e,...t){let n=Object.create(null);for(let t in e)n[t]=e[t];return t.forEach(function(e){for(let t in e)n[t]=e[t]}),n}var o=`</span>`,s=e=>!!e.scope,c=(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((e,t)=>`${e}${`_`.repeat(t+1)}`)].join(` `)}return`${t}${e}`},l=class{constructor(e,t){this.buffer=``,this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=i(e)}openNode(e){if(!s(e))return;let t=c(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){s(e)&&(this.buffer+=o)}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}},u=(e={})=>{let t={children:[]};return Object.assign(t,e),t},d=class e{constructor(){this.rootNode=u(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){let t=u({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return typeof t==`string`?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(t){typeof t!=`string`&&t.children&&(t.children.every(e=>typeof e==`string`)?t.children=[t.children.join(``)]:t.children.forEach(t=>{e._collapse(t)}))}},f=class extends d{constructor(e){super(),this.options=e}addText(e){e!==``&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){let n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new l(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function p(e){return e?typeof e==`string`?e:e.source:null}function m(e){return _(`(?=`,e,`)`)}function h(e){return _(`(?:`,e,`)*`)}function g(e){return _(`(?:`,e,`)?`)}function _(...e){return e.map(e=>p(e)).join(``)}function v(e){let t=e[e.length-1];return typeof t==`object`&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function y(...e){return`(`+(v(e).capture?``:`?:`)+e.map(e=>p(e)).join(`|`)+`)`}function b(e){return RegExp(e.toString()+`|`).exec(``).length-1}function x(e,t){let n=e&&e.exec(t);return n&&n.index===0}var S=new RegExp(y(/\[(?:[^\\\]]|\\.)*\]/,/\(\?<(?![=!])[^>]+>/,/\(\?'[^']+'/,/\(\??/,/\\([1-9][0-9]*)/,/\\./));function C(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;let t=n,r=p(e),i=``;for(;r.length>0;){let e=S.exec(r);if(!e){i+=r;break}i+=r.substring(0,e.index),r=r.substring(e.index+e[0].length),e[0][0]===`\\`&&e[1]?i+=`\\`+String(Number(e[1])+t):(i+=e[0],(e[0]===`(`||/^\(\?[<']/.test(e[0]))&&n++)}return i}).map(e=>`(${e})`).join(t)}var w=/\b\B/,T=`[a-zA-Z]\\w*`,E=`[a-zA-Z_]\\w*`,D=`\\b\\d+(\\.\\d+)?`,O=`(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)`,k=`\\b(0b[01]+)`,A=`!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~`,ee=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=_(t,/.*\b/,e.binary,/\b.*/)),a({scope:`meta`,begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{e.index!==0&&t.ignoreMatch()}},e)},j={begin:`\\\\[\\s\\S]`,relevance:0},te={scope:`string`,begin:`'`,end:`'`,illegal:`\\n`,contains:[j]},M={scope:`string`,begin:`"`,end:`"`,illegal:`\\n`,contains:[j]},ne={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/},re=function(e,t,n={}){let r=a({scope:`comment`,begin:e,end:t,contains:[]},n);r.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 i=y(`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 r.contains.push({begin:_(/[ ]+/,`(`,i,/[.]?[:]?([.][ ]|[ ])/,`){3}`)}),r},ie=re(`//`,`$`),ae=re(`/\\*`,`\\*/`),oe=re(`#`,`$`),se=Object.freeze({__proto__:null,APOS_STRING_MODE:te,BACKSLASH_ESCAPE:j,BINARY_NUMBER_MODE:{scope:`number`,begin:k,relevance:0},BINARY_NUMBER_RE:k,COMMENT:re,C_BLOCK_COMMENT_MODE:ae,C_LINE_COMMENT_MODE:ie,C_NUMBER_MODE:{scope:`number`,begin:O,relevance:0},C_NUMBER_RE:O,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:oe,IDENT_RE:T,MATCH_NOTHING_RE:w,METHOD_GUARD:{begin:`\\.\\s*[a-zA-Z_]\\w*`,relevance:0},NUMBER_MODE:{scope:`number`,begin:D,relevance:0},NUMBER_RE:D,PHRASAL_WORDS_MODE:ne,QUOTE_STRING_MODE:M,REGEXP_MODE:{scope:`regexp`,begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[j,{begin:/\[/,end:/\]/,relevance:0,contains:[j]}]},RE_STARTERS_RE:A,SHEBANG:ee,TITLE_MODE:{scope:`title`,begin:T,relevance:0},UNDERSCORE_IDENT_RE:E,UNDERSCORE_TITLE_MODE:{scope:`title`,begin:E,relevance:0}});function ce(e,t){e.input[e.index-1]===`.`&&t.ignoreMatch()}function le(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function ue(e,t){t&&e.beginKeywords&&(e.begin=`\\b(`+e.beginKeywords.split(` `).join(`|`)+`)(?!\\.)(?=\\b|\\s)`,e.__beforeBegin=ce,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function de(e,t){Array.isArray(e.illegal)&&(e.illegal=y(...e.illegal))}function fe(e,t){if(e.match){if(e.begin||e.end)throw Error(`begin & end are not supported with match`);e.begin=e.match,delete e.match}}function pe(e,t){e.relevance===void 0&&(e.relevance=1)}var N=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw Error(`beforeMatch cannot be used with starts`);let n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=_(n.beforeMatch,m(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},me=[`of`,`and`,`for`,`in`,`not`,`or`,`if`,`then`,`parent`,`list`,`value`],P=`keyword`;function he(e,t,n=P){let r=Object.create(null);return typeof e==`string`?i(n,e.split(` `)):Array.isArray(e)?i(n,e):Object.keys(e).forEach(function(n){Object.assign(r,he(e[n],t,n))}),r;function i(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){let n=t.split(`|`);r[n[0]]=[e,F(n[0],n[1])]})}}function F(e,t){return t?Number(t):+!ge(e)}function ge(e){return me.includes(e.toLowerCase())}var I={},_e=e=>{console.error(e)},ve=(e,...t)=>{console.log(`WARN: ${e}`,...t)},ye=(e,t)=>{I[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),I[`${e}/${t}`]=!0)},be=Error();function xe(e,t,{key:n}){let r=0,i=e[n],a={},o={};for(let e=1;e<=t.length;e++)o[e+r]=i[e],a[e+r]=!0,r+=b(t[e-1]);e[n]=o,e[n]._emit=a,e[n]._multi=!0}function Se(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw _e(`skip, excludeBegin, returnBegin not compatible with beginScope: {}`),be;if(typeof e.beginScope!=`object`||e.beginScope===null)throw _e(`beginScope must be object`),be;xe(e,e.begin,{key:`beginScope`}),e.begin=C(e.begin,{joinWith:``})}}function Ce(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw _e(`skip, excludeEnd, returnEnd not compatible with endScope: {}`),be;if(typeof e.endScope!=`object`||e.endScope===null)throw _e(`endScope must be object`),be;xe(e,e.end,{key:`endScope`}),e.end=C(e.end,{joinWith:``})}}function we(e){e.scope&&typeof e.scope==`object`&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Te(e){we(e),typeof e.beginScope==`string`&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope==`string`&&(e.endScope={_wrap:e.endScope}),Se(e),Ce(e)}function Ee(e){function t(t,n){return new RegExp(p(t),`m`+(e.case_insensitive?`i`:``)+(e.unicodeRegex?`u`:``)+(n?`g`:``))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=b(e)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let e=this.regexes.map(e=>e[1]);this.matcherRe=t(C(e,{joinWith:`|`}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;let t=this.matcherRe.exec(e);if(!t)return null;let n=t.findIndex((e,t)=>t>0&&e!==void 0),r=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,r)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];let t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),t.type===`begin`&&this.count++}exec(e){let t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition()&&!(n&&n.index===this.lastIndex)){let t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function i(e){let t=new r;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:`begin`})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:`end`}),e.illegal&&t.addRule(e.illegal,{type:`illegal`}),t}function o(n,r){let a=n;if(n.isCompiled)return a;[le,fe,Te,N].forEach(e=>e(n,r)),e.compilerExtensions.forEach(e=>e(n,r)),n.__beforeBegin=null,[ue,de,pe].forEach(e=>e(n,r)),n.isCompiled=!0;let s=null;return typeof n.keywords==`object`&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),s=n.keywords.$pattern,delete n.keywords.$pattern),s||=/\w+/,n.keywords&&=he(n.keywords,e.case_insensitive),a.keywordPatternRe=t(s,!0),r&&(n.begin||=/\B|\b/,a.beginRe=t(a.begin),!n.end&&!n.endsWithParent&&(n.end=/\B|\b/),n.end&&(a.endRe=t(a.end)),a.terminatorEnd=p(a.end)||``,n.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(n.end?`|`:``)+r.terminatorEnd)),n.illegal&&(a.illegalRe=t(n.illegal)),n.contains||=[],n.contains=[].concat(...n.contains.map(function(e){return Oe(e===`self`?n:e)})),n.contains.forEach(function(e){o(e,a)}),n.starts&&o(n.starts,r),a.matcher=i(a),a}if(e.compilerExtensions||=[],e.contains&&e.contains.includes(`self`))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=a(e.classNameAliases||{}),o(e)}function De(e){return e?e.endsWithParent||De(e.starts):!1}function Oe(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:De(e)?a(e,{starts:e.starts?a(e.starts):null}):Object.isFrozen(e)?a(e):e}var ke=`11.12.0`,Ae=class extends Error{constructor(e,t){super(e),this.name=`HTMLInjectionError`,this.html=t}},je=i,Me=a,Ne=Symbol(`nomatch`),Pe=7,Fe=function(e){let t=Object.create(null),i=Object.create(null),a=[],o=!0,s=`Could not find the language '{}', did you forget to load/include a language module?`,c={disableAutodetect:!0,name:`Plain text`,contains:[]},l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:`hljs-`,cssSelector:`pre code`,languages:null,__emitter:f};function u(e){return l.noHighlightRe.test(e)}function d(e){let t=e.className+` `;t+=e.parentNode?e.parentNode.className:``;let n=l.languageDetectRe.exec(t);if(n){let t=te(n[1]);return t||(ve(s.replace(`{}`,n[1])),ve(`Falling back to no-highlight mode for this block.`,e)),t?n[1]:`no-highlight`}return t.split(/\s+/).find(e=>u(e)||te(e))}function p(e,t,n){let r=``,i=``;typeof t==`object`?(r=e,n=t.ignoreIllegals,i=t.language):(ye(`10.7.0`,`highlight(lang, code, ...args) has been deprecated.`),ye(`10.7.0`,`Please use highlight(code, options) instead.
68
+ https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(n=!0);let a={code:r,language:i};oe(`before:highlight`,a);let o=a.result?a.result:v(a.language,a.code,n);return o.code=a.code,oe(`after:highlight`,o),o}function v(e,n,i,a){let c=Object.create(null);function u(e,t){return e.keywords[t]}function d(){if(!A.keywords){j.addText(M);return}let e=0;A.keywordPatternRe.lastIndex=0;let t=A.keywordPatternRe.exec(M),n=``;for(;t;){n+=M.substring(e,t.index);let r=D.case_insensitive?t[0].toLowerCase():t[0],i=u(A,r);if(i){let[e,a]=i;if(j.addText(n),n=``,c[r]=(c[r]||0)+1,c[r]<=Pe&&(ne+=a),e.startsWith(`_`))n+=t[0];else{let n=D.classNameAliases[e]||e;m(t[0],n)}}else n+=t[0];e=A.keywordPatternRe.lastIndex,t=A.keywordPatternRe.exec(M)}n+=M.substring(e),j.addText(n)}function f(){if(M===``)return;let e=null;if(typeof A.subLanguage==`string`){if(!t[A.subLanguage]){j.addText(M);return}e=v(A.subLanguage,M,!0,ee[A.subLanguage]),ee[A.subLanguage]=e._top}else e=S(M,A.subLanguage.length?A.subLanguage:null);A.relevance>0&&(ne+=e.relevance),j.__addSublanguage(e._emitter,e.language)}function p(){A.subLanguage==null?d():f(),M=``}function m(e,t){e!==``&&(j.startScope(t),j.addText(e),j.endScope())}function h(e,t){let n=1,r=t.length-1;for(;n<=r;){if(!e._emit[n]){n++;continue}let r=D.classNameAliases[e[n]]||e[n],i=t[n];r?m(i,r):(M=i,d(),M=``),n++}}function g(e,t){return e.scope&&typeof e.scope==`string`&&j.openNode(D.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(m(M,D.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),M=``):e.beginScope._multi&&(h(e.beginScope,t),M=``)),A=Object.create(e,{parent:{value:A}}),A}function _(e,t,n){let i=x(e.endRe,n);if(i){if(e[`on:end`]){let n=new r(e);e[`on:end`](t,n),n.isMatchIgnored&&(i=!1)}if(i){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return _(e.parent,t,n)}function y(e){return A.matcher.regexIndex===0?(M+=e[0],1):(ae=!0,0)}function b(e){let t=e[0],n=e.rule,i=new r(n),a=[n.__beforeBegin,n[`on:begin`]];for(let n of a)if(n&&(n(e,i),i.isMatchIgnored))return y(t);return n.skip?M+=t:(n.excludeBegin&&(M+=t),p(),!n.returnBegin&&!n.excludeBegin&&(M=t)),g(n,e),n.returnBegin?0:t.length}function C(e){let t=e[0],r=n.substring(e.index),i=_(A,e,r);if(!i)return Ne;let a=A;A.endScope&&A.endScope._wrap?(p(),m(t,A.endScope._wrap)):A.endScope&&A.endScope._multi?(p(),h(A.endScope,e)):a.skip?M+=t:(a.returnEnd||a.excludeEnd||(M+=t),p(),a.excludeEnd&&(M=t));do A.scope&&j.closeNode(),!A.skip&&!A.subLanguage&&(ne+=A.relevance),A=A.parent;while(A!==i.parent);return i.starts&&g(i.starts,e),a.returnEnd?0:t.length}function w(){let e=[];for(let t=A;t!==D;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>j.openNode(e))}let T={};function E(t,r){let a=r&&r[0];if(M+=t,a==null)return p(),0;if(T.type===`begin`&&r.type===`end`&&T.index===r.index&&a===``){if(M+=n.slice(r.index,r.index+1),!o){let t=Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=T.rule,t}return 1}if(T=r,r.type===`begin`)return b(r);if(r.type===`illegal`&&!i){let e=Error(`Illegal lexeme "`+a+`" for mode "`+(A.scope||`<unnamed>`)+`"`);throw e.mode=A,e}if(r.type===`end`){let e=C(r);if(e!==Ne)return e}if(r.type===`illegal`&&a===``)return r.index===n.length||(M+=`
69
+ `),1;if(ie>1e5&&ie>r.index*3)throw Error(`potential infinite loop, way more iterations than matches`);return M+=a,a.length}let D=te(e);if(!D)throw _e(s.replace(`{}`,e)),Error(`Unknown language: "`+e+`"`);let O=Ee(D),k=``,A=a||O,ee={},j=new l.__emitter(l);w();let M=``,ne=0,re=0,ie=0,ae=!1;try{if(D.__emitTokens)D.__emitTokens(n,j);else{for(A.matcher.considerAll();;){ie++,ae?ae=!1:A.matcher.considerAll(),A.matcher.lastIndex=re;let e=A.matcher.exec(n);if(!e)break;let t=E(n.substring(re,e.index),e);re=e.index+t}E(n.substring(re))}return j.finalize(),k=j.toHTML(),{language:e,value:k,relevance:ne,illegal:!1,_emitter:j,_top:A}}catch(t){if(t.message&&t.message.includes(`Illegal`))return{language:e,value:je(n),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:re,context:n.slice(re-100,re+100),mode:t.mode,resultSoFar:k},_emitter:j};if(o)return{language:e,value:je(n),illegal:!1,relevance:0,errorRaised:t,_emitter:j,_top:A};throw t}}function b(e){let t={value:je(e),illegal:!1,relevance:0,_top:c,_emitter:new l.__emitter(l)};return t._emitter.addText(e),t}function S(e,n){n=n||l.languages||Object.keys(t);let r=b(e),i=n.filter(te).filter(ne).map(t=>v(t,e,!1));i.unshift(r);let[a,o]=i.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(te(e.language).supersetOf===t.language)return 1;if(te(t.language).supersetOf===e.language)return-1}return 0}),s=a;return s.secondBest=o,s}function C(e,t,n){let r=t&&i[t]||n;e.classList.add(`hljs`),e.classList.add(`language-${r}`)}function w(e){let t=null,n=d(e);if(u(n))return;if(oe(`before:highlightElement`,{el:e,language:n}),e.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);return}if(e.children.length>0&&(l.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(e)),l.throwUnescapedHTML))throw new Ae(`One of your code blocks includes unescaped HTML.`,e.innerHTML);t=e;let r=t.textContent,i=n?p(r,{language:n,ignoreIllegals:!0}):S(r);e.innerHTML=i.value,e.dataset.highlighted=`yes`,C(e,n,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),oe(`after:highlightElement`,{el:e,result:i,text:r})}function T(e){l=Me(l,e)}let E=()=>{k(),ye(`10.6.0`,`initHighlighting() deprecated. Use highlightAll() now.`)};function D(){k(),ye(`10.6.0`,`initHighlightingOnLoad() deprecated. Use highlightAll() now.`)}let O=!1;function k(){function e(){k()}if(document.readyState===`loading`){O||window.addEventListener(`DOMContentLoaded`,e,!1),O=!0;return}document.querySelectorAll(l.cssSelector).forEach(w)}function A(n,r){let i=null;try{i=r(e)}catch(e){if(_e(`Language definition for '{}' could not be registered.`.replace(`{}`,n)),o)_e(e);else throw e;i=c}i.name||(i.name=n),t[n]=i,i.rawDefinition=r.bind(null,e),i.aliases&&M(i.aliases,{languageName:n})}function ee(e){delete t[e];for(let t of Object.keys(i))i[t]===e&&delete i[t]}function j(){return Object.keys(t)}function te(e){return e=(e||``).toLowerCase(),t[e]||t[i[e]]}function M(e,{languageName:t}){typeof e==`string`&&(e=[e]),e.forEach(e=>{i[e.toLowerCase()]=t})}function ne(e){let t=te(e);return t&&!t.disableAutodetect}function re(e){e[`before:highlightBlock`]&&!e[`before:highlightElement`]&&(e[`before:highlightElement`]=t=>{e[`before:highlightBlock`](Object.assign({block:t.el},t))}),e[`after:highlightBlock`]&&!e[`after:highlightElement`]&&(e[`after:highlightElement`]=t=>{e[`after:highlightBlock`](Object.assign({block:t.el},t))})}function ie(e){re(e),a.push(e)}function ae(e){let t=a.indexOf(e);t!==-1&&a.splice(t,1)}function oe(e,t){let n=e;a.forEach(function(e){e[n]&&e[n](t)})}function ce(e){return ye(`10.7.0`,`highlightBlock will be removed entirely in v12.0`),ye(`10.7.0`,`Please use highlightElement now.`),w(e)}Object.assign(e,{highlight:p,highlightAuto:S,highlightAll:k,highlightElement:w,highlightBlock:ce,configure:T,initHighlighting:E,initHighlightingOnLoad:D,registerLanguage:A,unregisterLanguage:ee,listLanguages:j,getLanguage:te,registerAliases:M,autoDetection:ne,inherit:Me,addPlugin:ie,removePlugin:ae}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString=ke,e.regex={concat:_,lookahead:m,either:y,optional:g,anyNumberOfTimes:h};for(let e in se)typeof se[e]==`object`&&n(se[e]);return Object.assign(e,se),e},Ie=Fe({});Ie.newInstance=()=>Fe({}),t.exports=Ie,Ie.HighlightJS=Ie,Ie.default=Ie}))()).default;function kr(e){let t=e.regex,n={},r={begin:/\$\{/,end:/\}/,contains:[`self`,{begin:/:-/,contains:[n]}]};Object.assign(n,{className:`variable`,variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,`(?![\\w\\d])(?![$])`)},r]});let i={className:`subst`,begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},a=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:`comment`}}),o={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:`string`})]}},s={className:`string`,begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,i]};i.contains.push(s);let c={match:/\\"/},l={className:`string`,begin:/'/,end:/'/},u={match:/\\'/},d={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:`number`},e.NUMBER_MODE,n]},f=e.SHEBANG({binary:`(${[`fish`,`bash`,`zsh`,`sh`,`csh`,`ksh`,`tcsh`,`dash`,`scsh`].join(`|`)})`,relevance:10}),p={className:`function`,begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},m=[`if`,`then`,`else`,`elif`,`fi`,`time`,`for`,`while`,`until`,`in`,`do`,`done`,`case`,`esac`,`coproc`,`function`,`select`],h=[`true`,`false`],g={match:/(\/[a-z._-]+)+/},_=[`break`,`cd`,`continue`,`eval`,`exec`,`exit`,`export`,`getopts`,`hash`,`pwd`,`readonly`,`return`,`shift`,`test`,`times`,`trap`,`umask`,`unset`],v=[`alias`,`bind`,`builtin`,`caller`,`command`,`declare`,`echo`,`enable`,`help`,`let`,`local`,`logout`,`mapfile`,`printf`,`read`,`readarray`,`source`,`sudo`,`type`,`typeset`,`ulimit`,`unalias`],y=`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`.split(`.`),b=`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`.split(`.`);return{name:`Bash`,aliases:[`sh`,`zsh`],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:m,literal:h,built_in:[..._,...v,`set`,`shopt`,...y,...b]},contains:[f,e.SHEBANG(),p,d,a,o,g,s,c,l,u,n]}}var Ar=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/},UNICODE_RANGE:{scope:`number`,begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},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_-]*/}}),jr=`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`.split(`.`),Mr=`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`.split(`.`),Nr=[...jr,...Mr],Pr=`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`.split(`.`).sort().reverse(),Fr=`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`.split(`.`).sort().reverse(),Ir=[`after`,`backdrop`,`before`,`cue`,`cue-region`,`first-letter`,`first-line`,`grammar-error`,`marker`,`part`,`placeholder`,`selection`,`slotted`,`spelling-error`].sort().reverse(),Lr=`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.corner-bottom-left-shape.corner-bottom-right-shape.corner-shape.corner-top-left-shape.corner-top-right-shape.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.unicode-range.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`.split(`.`).sort().reverse();function Rr(e){let t=e.regex,n=Ar(e),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},i=/@-?\w[\w]*(-\w+)*/,a=[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,r,n.CSS_NUMBER_MODE,{className:`selector-id`,begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:`selector-class`,begin:`\\.[a-zA-Z-][a-zA-Z0-9_-]*`,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:`selector-pseudo`,variants:[{begin:`:(`+Fr.join(`|`)+`)`},{begin:`:(:)?(`+Ir.join(`|`)+`)`}]},n.CSS_VARIABLE,{className:`attribute`,begin:`\\b(`+Lr.join(`|`)+`)\\b`},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,n.UNICODE_RANGE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:`url data-uri`},contains:[...a,{className:`string`,begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:`[{;]`,relevance:0,illegal:/:/,contains:[{className:`keyword`,begin:i},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:`and or not only`,attribute:Pr.join(` `)},contains:[{begin:/[a-z-]+(?=:)/,className:`attribute`},...a,n.CSS_NUMBER_MODE]}]},{className:`selector-tag`,begin:`\\b(`+Nr.join(`|`)+`)\\b`}]}}function zr(e){let t=e.regex;return{name:`Diff`,aliases:[`patch`],contains:[{className:`meta`,relevance:10,match:t.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+,\d+ +\+\d+ +@@/,/^@@ +-\d+ +\+\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:`comment`,variants:[{begin:t.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:`addition`,begin:/^\+/,end:/$/},{className:`deletion`,begin:/^-/,end:/$/},{className:`addition`,begin:/^!/,end:/$/}]}}function Br(e){let t={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:t,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:/-?\b0[bB](_?[01])*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:t,illegal:/["']/}]}]}}var Vr=`[A-Za-z$_][0-9A-Za-z$_]*`,Hr=`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`.split(`.`),Ur=[`true`,`false`,`null`,`undefined`,`NaN`,`Infinity`],Wr=`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`.split(`.`),Gr=[`Error`,`EvalError`,`InternalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`],Kr=[`setInterval`,`setTimeout`,`clearInterval`,`clearTimeout`,`require`,`exports`,`eval`,`isFinite`,`isNaN`,`parseFloat`,`parseInt`,`decodeURI`,`decodeURIComponent`,`encodeURI`,`encodeURIComponent`,`escape`,`unescape`],qr=[`arguments`,`this`,`super`,`console`,`window`,`document`,`localStorage`,`sessionStorage`,`module`,`self`,`global`],Jr=[].concat(Kr,Wr,Gr);function Yr(e){let t=e.regex,n=(e,{after:t})=>{let n=`</`+e[0].slice(1);return e.input.indexOf(n,t)!==-1},r=Vr,i={begin:`<>`,end:`</>`},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{let r=e[0].length+e.index,i=e.input[r];if(i===`<`||i===`,`){t.ignoreMatch();return}i===`>`&&(n(e,{after:r})||t.ignoreMatch());let a,o=e.input.substring(r);if(a=o.match(/^\s*=/)){t.ignoreMatch();return}if((a=o.match(/^\s+extends\s+/))&&a.index===0){t.ignoreMatch();return}}},s={$pattern:Vr,keyword:Hr,literal:Ur,built_in:Jr,"variable.language":qr},c=`[0-9](_?[0-9])*`,l=`\\.(${c})`,u=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`,d={className:`number`,variants:[{begin:`(\\b(${u})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${l})\\b|\\.)?|(${l})\\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},f={className:`subst`,begin:`\\$\\{`,end:`\\}`,keywords:s,contains:[]},p={begin:".?html`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`xml`}},m={begin:".?css`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`css`}},h={begin:".?gql`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`graphql`}},g={className:`string`,begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,f]},_={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:r+`(?=\\s*(-)|$)`,endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},v=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,{match:/\$\d+/},d];f.contains=v.concat({begin:/\{/,end:/\}/,keywords:s,contains:[`self`].concat(v)});let y=[].concat(_,f.contains),b=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:[`self`].concat(y)}]),x={className:`params`,begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b},S={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,`(`,t.concat(/\./,r),`)*`)],scope:{1:`keyword`,3:`title.class`,5:`keyword`,7:`title.class.inherited`}},{match:[/class/,/\s+/,r],scope:{1:`keyword`,3:`title.class`}}]},C={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:{_:[...Wr,...Gr]}},w={label:`use_strict`,className:`meta`,relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},T={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:`keyword`,3:`title.function`},label:`func.def`,contains:[x],illegal:/%/},E={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:`variable.constant`};function D(e){return t.concat(`(?!`,e.join(`|`),`)`)}let O={match:t.concat(/\b/,D([...Kr,`super`,`import`,`await`].map(e=>`${e}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:`title.function`,relevance:0},k={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:`prototype`,className:`property`,relevance:0},A={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:`keyword`,3:`title.function`},contains:[{begin:/\(\)/},x]},ee=`(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|`+e.UNDERSCORE_IDENT_RE+`)\\s*=>`,j={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(ee)],keywords:`async`,className:{1:`keyword`,3:`title.function`},contains:[x]};return{name:`JavaScript`,aliases:[`js`,`jsx`,`mjs`,`cjs`],keywords:s,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:C},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:`shebang`,binary:`node`,relevance:5}),w,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,_,{match:/\$\d+/},d,C,{scope:`attr`,match:r+t.lookahead(`:`),relevance:0},j,{begin:`(`+e.RE_STARTERS_RE+`|\\b(case|return|throw)\\b)\\s*`,keywords:`return throw case`,relevance:0,contains:[_,e.REGEXP_MODE,{className:`function`,begin:ee,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:s,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:i.begin,end:i.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:`xml`,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[`self`]}]}]},T,{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:r,className:`title.function`})]},{match:/\.\.\./,relevance:0},k,{match:`\\$`+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:`title.function`},contains:[x]},O,E,S,A,{match:/\$[(.]/}]}}var Xr={scope:`number`,match:`([-+]?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|NaN|[-+]?Infinity`,relevance:0};function Zr(e){let t={className:`attr`,begin:/(("(\\.|[^\\"\r\n])*")|('(\\.|[^\\'\r\n])*'))(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:`punctuation`,relevance:0},r=[`true`,`false`,`null`],i={scope:`literal`,beginKeywords:r.join(` `)};return{name:`JSON`,aliases:[`jsonc`,`json5`],keywords:{literal:r},contains:[t,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,Xr,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:`\\S`}}function Qr(e){let t=e.regex,n={begin:/<\/?[A-Za-z_]/,end:`>`,subLanguage:`xml`,relevance:0},r={match:/^ {0,3}([-*_])[ \t]*(?:\1[ \t]*){2,}$/},i={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}]},a={className:`bullet`,begin:`^[ ]*([*+-]|(\\d+\\.))(?=\\s+)`,end:`\\s+`,excludeEnd:!0},o={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:`symbol`,begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:`link`,begin:/:\s*/,end:/$/,excludeBegin:!0}]},s={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:t.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),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}]},c={className:`strong`,contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},l={className:`emphasis`,contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},u=e.inherit(c,{contains:[]}),d=e.inherit(l,{contains:[]});c.contains.push(d),l.contains.push(u);let f=[n,s];return[c,l,u,d].forEach(e=>{e.contains=e.contains.concat(f)}),f=f.concat(c,l),{name:`Markdown`,aliases:[`md`,`mkdown`,`mkd`],contains:[{className:`section`,variants:[{begin:`^#{1,6}`,end:`$`,contains:f},{begin:`(?=^.+?\\n[=-]{2,}$)`,contains:[{begin:`^[=-]*$`},{begin:`^`,end:`\\n`,contains:f}]}]},n,a,r,c,l,{className:`quote`,begin:`^>\\s+`,contains:f,end:`$`},i,s,o,{scope:`literal`,match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function $r(e){let t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,r=`and.as.assert.async.await.break.case.class.continue.def.del.elif.else.except.finally.for.from.global.if.import.in.is.lambda.lazy.match.nonlocal|10.not.or.pass.raise.return.try.while.with.yield`.split(`.`),i={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:r,built_in:`__import__.abs.aiter.all.anext.any.ascii.bin.bool.breakpoint.bytearray.bytes.callable.chr.classmethod.compile.complex.delattr.dict.dir.divmod.enumerate.eval.exec.filter.float.format.frozendict.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.sentinel.set.setattr.slice.sorted.staticmethod.str.sum.super.tuple.type.vars.zip`.split(`.`),literal:[`__debug__`,`Ellipsis`,`False`,`None`,`NotImplemented`,`True`],type:[`Any`,`Callable`,`Coroutine`,`Dict`,`List`,`Literal`,`Generic`,`Optional`,`Sequence`,`Set`,`Tuple`,`Type`,`Union`]},a={className:`meta`,begin:/^(>>>|\.\.\.) /},o={className:`subst`,begin:/\{/,end:/\}/,keywords:i,illegal:/#/},s={begin:/\{\{/,relevance:0},c={className:`string`,contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,o]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,o]},{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:/([fFtT][rR]|[rR][fFtT]|[fFtT])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,o]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,o]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},l=`[0-9](_?[0-9])*`,u=`(\\b(${l}))?\\.(${l})|\\b(${l})\\.`,d=`\\b|${r.join(`|`)}`,f={className:`number`,relevance:0,variants:[{begin:`(\\b(${l})|(${u}))[eE][+-]?(${l})[jJ]?(?=${d})`},{begin:`(${u})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${l})[jJ](?=${d})`}]},p={className:`comment`,begin:t.lookahead(/# type:/),end:/$/,keywords:i,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={className:`params`,variants:[{className:``,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:[`self`,a,f,c,e.HASH_COMMENT_MODE]}]};return o.contains=[c,f,a],{name:`Python`,aliases:[`py`,`gyp`,`ipython`],unicodeRegex:!0,keywords:i,illegal:/(<\/|\?)|=>/,contains:[a,f,{scope:`variable.language`,match:/\bself\b/},{beginKeywords:`if`,relevance:0},{match:/\bor\b/,scope:`keyword`},c,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:`keyword`,3:`title.function`},contains:[m]},{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:[f,m,c]}]}}function ei(e){let t=e.regex,n=/(r#)?/,r=t.concat(n,e.UNDERSCORE_IDENT_RE),i=t.concat(n,e.IDENT_RE),a={scope:`title.function.invoke`,relevance:0,begin:t.concat(/\b/,/(?!(?:let|for|while|if|else|match)\b)/,i,t.lookahead(/\s*\(/))},o=`([ui](8|16|32|64|128|size)|f(16|32|64|128))?`,s=`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.raw.ref.return.self.Self.static.struct.super.trait.true.try.type.typeof.union.unsafe.unsized.use.virtual.where.while.yield`.split(`.`),c=[`true`,`false`,`Some`,`None`,`Ok`,`Err`],l=`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!`.split(`.`),u=[`i8`,`i16`,`i32`,`i64`,`i128`,`isize`,`u8`,`u16`,`u32`,`u64`,`u128`,`usize`,`f16`,`f32`,`f64`,`f128`,`str`,`char`,`bool`,`Box`,`Option`,`Result`,`String`,`Vec`];return{name:`Rust`,aliases:[`rs`],keywords:{$pattern:e.IDENT_RE+`!?`,type:u,keyword:s,literal:c,built_in:l},illegal:`</`,contains:[e.C_LINE_COMMENT_MODE,e.COMMENT(`/\\*`,`\\*/`,{contains:[`self`]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{scope:`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})/}]}]},{scope:`number`,variants:[{begin:`\\b0b([01_]+)`+o},{begin:`\\b0o([0-7_]+)`+o},{begin:`\\b0x([A-Fa-f0-9_]+)`+o},{begin:`\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)`+o}],relevance:0},{begin:[/\bsafe/,/\s+/,/extern/],scope:{1:`keyword`,3:`keyword`}},{begin:[/fn/,/\s+/,r],scope:{1:`keyword`,3:`title.function`}},{scope:`meta`,begin:`#!?\\[`,end:`\\]`,contains:[{scope:`string`,begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,r],scope:{1:`keyword`,3:`keyword`,4:`variable`}},{begin:[/for/,/\s+/,r,/\s+/,/in/],scope:{1:`keyword`,3:`variable`,5:`keyword`}},{begin:[/type/,/\s+/,r],scope:{1:`keyword`,3:`title.class`}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,r],scope:{1:`keyword`,3:`title.class`}},{begin:e.IDENT_RE+`::`,keywords:{keyword:`Self`,built_in:l,type:u}},{scope:`punctuation`,begin:`->`},a]}}function ti(e){return{name:`Shell Session`,aliases:[`console`,`shellsession`],contains:[{className:`meta.prompt`,begin:/^\s{0,3}[./~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:`bash`}}]}}function ni(e){let t=e.regex,n=e.COMMENT(`--`,`$`),r={scope:`string`,variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},i={begin:/"/,end:/"/,contains:[{match:/""/}]},a=[`true`,`false`,`unknown`],o=[`double precision`,`large object`,`with timezone`,`without timezone`],s=`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`.split(`.`),c=[`add`,`asc`,`collation`,`desc`,`final`,`first`,`last`,`view`],l=`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`.split(`.`),u=`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`.split(`.`),d=[`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`],f=[`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`],p=u,m=[...l,...c].filter(e=>!u.includes(e)),h={scope:`variable`,match:/@[a-z0-9][a-z0-9_]*/},g={scope:`operator`,match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},_={match:t.concat(/\b/,t.either(...p),/\s*\(/),relevance:0,keywords:{built_in:p}};function v(e){return t.concat(/\b/,t.either(...e.map(e=>e.replace(/\s+/,`\\s+`))),/\b/)}let y={scope:`keyword`,match:v(f),relevance:0};function b(e,{exceptions:t,when:n}={}){let r=n;return t||=[],e.map(e=>e.match(/\|\d+$/)||t.includes(e)?e:r(e)?`${e}|0`:e)}return{name:`SQL`,case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:b(m,{when:e=>e.length<3}),literal:a,type:s,built_in:d},contains:[{scope:`type`,match:v(o)},y,_,h,r,i,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,g]}}var ri=`[A-Za-z$_][0-9A-Za-z$_]*`,ii=`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`.split(`.`),ai=[`true`,`false`,`null`,`undefined`,`NaN`,`Infinity`],oi=`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`.split(`.`),si=[`Error`,`EvalError`,`InternalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`],ci=[`setInterval`,`setTimeout`,`clearInterval`,`clearTimeout`,`require`,`exports`,`eval`,`isFinite`,`isNaN`,`parseFloat`,`parseInt`,`decodeURI`,`decodeURIComponent`,`encodeURI`,`encodeURIComponent`,`escape`,`unescape`],li=[`arguments`,`this`,`super`,`console`,`window`,`document`,`localStorage`,`sessionStorage`,`module`,`self`,`global`],ui=[].concat(ci,oi,si);function di(e){let t=e.regex,n=(e,{after:t})=>{let n=`</`+e[0].slice(1);return e.input.indexOf(n,t)!==-1},r=ri,i={begin:`<>`,end:`</>`},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{let r=e[0].length+e.index,i=e.input[r];if(i===`<`||i===`,`){t.ignoreMatch();return}i===`>`&&(n(e,{after:r})||t.ignoreMatch());let a,o=e.input.substring(r);if(a=o.match(/^\s*=/)){t.ignoreMatch();return}if((a=o.match(/^\s+extends\s+/))&&a.index===0){t.ignoreMatch();return}}},s={$pattern:ri,keyword:ii,literal:ai,built_in:ui,"variable.language":li},c=`[0-9](_?[0-9])*`,l=`\\.(${c})`,u=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`,d={className:`number`,variants:[{begin:`(\\b(${u})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${l})\\b|\\.)?|(${l})\\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},f={className:`subst`,begin:`\\$\\{`,end:`\\}`,keywords:s,contains:[]},p={begin:".?html`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`xml`}},m={begin:".?css`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`css`}},h={begin:".?gql`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`graphql`}},g={className:`string`,begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,f]},_={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:r+`(?=\\s*(-)|$)`,endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},v=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,{match:/\$\d+/},d];f.contains=v.concat({begin:/\{/,end:/\}/,keywords:s,contains:[`self`].concat(v)});let y=[].concat(_,f.contains),b=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:[`self`].concat(y)}]),x={className:`params`,begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b},S={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,`(`,t.concat(/\./,r),`)*`)],scope:{1:`keyword`,3:`title.class`,5:`keyword`,7:`title.class.inherited`}},{match:[/class/,/\s+/,r],scope:{1:`keyword`,3:`title.class`}}]},C={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:{_:[...oi,...si]}},w={label:`use_strict`,className:`meta`,relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},T={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:`keyword`,3:`title.function`},label:`func.def`,contains:[x],illegal:/%/},E={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:`variable.constant`};function D(e){return t.concat(`(?!`,e.join(`|`),`)`)}let O={match:t.concat(/\b/,D([...ci,`super`,`import`,`await`].map(e=>`${e}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:`title.function`,relevance:0},k={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:`prototype`,className:`property`,relevance:0},A={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:`keyword`,3:`title.function`},contains:[{begin:/\(\)/},x]},ee=`(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|`+e.UNDERSCORE_IDENT_RE+`)\\s*=>`,j={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(ee)],keywords:`async`,className:{1:`keyword`,3:`title.function`},contains:[x]};return{name:`JavaScript`,aliases:[`js`,`jsx`,`mjs`,`cjs`],keywords:s,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:C},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:`shebang`,binary:`node`,relevance:5}),w,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,_,{match:/\$\d+/},d,C,{scope:`attr`,match:r+t.lookahead(`:`),relevance:0},j,{begin:`(`+e.RE_STARTERS_RE+`|\\b(case|return|throw)\\b)\\s*`,keywords:`return throw case`,relevance:0,contains:[_,e.REGEXP_MODE,{className:`function`,begin:ee,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:s,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:i.begin,end:i.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:`xml`,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[`self`]}]}]},T,{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:r,className:`title.function`})]},{match:/\.\.\./,relevance:0},k,{match:`\\$`+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:`title.function`},contains:[x]},O,E,S,A,{match:/\$[(.]/}]}}function fi(e){let t=e.regex,n=di(e),r=ri,i=[`any`,`void`,`number`,`boolean`,`string`,`object`,`never`,`symbol`,`bigint`,`unknown`],a={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:`keyword`,3:`title.class`}},o={beginKeywords:`interface`,end:/\{/,excludeEnd:!0,keywords:{keyword:`interface extends`,built_in:i},contains:[n.exports.CLASS_REFERENCE]},s={className:`meta`,relevance:10,begin:/^\s*['"]use strict['"]/},c={$pattern:ri,keyword:ii.concat([`type`,`interface`,`public`,`private`,`protected`,`implements`,`declare`,`abstract`,`readonly`,`enum`,`override`,`satisfies`]),literal:ai,built_in:ui.concat(i),"variable.language":li},l={className:`meta`,begin:`@`+r},u=(e,t,n)=>{let r=e.contains.findIndex(e=>e.label===t);if(r===-1)throw Error(`can not find mode to replace`);e.contains.splice(r,1,n)};Object.assign(n.keywords,c),n.exports.PARAMS_CONTAINS.push(l);let d=n.contains.find(e=>e.scope===`attr`),f=Object.assign({},d,{match:t.concat(r,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,d,f]),n.contains=n.contains.concat([l,a,o,f]),u(n,`shebang`,e.SHEBANG()),u(n,`use_strict`,s);let p=n.contains.find(e=>e.label===`func.def`);return p.relevance=0,Object.assign(n,{name:`TypeScript`,aliases:[`ts`,`tsx`,`mts`,`cts`]}),n}function pi(e){let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),r=/[\p{L}0-9._:-]+/u,i={className:`symbol`,begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:`keyword`,begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},o=e.inherit(a,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:`string`}),c=e.inherit(e.QUOTE_STRING_MODE,{className:`string`}),l={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:`attr`,begin:r,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:`string`,endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{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:[a,c,s,o,{begin:/\[/,end:/\]/,contains:[{className:`meta`,begin:/<![a-z]/,end:/>/,contains:[a,o,c,s]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},i,{className:`meta`,end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:`tag`,begin:/<style(?=\s|>)/,end:/>/,keywords:{name:`style`},contains:[l],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:`css`}},{className:`tag`,begin:/<script(?=\s|>)/,end:/>/,keywords:{name:`script`},contains:[l],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:`javascript`}},{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:l}]},{className:`tag`,begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:`name`,begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function mi(e){let t=`true false yes no null`,n=`[\\w#;/?:@&=+$,.~*'()[\\]]+`,r={className:`attr`,variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},i={className:`template-variable`,variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},a={className:`string`,relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:`char.escape`,relevance:0}]},o={className:`string`,relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,i]},s=e.inherit(o,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),c={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`},l={end:`,`,endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},u={begin:/\{/,end:/\}/,contains:[l],illegal:`\\n`,relevance:0},d={begin:`\\[`,end:`\\]`,contains:[l],illegal:`\\n`,relevance:0},f=[r,{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}},c,{className:`number`,begin:e.C_NUMBER_RE+`\\b`,relevance:0},u,d,a,o],p=[...f];return p.pop(),p.push(s),l.contains=p,{name:`YAML`,case_insensitive:!0,aliases:[`yml`],contains:f}}for(let[e,t]of Object.entries({bash:kr,css:Rr,diff:zr,go:Br,javascript:Yr,json:Zr,markdown:Qr,python:$r,rust:ei,shell:ti,sql:ni,typescript:fi,xml:pi,yaml:mi}))Or.registerLanguage(e,t);function hi(e){for(let t of e.querySelectorAll(`pre code[class]`)){let e=/(?:language|lang)-(\S+)/.exec(t.className)?.[1]?.toLowerCase();!e||!Or.getLanguage(e)||(t.innerHTML=Or.highlight(t.textContent??``,{language:e}).value)}}var gi=null,_i=`cursor-pointer rounded-full border border-indigo-200 bg-indigo-50 px-2.5 py-0.5 text-[12.5px] text-indigo-700 transition-colors hover:border-indigo-300 hover:bg-indigo-100`;function vi(){gi=null}function yi(e,t,n){if(gi?.remove(),gi=null,!t.length)return;let r=K(`div`,`mt-1.5 flex flex-wrap gap-1.5`);for(let e of t){let t=K(`button`,_i,e);t.type=`button`,t.onclick=()=>{gi===r&&(gi=null),r.remove(),n(e)},r.append(t)}e.append(r),gi=r}var bi,xi;function Si(e,t){bi=e,xi=t}var Ci={queued:`border-amber-200 bg-amber-50 text-amber-800`,running:`border-green-200 bg-green-50 text-green-800`,succeeded:`border-neutral-200 bg-neutral-50 text-neutral-600`,failed:`border-red-200 bg-red-50 text-red-700`,cancelled:`border-neutral-200 bg-neutral-50 text-neutral-500`,interrupted:`border-amber-200 bg-amber-50 text-amber-800`,skipped:`border-neutral-200 bg-neutral-50 text-neutral-500`},wi=new Map;async function Ti(e){let t=await e;t.sent&&t.error&&xi.append(`error`,t.error)}async function Ei(e,t){try{let n=await fetch(e,{method:`POST`});n.ok||xi.append(`error`,await u(n,t))}catch(e){xi.append(`error`,`${t}: ${String(e)}`)}}async function Di(e){let t=bi.sessionId();t&&await Ti(d(`Reply to subagent`,`/api/task-messages/${e}/reply`,{sourceSessionId:t},`reply failed`))}function Oi(e){let t=K(`button`,`flex-none text-[11px] font-semibold normal-case text-cyan-800 hover:underline`,`Reply`);return t.onclick=()=>void Di(e),t}function ki(e){let t=wi.get(e.runId);t||(t=K(`div`,`mx-5 my-1.5 border px-3 py-2 text-[13px]`),t.dataset.kind=`background-run`,xi.el.append(t),wi.set(e.runId,t)),t.className=`mx-5 my-1.5 border px-3 py-2 text-[13px] ${Ci[e.state]}`;let n=e.state===`queued`||e.state===`running`,r=`/api/task-runs/${e.runId}`,i=n?K(`span`,`spinner`):K(`span`,`w-3 flex-none text-center`,e.state===`succeeded`?`✓`:e.state===`failed`?`✕`:`·`),a=K(`button`,`min-w-0 truncate text-left font-medium hover:underline`,e.taskName);a.onclick=()=>bi.showTasks(e.taskId);let o=K(`div`,`flex items-center gap-2`,i,K(`span`,`flex-none text-[11px] font-semibold uppercase`,e.state),a),s=K(`div`,`ml-auto flex flex-none items-center gap-2`);if(e.targetSessionId){let t=K(`button`,`font-mono text-[11px] hover:underline`,`Open`);t.title=`Open ${e.targetSessionId}`,t.onclick=()=>bi.select(e.targetSessionId),s.append(t)}if(n){let e=K(`button`,`text-[11px] font-semibold hover:underline`,`Steer`),t={mode:`steer`,sourceSessionId:bi.sessionId()};e.onclick=()=>void Ti(d(`Steer subagent`,`${r}/steer`,t,`could not steer the run`));let n=K(`button`,`text-[11px] font-semibold hover:underline`,`Stop`);n.onclick=()=>void Ei(`${r}/cancel`,`could not stop the run`),s.append(e,n)}else if(e.targetSessionId&&e.sessionMode!==null){let e=K(`button`,`text-[11px] font-semibold hover:underline`,`Continue`),t={sourceSessionId:bi.sessionId()};e.onclick=()=>void Ti(d(`Continue subagent`,`${r}/resume`,t,`could not continue`)),s.append(e)}o.append(s);let c=Math.max(0,Math.round(((e.finishedAt??Date.now())-(e.startedAt??e.queuedAt))/1e3));t.replaceChildren(o,K(`div`,`mt-1 text-[11px] opacity-70`,`${e.sessionMode??`task`} · depth ${e.depth} · ${c}s · ${e.runId}`)),xi.scroll()}var q=null;function Ai(){q&&!q.toolRows.size&&Li(`done`)}function ji(){q=null,wi.clear()}var Mi={running:`border-green-200 bg-green-50 text-green-800`,done:`border-neutral-200 bg-neutral-50 text-neutral-500`,failed:`border-red-200 bg-red-50 text-red-700`,interrupted:`border-amber-200 bg-amber-50 text-amber-800`},Ni={done:`✓`,failed:`✕`,interrupted:`⏸`};function Pi(e){return e===`running`?K(`span`,`spinner`):K(`span`,`flex-none text-[12px] font-bold`,Ni[e])}function Fi(e){if(q)return q;let t=Pi(`running`),n=K(`span`,`truncate`,`working…`),{el:r}=$n(`mx-5 my-1.5 rounded-lg border px-3 py-1.5 text-[13px] ${Mi.running}`,[t,n]);r.dataset.kind=`activity`;let i=K(`div`,`mt-1.5 flex max-h-64 flex-col gap-1 overflow-y-auto overscroll-contain border-t border-black/5 pt-1.5`);return r.append(i),xi.el.append(r),xi.scroll(),q={el:r,statusIcon:t,headline:n,rowsEl:i,toolRows:new Map,thinking:null,steps:0,failedSteps:0,startTs:e,sawError:!1},q}function Ii(e,t,n){let r=Math.max(1,Math.round((Date.now()-e.startTs)/1e3)),i=`${e.steps} step${e.steps===1?``:`s`} · ${r}s`;e.headline.textContent=t===`running`&&n?`${i} · ${n}`:t===`done`?i:`${i} · ${t}`,e.el.className=`mx-5 my-1.5 rounded-lg border px-3 py-1.5 text-[13px] ${Mi[t]}`;let a=Pi(t);e.statusIcon.replaceWith(a),e.statusIcon=a}function Li(e){if(!q)return;for(let{statusEl:e}of q.toolRows.values())e.textContent===`running…`&&(e.textContent=`interrupted`);let t=q.steps>0&&q.failedSteps===q.steps;Ii(q,(q.sawError||t)&&e===`done`?`failed`:e),q=null}function Ri(){q&&(q.sawError=!0)}function zi(e,t,n,r){let i=Fi(e);i.steps+=1,i.thinking=null;let a=JSON.stringify(r,null,2)??``,o=a.replace(/\s+/g,` `),s=K(`span`,`ml-auto flex-none text-black/40`,`running…`),{el:c}=$n(`rounded-md px-1 py-0.5 font-mono text-[12.5px] hover:bg-black/[0.03]`,[K(`span`,`flex-none font-semibold`,n),K(`span`,`truncate text-black/50`,o.length>100?o.slice(0,100)+`…`:o),s]),l=K(`pre`,`max-h-40 overflow-y-auto whitespace-pre-wrap rounded bg-black/[0.04] p-1.5 text-[12px]`,a),u=K(`pre`,`hidden max-h-56 overflow-y-auto whitespace-pre-wrap rounded bg-black/[0.04] p-1.5 text-[12px]`);c.append(K(`div`,`mt-1 flex flex-col gap-1 pl-4`,l,u)),i.toolRows.set(t,{el:c,statusEl:s,outputPre:u}),i.rowsEl.append(c),i.rowsEl.scrollTop=i.rowsEl.scrollHeight,Ii(i,`running`,n),xi.scroll()}function Bi(e,t,n){let r=q;if(!r)return;let i=r.toolRows.get(e);r.toolRows.delete(e),i&&(i.statusEl.textContent=t?`failed`:`ok`,i.statusEl.className=`ml-auto flex-none ${t?`text-red-600`:`text-green-700`}`,i.el.classList.toggle(`bg-red-50`,t),i.el.classList.toggle(`text-red-700`,t),n&&(i.outputPre.textContent=n.length>8e3?n.slice(0,8e3)+`…`:n,i.outputPre.classList.remove(`hidden`)),t&&(r.failedSteps+=1)),Ii(r,`running`)}function Vi(e,t){let n=Fi(e);if(!n.thinking){let{el:e,summary:t}=$n(`rounded-md px-1 py-0.5 text-[12.5px] italic text-black/50 hover:bg-black/[0.03]`,[K(`span`,`truncate`,`thinking…`)]),r=K(`div`,`mt-1 max-h-56 overflow-y-auto whitespace-pre-wrap pl-4 not-italic text-black/60`,``);e.append(r),n.rowsEl.append(e),n.thinking={pre:r,summary:t},Ii(n,`running`,`thinking…`)}let r=n.thinking;r.pre.textContent=((r.pre.textContent??``)+t).slice(-4e3);let i=(r.pre.textContent??``).split(`
70
+ `).filter(Boolean).pop()??`thinking…`,a=r.summary.lastElementChild;a.textContent=i.length>90?`…`+i.slice(-90):i}var Hi=0;function Ui(e,t=0,n=!1){let r=Date.now()-t;for(let t of e){if(t.kind===`thinking`){Vi(r,t.text??``);continue}let e=t.id??`replay-${++Hi}`;zi(r,e,t.toolName??``,t.args),t.output!==void 0&&Bi(e,t.isError??!1,t.output)}n||Li(e.some(e=>e.kind===`tool`&&e.output===void 0)?`interrupted`:`done`)}var Wi,Gi=G(`#turns`);function Ki(e){Wi=e,Si(e,{el:Gi,append:J,scroll:qi})}function qi(e=!1){let t=Gi.scrollHeight-Gi.scrollTop-Gi.clientHeight<80;(e||t)&&(Gi.scrollTop=Gi.scrollHeight)}var Ji={user:{row:`border-l-indigo-500 bg-indigo-50`,body:`text-neutral-900`},assistant:{row:`border-l-transparent`,body:`text-neutral-900`},error:{row:`border-l-red-400 bg-red-50`,body:`text-red-700`},system:{row:`border-l-cyan-500 bg-cyan-50`,body:`text-neutral-800`}};function J(e,t,n=!1){Ai();let r=Ji[e],i=K(`div`,`group relative border-l-2 px-5 ${Gi.lastElementChild?.dataset.kind===e?`pt-1 pb-2.5`:`mt-1.5 py-2.5`} ${r.row}`);i.dataset.kind=e;let a=K(`div`,`whitespace-pre-wrap break-words ${r.body}`,t);if(n&&ea(a,t),i.append(a),e===`user`){let e=K(`button`,`absolute right-2 top-1 hidden h-6 w-6 items-center justify-center rounded text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700 group-hover:flex pointer-coarse:flex`);e.title=`Edit — resends from here; this message and later turns leave the context`,e.setAttribute(`aria-label`,`Edit message`),e.innerHTML=`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-3.5 w-3.5"><path d="m10.7 2.3 3 3L6 13H3v-3l7.7-7.7zM9.3 3.7l3 3"/></svg>`,e.onclick=()=>Xi(i,a),i.append(e)}return Gi.append(i),qi(),a}function Yi(e,t){let n=t.kind===`task-callback`?`Task callback`:t.kind===`task-message`?t.messageKind===`decision`?`Decision needed`:`Task ${t.messageKind.replace(`_`,` `)}`:`Agent task input`;Ai();let r=K(`div`,`mt-1.5 border-l-2 border-l-cyan-500 bg-cyan-50 px-5 py-2.5`);r.dataset.kind=`system`;let i=K(`div`,`mb-1 flex items-center gap-2 text-[11px] font-semibold uppercase text-cyan-800`,K(`span`,``,n));if(t.sourceSessionId&&t.sourceSessionId!==`console`){let e=K(`button`,`truncate font-mono normal-case text-cyan-700 hover:underline`,t.sourceSessionId.slice(0,12));e.title=`Open source session`,e.onclick=()=>Wi.select(t.sourceSessionId),i.append(K(`span`,`text-cyan-400`,`from`),e)}let a=K(`button`,`ml-auto flex-none font-mono normal-case text-cyan-700 hover:underline`,`run ${t.runId.slice(0,8)}`);a.onclick=()=>Wi.showTasks(t.taskId),i.append(a),t.kind===`task-message`&&t.messageKind===`decision`&&i.append(Oi(t.messageId)),r.append(i,K(`div`,`whitespace-pre-wrap break-words text-[14px] text-neutral-800`,e)),Gi.append(r),qi()}function Xi(e,t){if(Wi.sessionState()!==`idle`){J(`error`,`can't edit while streaming — stop the turn first`);return}if(e.querySelector(`textarea`))return;let n=document.createElement(`textarea`);n.value=t.textContent??``,n.className=`block w-full resize-none rounded-md border border-indigo-300 bg-white px-2 py-1 focus:outline-none`;let r=()=>{n.style.height=`auto`,n.style.height=`${Math.min(n.scrollHeight,192)}px`};n.oninput=r,t.classList.add(`hidden`),t.after(n),r(),n.focus(),n.setSelectionRange(n.value.length,n.value.length);let i=()=>{n.remove(),t.classList.remove(`hidden`)};n.onkeydown=t=>{if(!(t.isComposing||t.keyCode===229)&&(t.key===`Escape`&&i(),t.key===`Enter`&&!t.shiftKey)){t.preventDefault();let r=n.value.trim();if(!r)return i();Zi(e,r)}}}async function Zi(e,t){let n=Wi.sessionId();if(!n)return;let r=await l(`/api/sessions/${n}/turns/${[...Gi.querySelectorAll(`[data-kind="user"]`)].indexOf(e)}/edit`,{text:t});if(!r.ok){J(`error`,`edit failed: ${r.status}`);return}await Wi.reload(n)}function Qi(e,t){if(!t)return;let n=new Date(t.completedAt).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1});(e.parentElement??e).append(K(`span`,`absolute -top-2.5 right-3 z-10 hidden rounded border border-neutral-200 bg-white px-1.5 py-0.5 text-[11.5px] text-neutral-500 shadow-sm group-hover:inline`,`${n} · ${zn(t)}`))}function $i(e){for(let t of e.querySelectorAll(`pre`)){let e=t.querySelector(`code`);if(!e)continue;let n=K(`div`,`group/code relative`);t.replaceWith(n),n.append(t,Qn(`absolute right-1.5 top-1.5 cursor-pointer rounded border border-black/[0.08] bg-white/85 px-1.5 py-0.5 text-[11px] text-neutral-500 opacity-0 transition-opacity hover:bg-white hover:text-neutral-800 focus:opacity-100 group-hover/code:opacity-100 pointer-coarse:opacity-100`,()=>e.textContent??``))}}function ea(e,t,n=!1){let r=Wi.sessionId(),i=r?br(t,r):t;e.innerHTML=tt.sanitize(W.parse(i,{async:!1})),e.classList.remove(`whitespace-pre-wrap`),e.classList.add(`md`),hi(e),!n&&($i(e),Dr(e))}function ta(e,t,n,r=!1){let{text:i,suggestions:a}=Gn(t);return i?ea(e,i):a.length?ea(e,``):na(e,Wn(t)),Qi(e,n),r&&yi(e.parentElement??e,a,e=>Wi.send(`auto`,e)),e}function na(e,t){e.classList.remove(`md`,`whitespace-pre-wrap`),e.replaceChildren(K(`span`,`text-[12.5px] italic text-black/40`,t?`Stayed silent — ${t}`:`Stayed silent.`))}var ra=(e,t,n=!1)=>ta(J(`assistant`,``),e,t,n),ia=null,aa=null,oa=!1,sa=80;function ca(){if(aa){oa=!0;return}oa=!1,ia&&(ea(ia,Gn(ia.dataset.raw??``).text,!0),qi()),aa=setTimeout(()=>{aa=null,oa&&ca()},sa)}function la(){aa&&clearTimeout(aa),aa=null,oa=!1}function ua(e){ia||=J(`assistant`,``),ia.dataset.raw=(ia.dataset.raw??``)+e,ca()}function da(e=!1){if(!ia)return;let t=ia;ia=null,la(),ta(t,t.dataset.raw??``,void 0,e)}function fa(e,t){Li(`done`),ia?(e&&(ia.dataset.raw=e),Qi(ia,t)):e&&ra(e,t,!0),da(!0)}function pa(){Li(`interrupted`),da()}function ma(){Gi.replaceChildren(),ia=null,la(),ji(),vi()}function ha(e,t,n,r){let i=new Map(n.map(e=>[e.runId,e])),a=e.reduce((e,t,n)=>t.role===`assistant`?n:e,-1);for(let[n,o]of e.entries()){let s=t===`streaming`&&n===e.length-1&&(!o.text||(o.steps?.some(e=>e.kind===`tool`&&e.output===void 0)??!1));if(o.steps?.length&&Ui(o.steps,o.meta?.durationMs,s),!o.text&&!o.images?.length)continue;if(o.role===`system`&&o.origin){let e=o.origin.kind===`task-message`?[o.origin.runId]:o.origin.runIds??[o.origin.runId];for(let t of e){let e=i.get(t);e&&(ki(e),i.delete(t))}Yi(o.text,o.origin);continue}let c=o.role===`assistant`?ra(o.text,o.meta,t===`idle`&&n===a):J(o.role,o.text);for(let e of o.images??[])lr(c).append(ur(`/api/sessions/${r}/images/${e.ordinal}`))}for(let e of i.values())ki(e);qi(!0)}var ga=window.fetch.bind(window),_a=20,va=6e4,ya=[],ba=new Map,xa=e=>e instanceof Error?e.stack??`${e.name}: ${e.message}`:void 0;function Sa(e,t){let n=t===void 0?e:`${e}: ${String(t)}`,r=Date.now();r-(ba.get(n)??-6e4)<va||(ba.size>100&&ba.clear(),ba.set(n,r),ya=ya.filter(e=>r-e<6e4),!(ya.length>=_a)&&(ya.push(r),ga(`/api/client-log`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({message:n,stack:xa(t),view:location.hash||`/`}),keepalive:!0}).catch(()=>{}),J(`error`,n)))}function Ca(){window.__pierReporting=!0,window.addEventListener(`error`,e=>{Sa(`script error: ${e.message}`,e.error)}),window.addEventListener(`unhandledrejection`,e=>{Sa(`unhandled rejection`,e.reason)})}var wa=window.fetch.bind(window),Ta=()=>{location.assign(`/login?next=${encodeURIComponent(location.pathname+location.hash)}`)};function Ea(){window.fetch=async(...e)=>{let t=await wa(...e);return t.status===401&&Ta(),t}}function Da(e,t){if(e.readyState!==EventSource.CLOSED)return;let n=()=>Sa(`${t} stream disconnected — reload to reconnect`);wa(`/api/sessions`).then(e=>e.status===401?Ta():n(),n)}var Oa,ka=G(`#composer`),Y=G(`#input`),Aa=G(`#send`),ja=G(`#send-plane`),Ma=G(`#send-queue`),Na=G(`#stop`),Pa=G(`#queue-panel`),Fa=G(`#queue-rows`),Ia=G(`#queue-label`),La=G(`#image-strip`),Ra=G(`#attach-input`),za=!1,Ba=[],Va=[];function Ha(){Y.focus()}function Ua(e){let t=Va.indexOf(e);return t<0?!1:(Va.splice(t,1),!0)}function Wa(){Va=[]}function Ga(){let e=Oa.sessionState()===`streaming`;Aa.className=`flex h-7 w-7 flex-none cursor-pointer items-center justify-center rounded-lg ${e?`bg-amber-100 text-amber-700 hover:bg-amber-200 active:bg-amber-300`:`bg-indigo-600 text-white hover:bg-indigo-500 active:bg-indigo-700`}`,Aa.title=e?`Queue — delivered when the turn ends`:`Send`,ja.classList.toggle(`hidden`,e),Ma.classList.toggle(`hidden`,!e),Na.classList.toggle(`hidden`,!e),Na.classList.toggle(`flex`,e)}function Ka(){let e=Oa.chatVisible()&&za;Pa.classList.toggle(`hidden`,!e),Pa.classList.toggle(`flex`,e)}function qa(e,t){let n=[...e.map(e=>({mode:`steer`,text:e})),...t.map(e=>({mode:`queued`,text:e}))];za=n.length>0,Ia.textContent=n.length>1?`Queued · ${n.length}`:`Queued`,Ka(),Fa.replaceChildren(...n.map(e=>{let t=K(`li`,`flex items-start gap-2 text-[13px] leading-[18px]`);return e.mode===`steer`&&t.append(K(`span`,`flex-none rounded bg-indigo-100 px-1 py-0.5 text-[10.5px] font-semibold uppercase tracking-wide text-indigo-700`,e.mode)),t.append(K(`span`,`min-w-0 whitespace-pre-wrap break-words text-neutral-700`,e.text)),t}))}function Ja(){La.classList.toggle(`hidden`,Ba.length===0),La.classList.toggle(`flex`,Ba.length>0),La.replaceChildren(...Ba.map((e,t)=>{let n=document.createElement(`img`);n.src=`data:${e.mimeType};base64,${e.data}`,n.className=`h-16 w-16 rounded-md border border-neutral-200 object-cover`;let r=K(`button`,`absolute -right-1.5 -top-1.5 h-4 w-4 cursor-pointer rounded-full bg-neutral-700 text-[10px] leading-none text-white hover:bg-red-600`,`×`);return r.onclick=()=>{Ba.splice(t,1),Ja()},K(`div`,`relative`,n,r)}))}function Ya(e){if(!e.type.startsWith(`image/`)||Ba.length>=8)return;let t=new FileReader;t.onload=()=>{let n=t.result;Ba.push({data:n.slice(n.indexOf(`,`)+1),mimeType:e.type}),Ja()},t.readAsDataURL(e)}var Xa=(e,t)=>t?`${e}${e?` `:``}[${t} image${t>1?`s`:``}]`:e,Za=e=>`pier.draft.${e}`;function Qa(){let e=Oa.sessionId();e&&(Y.value.trim()?localStorage.setItem(Za(e),Y.value):localStorage.removeItem(Za(e)))}function $a(e){Y.value=localStorage.getItem(Za(e))??``,eo(),Ba=[],Ja()}function eo(){Y.style.height=`auto`,Y.style.height=`${Math.min(Y.scrollHeight,192)}px`}async function to(e,t){let n=(t??Y.value).trim(),r=t===void 0?Ba:[],i=Oa.sessionId();if(!n&&r.length===0||!i)return;let a=Oa.sessionState()===`idle`&&e===`auto`;if(t===void 0&&(Y.value=``,eo(),Qa(),Ba=[],Ja()),a?Oa.setState(`streaming`):Ga(),a||e===`steer`){Va.push(Xa(n,r.length));let e=J(`user`,n);for(let t of r)lr(e).append(ur(`data:${t.mimeType};base64,${t.data}`));qi(!0)}let o=await l(`/api/sessions/${i}/messages`,{text:n,mode:e,images:r.length?r:void 0});o.ok||(J(`error`,`send failed: ${o.status}`),await Oa.reload(i))}async function no(e){let t=Oa.sessionId();if(!t)return;qa([],[]);let n=await l(`/api/sessions/${t}/queue/deliver`,{mode:e});n.ok||J(`error`,`queue ${e} failed: ${n.status}`)}async function ro(){let e=Oa.sessionId();if(!e)return;let t=await fetch(`/api/sessions/${e}/queue/recall`,{method:`POST`});if(!t.ok)return;let{messages:n}=await t.json();n.length&&(Y.value=[Y.value.trim(),...n].filter(Boolean).join(`
71
+ `),eo(),Qa(),Y.focus()),qa([],[])}function io(e){Oa=e,Na.onclick=()=>{let e=Oa.sessionId();e&&fetch(`/api/sessions/${e}/abort`,{method:`POST`})},G(`#queue-steer`).onclick=()=>void no(`steer`),G(`#queue-restart`).onclick=()=>void no(`restart`),G(`#queue-recall`).onclick=()=>void ro(),ka.onsubmit=e=>{e.preventDefault(),to(`auto`)},Y.oninput=()=>{eo(),Qa()};let t=!matchMedia(`(pointer: coarse)`).matches;Y.onkeydown=e=>{e.isComposing||e.keyCode===229||t&&e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),to(`auto`))},Y.onpaste=e=>{for(let t of e.clipboardData?.items??[]){let e=t.kind===`file`?t.getAsFile():null;e&&Ya(e)}let t=e.clipboardData?.getData(`text/plain`)??``,n=t.trim();!n||n===t||(e.preventDefault(),Y.setRangeText(n,Y.selectionStart??0,Y.selectionEnd??0,`end`),eo(),Qa())},Gi.ondragover=e=>e.preventDefault(),Gi.ondrop=e=>{e.preventDefault();for(let t of e.dataTransfer?.files??[])Ya(t)},G(`#attach`).onclick=()=>Ra.click(),Ra.onchange=()=>{for(let e of Ra.files??[])Ya(e);Ra.value=``},Ga()}var ao=`pier.notify`,oo=G(`#notify-toggle`),so=null,co=localStorage.getItem(ao)===`1`,lo=()=>`Pier`,uo=new Set,fo=()=>co&&Notification.permission===`granted`;function po(){oo.classList.toggle(`bg-indigo-50`,fo()),oo.classList.toggle(`text-indigo-600`,fo()),oo.title=fo()?`Notifying when a turn finishes — click to mute`:`Notify me when a turn finishes`}async function mo(){co=!co&&await Notification.requestPermission()===`granted`,localStorage.setItem(ao,co?`1`:`0`),po()}function ho(e,t){if(t===`streaming`){uo.add(e);return}uo.delete(e)&&(!fo()||!so||!document.hidden||so.showNotification(`Turn complete`,{body:lo(e),tag:e,data:{url:`/#/session/${encodeURIComponent(e)}`}}))}function go(e){if(lo=e,!(`Notification`in window)||!(`serviceWorker`in navigator)){oo.classList.add(`hidden`);return}navigator.serviceWorker.register(`/sw.js`).then(e=>so=e,()=>oo.classList.add(`hidden`)),oo.onclick=()=>void mo(),po()}var _o=null;function vo(e){_o&&!_o.contains(e.target)&&xo()}function yo(e){e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),xo())}function bo(e){_o&&!_o.contains(e.target)&&xo()}function xo(){_o&&=(document.removeEventListener(`pointerdown`,vo,!0),document.removeEventListener(`keydown`,yo,!0),window.removeEventListener(`scroll`,bo,!0),window.removeEventListener(`resize`,xo),_o.remove(),null)}var So=()=>window.innerWidth<640;function Co(e,t){xo();let n=So();if(_o=K(`div`,`fixed z-50 rounded-lg border border-neutral-200 bg-white py-1 shadow-lg ${n?`inset-x-2 bottom-2 max-h-[70dvh] overflow-y-auto pb-[calc(0.25rem+env(safe-area-inset-bottom))] text-[16px]`:`min-w-52 max-w-80 text-[13px]`}`),_o.append(t),(e.closest(`dialog[open]`)??document.body).append(_o),!n){let t=e.getBoundingClientRect();_o.style.top=`${Math.max(8,Math.min(t.bottom+4,window.innerHeight-_o.offsetHeight-8))}px`,_o.style.left=`${Math.max(8,Math.min(t.left,window.innerWidth-_o.offsetWidth-8))}px`}document.addEventListener(`pointerdown`,vo,!0),document.addEventListener(`keydown`,yo,!0),window.addEventListener(`scroll`,bo,!0),window.addEventListener(`resize`,xo)}function wo(e){let t=K(`button`,`flex w-full cursor-pointer items-center gap-2 px-3 text-left hover:bg-neutral-100 active:bg-neutral-100 ${So()?`py-3`:`py-1.5`}`,K(`span`,`flex-none w-3 text-indigo-600`,e.checked?`✓`:``),K(`span`,`truncate`,e.label));return e.hint&&t.append(K(`span`,`ml-auto flex-none text-[11.5px] text-neutral-400`,e.hint)),t.onclick=()=>e.onSelect(),t}function To(e,t){Co(e,K(`div`,``,...t.map(wo)))}var Eo=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`],Do=`text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,X=(e,t=!1)=>Oo(e,`${t?`btn btn-primary`:`btn`} text-[12.5px]`),Oo=(e,t=``)=>{let n=K(`button`,t,e);return n.type=`button`,n};function ko(e,t,n){let r=X(e);return t&&r.classList.add(`bg-neutral-200`),r.onclick=n,r}function Ao(e,t,...n){let r=K(`section`,`rounded-xl border border-neutral-200 bg-white`),i=K(`div`,`rounded-t-xl border-b border-neutral-200/70 bg-neutral-50/70 px-4 py-2.5`);return i.append(K(`h2`,`text-[13px] font-semibold text-neutral-700`,e)),t&&i.append(K(`p`,`mt-0.5 text-[11.5px] leading-snug text-neutral-500`,t)),r.append(i,K(`div`,`flex flex-col gap-4 px-4 py-3.5`,...n)),r}function Z(e,t,n={}){let r=K(`div`,`flex flex-col gap-1.5`),i=K(`div`,`flex items-center gap-1.5`,K(`span`,Do,e));return n.help&&i.append(n.help),r.append(i,t),n.hint&&r.append(K(`span`,`text-[11.5px] leading-snug text-neutral-400`,n.hint)),r}var jo=`w-full rounded-lg border border-neutral-300 bg-white px-2.5 py-1.5 text-[12.5px] transition-colors placeholder:text-neutral-400 focus:border-indigo-400 focus:ring-2 focus:ring-indigo-100 focus:outline-none`,Mo=(e,t,n,r=!1)=>{let i=document.createElement(`input`);return i.className=r?`${jo} font-mono`:jo,i.value=e,i.placeholder=t,i.oninput=()=>n(i.value),i},No=(e=``,t=`text`)=>{let n=document.createElement(`input`);return n.type=t,n.className=jo,n.value=e,n},Po=(e,t)=>{let n=document.createElement(`select`);return n.className=jo,n.append(...e.map(([e,t])=>new Option(e,t))),n.value=t,n},Fo=(e=``,t=4)=>{let n=document.createElement(`textarea`);return n.className=`${jo} resize-y font-mono`,n.value=e,n.rows=t,n.spellcheck=!1,n};function Io(e,t,n,r,i){let a=document.createElement(`input`);a.type=`checkbox`,a.className=`peer sr-only`,a.checked=n,a.onchange=()=>r(a.checked);let o=K(`span`,`relative h-4 w-7 flex-none rounded-full bg-neutral-300 transition-colors after:absolute after:left-0.5 after:top-0.5 after:h-3 after:w-3 after:rounded-full after:bg-white after:shadow-sm after:transition-transform peer-checked:bg-indigo-600 peer-checked:after:translate-x-3 peer-focus-visible:ring-2 peer-focus-visible:ring-indigo-200`),s=K(`label`,`flex cursor-pointer gap-2.5 ${e?`items-start`:`items-center`}`);if(s.append(a,o),e){let n=K(`span`,`flex items-center gap-1.5`,K(`span`,`text-[13px] text-neutral-700`,e));i&&n.append(i);let r=K(`span`,`flex min-w-0 flex-col`,n);t&&r.append(K(`span`,`text-[11.5px] leading-snug text-neutral-400`,t)),s.append(r)}return s}var Lo={idle:`text-neutral-400`,saving:`text-neutral-400`,saved:`text-green-700`,failed:`text-red-600`};function Q(e,t,n){e.className=`text-[11.5px] ${Lo[t]}`,e.textContent=n}var Ro=(e,t)=>K(`span`,`flex-none rounded-full px-1.5 py-px text-[10px] font-medium uppercase tracking-wide ring-1 ${t}`,e),zo=e=>K(`p`,`rounded-lg border border-dashed border-neutral-200 px-3 py-4 text-center text-[12.5px] text-neutral-400`,e);function Bo(e,t,n=`left`){let r=K(`span`,`group relative inline-flex`),i=Oo(`?`,`flex h-4 w-4 cursor-help items-center justify-center rounded-full border border-neutral-300 text-[9px] font-bold text-neutral-400 transition-colors group-hover:border-indigo-400 group-hover:text-indigo-500`),a=K(`span`,`absolute ${n===`right`?`right-0`:`left-0`} top-full z-20 hidden w-[min(27rem,calc(100vw-3rem))] pt-1.5 group-hover:block`),o=K(`span`,`flex flex-col gap-2 rounded-xl border border-neutral-200 bg-white p-3.5 text-[12px] font-normal normal-case leading-[1.55] tracking-normal text-neutral-600 shadow-xl`);o.append(K(`span`,`text-[12.5px] font-semibold text-neutral-800`,e));let s=K(`ol`,`flex list-decimal flex-col gap-1.5 pl-4`);for(let e of t){let t=K(`li`,`marker:text-neutral-400`);t.append(typeof e==`string`?Xn(e):e),s.append(t)}return o.append(s),a.append(o),i.onclick=()=>{let e=a.classList.contains(`hidden`);a.classList.toggle(`hidden`,!e),a.classList.toggle(`block`,e),i.classList.toggle(`border-indigo-400`,e),i.classList.toggle(`text-indigo-500`,e)},r.append(i,a),r}var Vo=(e,t)=>K(`span`,`flex flex-col gap-1`,Xn(e),t),Ho=e=>`${e.provider}/${e.id}`,Uo=`pier.modelFavorites`,Wo=e=>`${Ho(e)}@${e.thinking}`;function Go(){try{let e=JSON.parse(localStorage.getItem(Uo)??`[]`);return Array.isArray(e)?e.filter(e=>{let t=e;return!!t&&typeof t==`object`&&typeof t.provider==`string`&&typeof t.id==`string`&&typeof t.thinking==`string`}):[]}catch{return[]}}function Ko(e){let t=K(`button`,`flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-1.5 text-left`,K(`span`,`w-3 flex-none text-indigo-600`,e.checked?`✓`:``),K(`span`,`truncate`,e.label));e.hint&&t.append(K(`span`,`ml-auto flex-none text-[11.5px] text-neutral-400`,e.hint)),t.onclick=()=>e.onSelect();let n=K(`button`,`flex-none cursor-pointer px-2 py-1.5 leading-none ${e.starred?`text-amber-500`:`text-neutral-300 opacity-0 hover:text-amber-500 group-hover/row:opacity-100`}`,e.starred?`★`:`☆`);return n.title=e.starred?`Unstar`:`Star this model + reasoning`,n.onclick=t=>{t.stopPropagation(),e.onStar()},K(`div`,`group/row flex w-full items-center hover:bg-neutral-100`,t,n)}function qo({models:e,current:t,thinkingLevel:n,thinkingLevels:r,onPick:i,onThinkingPick:a}){let o=Go(),s=n,c=K(`div`,`flex w-72 flex-col`),l=K(`div`,`flex flex-col gap-2 border-b border-neutral-200 px-2 py-2`),u=document.createElement(`input`);if(u.type=`search`,u.placeholder=`Search models`,u.setAttribute(`aria-label`,`Search models`),u.className=`w-full rounded-md border border-neutral-300 px-2 py-1.5 text-[12.5px] focus:border-indigo-400 focus:outline-none`,l.append(u),r.length){let e=K(`label`,`flex items-center gap-2 px-1 text-[12px] text-neutral-500`),t=document.createElement(`select`);t.className=`ml-auto rounded-md border border-neutral-300 bg-white px-2 py-1 text-[12px] text-neutral-700 focus:border-indigo-400 focus:outline-none`,t.setAttribute(`aria-label`,`Reasoning level`);for(let e of r){let n=document.createElement(`option`);n.value=e,n.textContent=In(e),t.append(n)}t.value=n,t.onchange=()=>{s=t.value,h(u.value),a(s)},e.append(K(`span`,`font-medium`,`Reasoning`),t),l.append(e)}let d=e=>{let t=Wo(e);o=o.some(e=>Wo(e)===t)?o.filter(e=>Wo(e)!==t):[...o,e],localStorage.setItem(Uo,JSON.stringify(o)),h(u.value)},f=(e,t)=>o.some(n=>Wo(n)===`${Ho(e)}@${t}`),p=K(`div`,`max-h-72 overflow-y-auto py-1`),m=n=>{let r=new Map(e.map(e=>[Ho(e),e])),a=o.map(e=>({f:e,model:r.get(Ho(e))})).filter(e=>!!e.model&&(!n||Ho(e.model).toLowerCase().includes(n)));a.length&&p.append(K(`div`,`px-3 pb-0.5 pt-1 text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,`Starred`),...a.map(({f:e,model:n})=>Ko({label:n.id,hint:In(e.thinking),checked:!!t&&Ho(t)===Ho(n)&&s===e.thinking,starred:!0,onSelect:()=>i(n,e.thinking),onStar:()=>d(e)})),K(`div`,`my-1 border-t border-neutral-100`))},h=n=>{p.replaceChildren();let r=n.trim().toLowerCase();m(r);let a=new Map;for(let t of e){if(r&&!Ho(t).toLowerCase().includes(r))continue;let e=a.get(t.provider);e?e.push(t):a.set(t.provider,[t])}if(!a.size){p.append(K(`div`,`px-3 py-2 text-[12.5px] text-neutral-400`,e.length?`No matching models.`:`No models available.`));return}for(let[e,n]of a){let a=n.some(e=>!!t&&Ho(t)===Ho(e)),o=document.createElement(`details`);o.open=a||r.length>0;let c=K(`summary`,`flex cursor-pointer select-none items-center gap-1.5 px-3 py-1 text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400 hover:bg-neutral-100`,K(`span`,`chev`,`▶`),K(`span`,`truncate`,e),K(`span`,`ml-auto flex-none normal-case text-neutral-300`,String(n.length)));o.append(c,...n.map(e=>Ko({label:e.id,checked:!!t&&Ho(t)===Ho(e),starred:f(e,s),onSelect:()=>i(e),onStar:()=>d({provider:e.provider,id:e.id,thinking:s})}))),p.append(o)}};return u.oninput=()=>h(u.value),h(``),c.append(l,p),queueMicrotask(()=>u.focus()),c}function Jo(e,t,n,r){let i=Oo(t.model?`${t.model.id}${t.thinking?` · ${In(t.thinking)}`:``}`:t.thinking?`Pi default · ${In(t.thinking)}`:`Pi default`,`${jo} flex cursor-pointer items-center gap-1.5 truncate text-left hover:bg-neutral-50 ${t.model?`text-neutral-700`:`text-neutral-400`}`);return i.title=t.model?`${t.model.provider}/${t.model.id}`:`Whatever the project and Pi pick`,i.onclick=()=>{let e=qo({models:n,current:t.model,thinkingLevel:t.thinking??`medium`,thinkingLevels:[...Eo],onPick:(e,n)=>{xo(),r({model:e,thinking:n??t.thinking})},onThinkingPick:e=>r({...t,thinking:e})}),a=Oo(`Pi default`,`w-full cursor-pointer px-3 py-1.5 text-left text-[12.5px] text-neutral-500 hover:bg-neutral-100`);a.onclick=()=>{xo(),r({model:null,thinking:null})};let o=K(`div`,`flex flex-col`);o.append(e,K(`div`,`border-t border-neutral-200`),a),Co(i,o)},Z(e,i)}var Yo=async e=>{let t=e?.startsWith(`/`)?`?path=${encodeURIComponent(e)}`:``,n=await fetch(`/api/fs/dirs${t}`);return n.ok?await n.json():null},Xo=(e,t,n)=>{let r=Oo(e,`flex w-full cursor-pointer items-center gap-1.5 px-3 py-1 text-left ${t}`);return r.onclick=n,r};function Zo(e,t){let n=K(`div`,`flex-none border-t border-neutral-200`),r=Xo(`+ New folder`,`text-[12px] text-neutral-500 hover:bg-neutral-100`,()=>{let r=document.createElement(`input`);r.className=`w-full border-0 bg-transparent px-3 py-1 font-mono text-[12.5px] focus:outline-none`,r.placeholder=`folder-name`;let i=K(`p`,`hidden px-3 pb-1 text-[11.5px] text-red-600`);r.onkeydown=async n=>{if(n.key!==`Enter`)return;n.preventDefault();let a=await l(`/api/fs/dirs`,{path:e,name:r.value});if(!a.ok){i.textContent=(await a.json()).error??`could not create`,i.classList.remove(`hidden`);return}t((await a.json()).path)},n.replaceChildren(r,i),r.focus()});return n.append(r),n}function Qo(e,t){let n=Oo(`Browse…`,`flex-none cursor-pointer rounded-md border border-neutral-300 px-2 py-1 text-[12px] text-neutral-600 hover:bg-neutral-100`),r=n=>{e.value=n,e.dispatchEvent(new Event(`input`,{bubbles:!0})),t?.(n),xo()};async function i(e){let t=await Yo(e);if(!t)return;let a=K(`div`,`flex max-h-80 w-80 flex-col`),o=Oo(`Use`,`ml-auto flex-none cursor-pointer rounded bg-indigo-600 px-2 py-0.5 text-[11.5px] text-white`);o.onclick=()=>r(t.path);let s=K(`div`,`flex flex-none items-center gap-2 border-b border-neutral-200 px-3 py-1.5`,K(`span`,`truncate font-mono text-[11.5px] text-neutral-500`,t.path),o),c=K(`div`,`min-h-0 flex-1 overflow-y-auto py-0.5 text-[12.5px]`);t.parent&&c.append(Xo(`../`,`font-mono text-neutral-500 hover:bg-neutral-100`,()=>void i(t.parent)));for(let e of t.entries)c.append(Xo(e,`truncate hover:bg-neutral-100`,()=>void i(`${t.path}/${e}`.replace(`//`,`/`))));t.entries.length||c.append(K(`p`,`px-3 py-1.5 text-[12px] text-neutral-400`,`No sub-folders.`)),a.append(s,c,Zo(t.path,e=>void i(e))),Co(n,a)}return n.onclick=()=>void i(e.value.trim()||void 0),n}function $o(e,t,n){let r=document.createElement(`input`);return r.className=`min-w-0 flex-1 rounded-md border border-neutral-300 bg-white px-2 py-1 font-mono text-[12.5px] focus:border-indigo-400 focus:outline-none`,r.value=e,r.placeholder=t,r.oninput=()=>n(r.value),{el:K(`div`,`flex items-center gap-1.5`,r,Qo(r,n)),input:r}}var es,ts=G(`#project-tree`),ns=G(`#archive-dialog`),rs=G(`#archive-list`),is=G(`#archive-search`),as=G(`#archive-count`),os=G(`#new-dialog`),ss=G(`#known-projects`),cs=`pier.collapsedProjects`,ls=new Set(us());function us(){try{let e=JSON.parse(localStorage.getItem(cs)??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}catch{return[]}}function ds(e,t){t?ls.add(e):ls.delete(e),localStorage.setItem(cs,JSON.stringify([...ls]))}function fs(e){let t=new Map;for(let n of e){let e=t.get(n.cwd);e?e.push(n):t.set(n.cwd,[n])}return t}var ps=`ml-auto hidden flex-none rounded px-1 leading-none text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700 group-hover:block pointer-coarse:block`;function ms(e){let[t,n]=e.state===`streaming`?[`bg-green-500 animate-pulse`,`working…`]:e.unread?[`bg-amber-500`,`turn finished — not viewed yet`]:e.activeRuns>0?[`bg-sky-500`,`${e.activeRuns} subagent${e.activeRuns>1?`s`:``} running`]:[`bg-neutral-300`,`idle`],r=K(`span`,`h-2 w-2 flex-none rounded-full ${t}`);return r.title=n,r}async function hs(e,t){e.pinned=t,vs(),es.onPinsChanged(),(await l(`/api/sessions/${e.id}/pin`,{pinned:t})).ok||(e.pinned=!t,vs(),es.onPinsChanged())}function gs(e){let t=K(`li`,`group flex cursor-pointer items-center gap-1.5 py-1.5 pl-6 pr-3 hover:bg-neutral-100 ${e.id===es.currentId()?`bg-indigo-50 hover:bg-indigo-50`:``}`),n=K(`button`,ps,`⋯`);return n.title=`Session actions`,n.onclick=t=>{t.stopPropagation(),es.sessionMenu(n,e)},t.append(ms(e),K(`span`,`truncate`,e.title??`untitled`),n),t.onclick=()=>es.select(e.id),t}function _s(e,t){let n=K(`span`,`ml-auto flex-none text-[11px] text-neutral-400 group-hover:hidden`,String(t.length)),r=K(`button`,ps,`+`);r.title=`New session in ${e}`,r.onclick=t=>{t.preventDefault(),t.stopPropagation(),es.createSession(e)};let{el:i,summary:a}=$n(`border-b border-neutral-200/70`,[K(`span`,`truncate font-mono text-[11px] font-semibold uppercase tracking-wide text-neutral-500`,qn(e)),n,r]);a.className+=` group px-3 py-1.5 hover:bg-neutral-100`,a.title=e,i.open=!ls.has(e),i.ontoggle=()=>ds(e,!i.open);let o=K(`ul`,`pb-1`);return o.append(...t.map(gs)),i.append(o),i}function vs(){let e=es.sessions(),t=fs(e.filter(e=>e.pinned));ts.replaceChildren(...t.size?[...t].map(([e,t])=>_s(e,t)):[K(`p`,`px-3 py-2 text-[12.5px] leading-snug text-neutral-400`,`No projects yet — create a session, or pin one from All sessions.`)]),as.textContent=String(e.length),ss.replaceChildren(...[...fs(e).keys()].map(e=>{let t=document.createElement(`option`);return t.value=e,t})),ns.open&&bs()}function ys(e){let t=K(`button`,`flex-none rounded px-1.5 py-0.5 text-[11.5px] ${e.pinned?`bg-indigo-50 text-indigo-600`:`text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700`}`,e.pinned?`pinned`:`pin`);t.title=e.pinned?`Remove from Projects`:`Pin to Projects`,t.onclick=t=>{t.stopPropagation(),hs(e,!e.pinned)};let n=K(`li`,`flex cursor-pointer items-center gap-2 px-3 py-1.5 hover:bg-neutral-100`,ms(e),K(`span`,`truncate`,e.title??`untitled`),K(`span`,`ml-auto flex-none text-[11px] text-neutral-400`,Kn(e.createdAt)),t);return n.onclick=()=>{ns.close(),es.select(e.id)},n}function bs(){let e=is.value.trim().toLowerCase(),t=es.sessions().filter(t=>!e||`${t.title??``} ${t.cwd}`.toLowerCase().includes(e)),n=[];for(let[e,r]of fs(t)){let t=K(`li`,`truncate px-3 pb-0.5 pt-2 font-mono text-[11px] font-semibold uppercase tracking-wide text-neutral-500`,qn(e));t.title=e,n.push(t,...r.map(ys))}rs.replaceChildren(...n.length?n:[K(`li`,`px-3 py-3 text-[13px] text-neutral-400`,`No matching sessions.`)])}function xs(e){es=e,G(`#new-cwd-row`).append(Qo(G(`#new-cwd`))),G(`#new-session`).onclick=()=>{G(`#new-cwd`).value=``,os.showModal()},G(`#new-cancel`).onclick=()=>os.close(),G(`#new-form`).onsubmit=()=>void es.createSession(G(`#new-cwd`).value.trim()),G(`#open-archive`).onclick=()=>{is.value=``,bs(),ns.showModal(),is.focus()},G(`#archive-close`).onclick=()=>ns.close(),is.oninput=()=>bs()}var Ss;function Cs(e){Ss=e}var ws=G(`#chat-title`),Ts=G(`#chat-menu`),Es=G(`#session-meta`),Ds=null,Os=null,ks=null;function As(){Ds=null,Os=null,ks=null,Is()}function js(e,t,n){Ds=e,Os=t,ks=n,Ns()}function Ms(e){Os&&(Os={...Os,tokens:e},Is())}function Ns(){let e=Ss.currentSession();ws.textContent=e?e.title??`Untitled session`:`no session`,Ts.classList.toggle(`hidden`,!e),e&&(Ts.onclick=()=>Hs(Ts,e)),Is(),Ss.syncBar()}var Ps=(e,t)=>Math.min(100,Math.round(e/t.contextWindow*100)),Fs=e=>e.tokens===null?`?/${Ln(e.contextWindow)}`:`${Ln(e.tokens)}/${Ln(e.contextWindow)} · ${100-Ps(e.tokens,e)}% left`;function Is(){let e=(e,t,n)=>K(e,`flex-none rounded px-1.5 py-px font-mono ${t}`,n),t=Os,n=t?.tokens??null,r=Ss.currentId(),i=!Ss.currentSession()?.title,a=i?``:`hidden group-hover:inline`,o=[];if(Ds&&r){let t=e(`button`,`${n===null?``:a} cursor-pointer bg-indigo-50 font-medium text-indigo-700 hover:bg-indigo-100`,Ds.id);t.title=`Change model`,t.onclick=()=>void Rs(t,r),o.push(t)}if(ks&&ks!==`off`&&o.push(e(`span`,`${a} bg-neutral-100 text-neutral-500`,`reasoning ${ks}`)),t&&n!==null){let r=Ps(n,t),s=e(`span`,r>=90?`bg-red-50 text-red-700`:r>=70?`bg-amber-50 text-amber-700`:`bg-neutral-100 text-neutral-500`,``);i?s.textContent=Fs(t):s.append(K(`span`,`group-hover:hidden`,`${Ln(n)} tok`),K(`span`,a,Fs(t))),o.push(s)}Es.replaceChildren(...o),Es.classList.toggle(`hidden`,o.length===0),Es.classList.toggle(`flex`,o.length>0)}function Ls(e,t){let n=[[`Title`,t.title??`untitled`],[`Directory`,t.cwd],[`Session`,t.id]];t.id===Ss.currentId()&&(n.push([`Model`,Ds?.id??`—`]),n.push([`Context`,Os?Fs(Os):`—`]));let r=K(`div`,`flex max-w-80 flex-col gap-1.5 px-3 py-2`);for(let[e,t]of n){let n=K(`div`,`flex items-center gap-1.5`,K(`span`,`text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,e),Qn(`cursor-pointer text-[10.5px] uppercase tracking-wide text-neutral-400 opacity-0 hover:text-neutral-700 focus:opacity-100 group-hover:opacity-100 pointer-coarse:opacity-100`,()=>t));r.append(K(`div`,`group flex flex-col`,n,K(`span`,`break-all font-mono text-[12px] text-neutral-700`,t)))}Co(e,r)}async function Rs(e,t){let[n,r]=await Promise.all([fetch(`/api/sessions/${t}/models`),fetch(`/api/sessions/${t}/thinking`)]);if(!n.ok||!r.ok)return;let i=await n.json(),a=await r.json();Co(e,qo({models:i,current:t===Ss.currentId()?Ds:null,thinkingLevel:a.level,thinkingLevels:a.levels,onPick:(e,n)=>{xo(),zs(t,e,n)},onThinkingPick:e=>void Vs(t,e)}))}async function zs(e,t,n){await Bs(e,t)&&n&&await Vs(e,n)}async function Bs(e,t){let n=Ds;e===Ss.currentId()&&(Ds=t,Ns());let r=await l(`/api/sessions/${e}/model`,t);if(!r.ok){let{error:t}=await r.json().catch(()=>({}));return e===Ss.currentId()&&(Ds=n,Ns()),J(`error`,`model change failed: ${t??r.status}`),!1}let{model:i}=await r.json();return e===Ss.currentId()&&i&&(Ds=i,Ns()),!0}async function Vs(e,t){let n=await l(`/api/sessions/${e}/thinking`,{level:t});if(!n.ok){J(`error`,`reasoning change failed: ${n.status}`);return}let{level:r}=await n.json();e===Ss.currentId()&&(ks=r,Is())}function Hs(e,t){To(e,[{label:`Session info`,onSelect:()=>Ls(e,t)},{label:t.pinned?`Remove from Projects`:`Pin to Projects`,checked:t.pinned,onSelect:()=>{xo(),hs(t,!t.pinned)}},{label:`Model`,hint:t.id===Ss.currentId()?Ds?.id??`…`:``,onSelect:()=>void Rs(e,t.id)}])}var Us=G(`#sidebar`),Ws=G(`#drawer-scrim`),Gs=G(`#mobile-title`),Ks=G(`#mobile-menu`);function qs(){delete Us.dataset.open,Ws.classList.add(`hidden`)}function Js(e,t){Gs.textContent=e,Ks.classList.toggle(`hidden`,!t)}function Ys(e){G(`#drawer-toggle`).onclick=()=>{if(Us.dataset.open!==void 0)return qs();Us.dataset.open=``,Ws.classList.remove(`hidden`)},Ws.onclick=qs,Ks.onclick=()=>e.sessionMenu(Ks)}var Xs=(e,t={})=>{let n=document.createElementNS(`http://www.w3.org/2000/svg`,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n},Zs=e=>e===null?`-`:Jn(Date.now()-e);function Qs(e,t,n){let r=`sessions`,i=`active`,a={sessions:[],runs:[],messages:[]};async function o(){let t=await fetch(`/api/activity?scope=${i}`);if(!t.ok){e.replaceChildren(K(`p`,`p-4 text-[13px] text-red-600`,`Failed to load activity: ${t.status}`));return}a=await t.json(),s()}function s(){let t=K(`header`,`flex h-10 flex-none items-center gap-2 border-b border-neutral-200 px-4 max-md:hidden`,K(`span`,`font-medium`,`Activity`)),a=K(`div`,`tabstrip`);if(a.append(ko(`Sessions`,r===`sessions`,()=>{r=`sessions`,i===`active`?s():(i=`active`,o())}),ko(`Dependencies`,r===`dependencies`,()=>{r=`dependencies`,s()}),ko(`Tasks`,!1,()=>n())),r===`dependencies`){let e=K(`div`,`ml-auto flex gap-1 max-md:ml-0 max-md:w-full`);e.append(ko(`Active`,i===`active`,()=>{i=`active`,o()}),ko(`Last hour`,i===`recent`,()=>{i=`recent`,o()})),a.append(e)}let u=K(`div`,`min-h-0 flex-1 overflow-auto`);r===`sessions`?c(u):l(u),e.replaceChildren(t,a,u)}function c(e){let n=document.createElement(`table`);n.className=`w-full min-w-[38rem] table-fixed text-left text-[12.5px]`,n.innerHTML=`<thead class="bg-neutral-50 text-[10.5px] uppercase text-neutral-400"><tr>
72
+ <th class="w-[34%] px-4 py-2 font-semibold">Session</th>
73
+ <th class="w-[38%] px-2 py-2 font-semibold">Project</th>
74
+ <th class="w-[14%] px-2 py-2 font-semibold">State</th>
75
+ <th class="px-2 py-2 font-semibold">Duration</th></tr></thead>`;let r=document.createElement(`tbody`);for(let e of a.sessions){let n=document.createElement(`tr`);n.className=`cursor-pointer border-b border-neutral-100 hover:bg-neutral-50`,n.onclick=()=>t(e.id),n.append(K(`td`,`px-4 py-2.5`,K(`div`,`truncate font-medium`,e.title??`Untitled session`),K(`div`,`truncate font-mono text-[11px] text-neutral-400`,e.id)),K(`td`,`truncate px-2 py-2.5 font-mono text-[11.5px]`,e.cwd||`-`),K(`td`,`px-2 py-2.5`,K(`span`,`mr-2 inline-block h-2 w-2 rounded-full ${e.state===`streaming`?`animate-pulse bg-green-500`:`bg-neutral-300`}`),e.state),K(`td`,`px-2 py-2.5 text-neutral-500`,Zs(e.stateSince))),r.append(n)}n.append(r),e.append(n),a.sessions.length||e.append(K(`p`,`p-4 text-[13px] text-neutral-400`,`No active sessions.`))}function l(e){let r=new Map,i=[],o=(e,t,n)=>{r.has(e)||r.set(e,{id:e,label:t,session:n})};for(let e of a.sessions)o(e.id,e.title??e.id.slice(0,10),!0);for(let e of a.runs){let t=e.invokedBySessionId??`scheduler`,n=e.targetSessionId??(e.context.definition.action.type===`bash`?`process:${e.id}`:`task:${e.id}`);o(t,t===`scheduler`?`Scheduler`:t.slice(0,10),t!==`scheduler`),o(n,e.targetSessionId?e.targetSessionId.slice(0,10):e.context.definition.action.type===`bash`?`Bash process`:`Task`,e.targetSessionId!==null),i.push({from:t,to:n,run:e,kind:`invocation`}),e.callbackSessionId&&(o(e.callbackSessionId,e.callbackSessionId.slice(0,10),!0),i.push({from:n,to:e.callbackSessionId,run:e,kind:`callback`}))}for(let e of a.messages){if(!e.fromSessionId||!e.toSessionId)continue;let t=a.runs.find(t=>t.id===e.runId);t&&(o(e.fromSessionId,e.fromSessionId.slice(0,10),e.fromSessionId!==`console`),o(e.toSessionId,e.toSessionId.slice(0,10),e.toSessionId!==`console`),i.push({from:e.fromSessionId,to:e.toSessionId,run:t,kind:`message`}))}if(!r.size){e.append(K(`p`,`p-4 text-[13px] text-neutral-400`,`No active dependencies.`));return}let s=Math.max(420,Math.min(680,r.size*90)),c=Xs(`svg`,{viewBox:`0 0 900 ${s}`,class:`min-h-[26.25rem] w-full`}),l=Xs(`defs`),u=Xs(`marker`,{id:`activity-arrow`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`6`,markerHeight:`6`,orient:`auto-start-reverse`});u.append(Xs(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,fill:`#a3a3a3`})),l.append(u),c.append(l);let d=new Map,f=[...r.values()],p=Math.min(900,s)*.34;f.forEach((e,t)=>{let n=-Math.PI/2+t*Math.PI*2/f.length;d.set(e.id,{x:450+Math.cos(n)*p,y:s/2+Math.sin(n)*p})});for(let e of i){let t=d.get(e.from),r=d.get(e.to),i=Xs(`line`,{x1:String(t.x),y1:String(t.y),x2:String(r.x),y2:String(r.y),stroke:e.kind===`callback`?`#0891b2`:e.kind===`message`?`#d97706`:`#a3a3a3`,"stroke-width":e.kind===`invocation`?`1.5`:`2`});e.kind===`callback`&&i.setAttribute(`stroke-dasharray`,`6 5`),e.kind===`message`&&i.setAttribute(`stroke-dasharray`,`2 5`),i.setAttribute(`marker-end`,`url(#activity-arrow)`),i.classList.add(`cursor-pointer`),i.onclick=()=>n(e.run.taskId),c.append(i)}for(let e of f){let n=d.get(e.id),r=Xs(`g`,{transform:`translate(${n.x},${n.y})`});e.session&&r.classList.add(`cursor-pointer`),r.onclick=()=>{e.session&&t(e.id)};let i=Xs(`circle`,{r:`38`,fill:e.session?`#ffffff`:`#f5f5f5`,stroke:e.session?`#737373`:`#d4d4d4`}),a=Xs(`text`,{"text-anchor":`middle`,"dominant-baseline":`middle`,"font-size":`11`,fill:`#404040`});a.textContent=e.label.length>14?`${e.label.slice(0,14)}…`:e.label,r.append(i,a),c.append(r)}e.append(c,K(`div`,`flex gap-5 border-t border-neutral-200 px-4 py-2 text-[11px] text-neutral-500`,K(`span`,``,`Solid: task invocation`),K(`span`,`text-cyan-700`,`Dashed: callback`),K(`span`,`text-amber-700`,`Dotted: supervisor/control`)))}let u=Yn(e,e=>{e===`dependencies`?r=`dependencies`:e===`sessions`&&(r=`sessions`,i=`active`),o()});return Object.assign(u,{refresh(){u.visible&&o()}})}function $s(e,t){let n=[],r=``,i=K(`header`,`sticky top-0 z-30 flex h-10 items-center gap-3 border-b border-neutral-200 bg-white px-4`,K(`span`,`font-medium max-md:hidden`,`Boards`)),a=K(`div`,`px-4 py-5`);e.append(K(`div`,`min-h-0 flex-1 overflow-y-auto`,i,a));async function o(e,t){let n=await l(`/api/boards/${e}`,{public:t},`PATCH`);n.ok||(r=`Could not change ${e}: ${n.status}`,await f())}async function s(e){let t=await fetch(`/api/boards/${e}`,{method:`DELETE`});t.ok||(r=`Could not delete ${e}: ${t.status}`),await f()}function c(e){let n=K(`div`,`group flex flex-col gap-1 border-b border-neutral-200/70 px-1 py-2.5 last:border-b-0`),r=document.createElement(`a`);r.className=`truncate font-medium text-neutral-800 hover:text-indigo-700`,r.href=`/boards/${e.slug}/`,r.target=`_blank`,r.rel=`noreferrer`,r.textContent=e.title;let i=K(`div`,`flex items-center gap-2`,r,K(`span`,`flex-none font-mono text-[11.5px] text-neutral-400`,e.slug)),a=document.createElement(`input`);a.type=`checkbox`,a.className=`peer sr-only`,a.checked=e.public,a.onchange=()=>{e.public=a.checked,o(e.slug,a.checked)};let c=K(`label`,`ml-auto flex flex-none cursor-pointer items-center gap-1.5 text-[11.5px] text-neutral-500`,a,K(`span`,`relative h-4 w-7 flex-none rounded-full bg-neutral-300 transition-colors after:absolute after:left-0.5 after:top-0.5 after:h-3 after:w-3 after:rounded-full after:bg-white after:shadow-sm after:transition-transform peer-checked:bg-indigo-600 peer-checked:after:translate-x-3 peer-focus-visible:ring-2 peer-focus-visible:ring-indigo-200`),K(`span`,``,`Public`)),l=Oo(`Delete`,`flex-none cursor-pointer text-[11.5px] text-neutral-400 opacity-0 transition-opacity hover:text-red-600 group-hover:opacity-100`);l.title=`Renames the folder on disk; nothing is erased`,l.onclick=()=>void s(e.slug),i.append(c,l),n.append(i);let u=K(`div`,`flex flex-wrap items-center gap-x-3 gap-y-1 text-[11.5px] text-neutral-500`);e.description&&u.append(K(`span`,`min-w-0 truncate`,e.description)),u.append(K(`span`,`flex-none text-neutral-400`,Kn(Date.parse(e.updatedAt))));for(let n of e.sessions){let e=Oo(n.slice(0,8),`flex-none cursor-pointer font-mono text-indigo-600 hover:underline`);e.title=`Open session ${n}`,e.onclick=()=>t(n),u.append(e)}if(e.public){let t=K(`span`,`flex-none font-mono text-neutral-400`,`/p/${e.slug}/`);t.title=`Public URL — anyone who can reach Pier can read this`,u.append(t)}return n.append(u),n}let u=[{title:`Public`,hint:`Readable at /p/<slug>/ by anyone who can reach Pier.`,wanted:!0},{title:`Private`,hint:`Reachable from the Console only.`,wanted:!1}];function d(){let e=K(`div`,`mx-auto flex max-w-3xl flex-col`);n.length===0&&e.append(K(`p`,`rounded-xl border border-dashed border-neutral-300 px-4 py-6 text-center text-[12.5px] text-neutral-500`,`No boards yet. Ask an agent to build one — it writes a folder under ~/.pier/boards.`));for(let{title:t,hint:r,wanted:i}of u){let a=n.filter(e=>e.public===i);if(a.length===0)continue;let o=K(`section`,`mb-6`);o.append(K(`h2`,`text-[13px] font-semibold text-neutral-700`,t)),o.append(K(`p`,`mb-1 text-[11.5px] leading-snug text-neutral-500`,r));let s=K(`div`,`rounded-xl border border-neutral-200 bg-white px-3`);s.append(...a.map(c)),o.append(s),e.append(o)}a.replaceChildren(...r?[K(`p`,`mb-3 text-[13px] text-red-600`,r)]:[],e)}async function f(){let e=await fetch(`/api/boards`);if(!e.ok)return r=`Could not load boards: ${e.status}`,d();n=await e.json(),d(),r=``}let p=Yn(e,()=>void f());return window.addEventListener(`focus`,()=>{p.visible&&f()}),p}var ec={display_information:{name:`Pier`,description:`Coding agent sessions in Slack threads`,background_color:`#262626`},features:{bot_user:{display_name:`Pier`,always_online:!1},app_home:{messages_tab_enabled:!0,messages_tab_read_only_enabled:!1}},oauth_config:{scopes:{bot:[`chat:write`,`reactions:write`,`channels:history`,`channels:read`,`groups:history`,`groups:read`,`im:history`,`im:write`,`mpim:history`,`mpim:read`,`mpim:write`,`users:read`,`files:read`]}},settings:{event_subscriptions:{bot_events:[`message.channels`,`message.groups`,`message.im`,`message.mpim`]},interactivity:{is_enabled:!0},socket_mode_enabled:!0,token_rotation_enabled:!1}},tc=()=>`https://api.slack.com/apps?new_app=1&manifest_json=${encodeURIComponent(JSON.stringify(ec))}`,nc=()=>Bo(`Getting a bot token`,[`Open [@BotFather](https://t.me/BotFather) in Telegram.`,"Send `/newbot`, pick a display name, then a username ending in `bot`.","Copy the token it prints (`123456789:AA…`) and paste it here.","Send `/setprivacy` → `Disable` if the bot should see plain group messages. Left enabled it only ever receives mentions, replies and commands — the usual reason a bot looks dead in a group.","Send `/setjoingroups` → `Enable`, then add the bot to your group or forum."]),rc=(e=`left`)=>Bo(`Enabling topics on a group`,["In Telegram open the group → `Edit` → turn on `Topics`. Owner only; group size no longer matters.","The group becomes a forum supergroup and the existing chat becomes its `General` topic.","Make the bot an admin with `Manage Topics`. That is the one right topic creation needs — without it Pier logs the failure and answers in General instead.","Send one message in the group so Pier discovers it, then enable it under `Chats` below.","After that, a message in General opens its own topic with its own session. A reply, or anything starting with `/`, stays where it was sent."],e);function ic(){let e=X(`Create Slack app ↗`,!0);e.classList.add(`mt-1`,`w-fit`),e.onclick=()=>window.open(tc(),`_blank`,`noreferrer`);let t=Qn(`btn w-fit text-[12.5px]`,()=>JSON.stringify(ec,null,2));return Bo(`Creating a Slack app`,[Vo(`Opens Slack with every scope, event and Socket Mode already filled in. Pick your workspace → Create.`,e),"`Install to Workspace` → allow. Then `OAuth & Permissions` → copy the bot token (`xoxb-…`) into the field above.","`Basic Information` → `App-Level Tokens` → `Generate` with scope `connections:write`. Paste that `xapp-…` token below. The manifest cannot mint this one for you.","In Slack, invite the bot where you want it: `/invite @Pier`. It answers in threads only, so it never adds noise to the channel.",Vo(`Prefer to paste it yourself? Create the app from a manifest and use this:`,t)])}var ac=()=>Bo(`What agent access allows`,["Gives agent sessions a `slack` tool: read a channel's history for a time range, read one thread, and post a message.",`Pier performs every call itself — the bot token is never given to the agent, and Slack's own membership rules still apply, so the bot reaches only channels it was invited to.`,`Reads are answered from Pier's local cache where possible; only a range that has never been fetched goes to Slack.`,`This includes sessions started by tasks and subagents. Switch it off if an agent should never post to your workspace on its own.`]),oc=(e=`left`)=>Bo(`How Slack threads work here`,[`Pier never posts in a channel's main flow. A message in the channel is answered in *its own thread*; a message in a thread is answered in that thread.`,`Each thread is its own Pi session, so one channel hosts many parallel sessions.`,`The same applies in a DM: every new message you send there starts its own thread and its own session. Reply *inside* a thread to continue that conversation.`,"Inside a thread Pier already owns, no `@mention` is needed — continuing that thread is addressing it.","Commands are bare words after a mention: `@bot settings`, `@bot stop`, `@bot bind <code>`. Slack's client swallows an unregistered `/command` before it ever reaches an app."],e),sc=[[`telegram`,`Telegram`],[`slack`,`Slack`],[`lark`,`Lark`]],cc=(e,t)=>K(`span`,`flex items-center gap-1.5 text-[13px] text-neutral-400`,K(`span`,``,e),t),lc={dm:`bg-sky-50 text-sky-700 ring-sky-200`,group:`bg-neutral-100 text-neutral-600 ring-neutral-200`,forum:`bg-violet-50 text-violet-700 ring-violet-200`};function uc(e){let t=`telegram`,n=null,r=[],i=K(`div`,`ml-auto flex items-center gap-1.5 text-[11.5px]`),a=K(`header`,`sticky top-0 z-30 flex h-10 items-center gap-3 border-b border-neutral-200 bg-white px-4`,K(`span`,`font-medium max-md:hidden`,`Channels`),i),o=K(`div`,`sticky top-10 z-30 flex items-center gap-1 border-b border-neutral-200 bg-white px-4 py-2`),s=K(`div`,`px-4 py-5`);e.append(K(`div`,`min-h-0 flex-1 overflow-y-auto`,a,o,s));function c(){o.replaceChildren(...sc.map(([e,r])=>{let i=e===t,a=Oo(``,`flex cursor-pointer items-center gap-1.5 rounded-md px-2.5 py-1 text-[13px] transition-colors ${i?`bg-indigo-50 font-medium text-indigo-700`:`text-neutral-600 hover:bg-neutral-100`}`),o=i&&n?n.enabled&&!!n.token:!1;return a.append(K(`span`,`h-1.5 w-1.5 flex-none rounded-full ${o?`bg-emerald-500`:`bg-neutral-300`}`),K(`span`,``,r)),a.onclick=()=>{u&&_(),t=e,v()},a}))}let u,d=!1,f=null;function p(e){if(i.replaceChildren(),e!==`clean`){if(i.className=`ml-auto flex items-center gap-1.5 text-[11.5px] ${Lo[e]}`,e===`saving`)i.append(K(`span`,`spinner`),K(`span`,``,`Saving…`));else if(e===`saved`)i.append(K(`span`,``,`✓`),K(`span`,``,`Saved`)),setTimeout(()=>{i.textContent?.includes(`Saved`)&&p(`clean`)},2e3);else{let e=Oo(`Retry`,`cursor-pointer underline`);e.onclick=_,i.append(K(`span`,``,`⚠`),K(`span`,``,`Save failed`),e)}}}function m(){p(`saving`),clearTimeout(u),u=setTimeout(_,500)}let h=e=>t=>{e(t),m()};async function g(e){d=!0,p(`saving`);try{p((await l(`/api/channels/${e.platform}`,e.config,`PUT`)).ok?`saved`:`failed`)}catch{p(`failed`)}finally{d=!1;let e=f;f=null,e&&g(e)}}function _(){if(clearTimeout(u),u=void 0,!n)return;let e={platform:t,config:n};d?f=e:g(e)}async function v(){if(!r.length){let e=await fetch(`/api/models`);e.ok&&(r=await e.json())}let e=await fetch(`/api/channels/${t}`);if(!e.ok){n=null,c(),s.replaceChildren(zo(`Failed to load: ${e.status}`));return}n=await e.json(),p(`clean`),w()}function y(e){let n=t===`slack`,r=Mo(e.token,n?`xoxb-…`:`123456789:AA…`,h(t=>e.token=t),!0),i=Mo(e.appToken,`xapp-…`,h(t=>e.appToken=t),!0),a=$o(e.cwd,`(pier process cwd)`,h(t=>e.cwd=t));return Ao(`Connection`,n?`Pier connects over Socket Mode; no public URL or webhook needed.`:`Pier polls Telegram for updates; no public URL or webhook needed.`,Io(`Enabled`,`Start the adapter when Pier boots.`,e.enabled,h(t=>{e.enabled=t,c()})),Z(`Bot token`,r,{hint:`Stored locally, shown masked once saved.`,help:t===`telegram`?nc():n?ic():void 0}),...n?[Z(`App-level token`,i,{hint:`Opens the Socket Mode connection. Needs connections:write.`}),Io(`Agent access`,`Let agent sessions read channel history and post through the slack tool. Off makes the tool refuse; inbound messages are unaffected.`,e.agentTool,h(t=>e.agentTool=t),ac())]:[],Z(`Default working directory`,a.el,{hint:`Where sessions this channel opens start.`}))}function b(e){return Ao(`Defaults for new chats`,`Copied into a group the first time the bot sees it; changing them here never touches a group that already exists. DMs are always bound-users-only.`,Io(`Require mention in groups`,`Ignore group messages that do not @mention or reply to the bot.`,e.requireMention,h(t=>e.requireMention=t)),Io(`Require bound user`,`Only users bound with a code below can drive the agent.`,e.requireBind,h(t=>e.requireBind=t)),...t===`slack`?[cc(`Thread mode: always on`,oc())]:[Io(`Topic mode`,`In a forum group, each new request opens its own topic and its own session.`,e.topicMode,h(t=>e.topicMode=t),rc())],Jo(`Model & reasoning`,e,r,h(t=>{e.model=t.model,e.thinking=t.thinking,w()})))}function x(e){let n=K(`span`,`font-mono text-[15px] font-semibold tracking-widest`),r=K(`div`,`hidden items-center gap-2 rounded-lg bg-indigo-50 px-3 py-2 text-[12.5px] text-indigo-800`,n,K(`span`,`text-[11.5px] text-indigo-500`,`DM the bot /bind <code> · expires in 10 min`)),i=X(`Generate bind code`);i.onclick=async()=>{let e=await fetch(`/api/channels/${t}/bind-code`,{method:`POST`});if(!e.ok)return;let{code:i}=await e.json();n.textContent=i,r.classList.replace(`hidden`,`flex`)};let a=K(`div`,`flex flex-col`);e.users.length||a.append(zo(`No bound users yet.`));for(let n of e.users){let e=Oo(`Remove`,`cursor-pointer text-[11.5px] text-neutral-400 opacity-0 transition-opacity hover:text-red-600 group-hover:opacity-100`);e.onclick=async()=>{await fetch(`/api/channels/${t}/users/${encodeURIComponent(n.id)}`,{method:`DELETE`}),await v()},a.append(K(`div`,`group flex items-center gap-2.5 border-b border-neutral-100 py-2 last:border-0`,K(`span`,`flex h-6 w-6 flex-none items-center justify-center rounded-full bg-neutral-100 text-[11px] font-semibold text-neutral-500`,(n.name[0]??`?`).toUpperCase()),K(`span`,`min-w-0 flex-1 truncate text-[13px] text-neutral-700`,n.name),K(`span`,`flex-none font-mono text-[11.5px] text-neutral-400`,n.id),e))}return Ao(`Bound users`,`A code is single-use and expires; redeeming it in a DM binds that account.`,a,K(`div`,`flex flex-col gap-2`,i,r))}function S(e,n){let i=K(`div`,`rounded-xl border px-3.5 py-3 transition-colors ${n.enabled?`border-neutral-200 bg-white`:`border-neutral-200 bg-neutral-50/60`}`),a=K(`div`,`flex items-center gap-2`,K(`span`,`min-w-0 flex-1 truncate text-[13px] font-medium ${n.enabled?`text-neutral-800`:`text-neutral-400`}`,n.name||n.id),Ro(n.kind,lc[n.kind]),K(`span`,`flex-none font-mono text-[11px] text-neutral-400`,n.id)),o=Io(``,``,n.enabled,h(e=>{n.enabled=e,w()}));o.classList.add(`flex-none`,`items-center`),a.append(o);let s=K(`div`,`mt-3 flex flex-wrap items-center gap-x-6 gap-y-2`);n.kind===`dm`?s.append(K(`span`,`text-[13px] text-neutral-400`,t===`slack`?`Direct message · bound users only, mention not applicable`:`Direct message · bound users only, mention and topics not applicable`)):s.append(Io(`Require mention`,``,n.requireMention,h(e=>n.requireMention=e)),Io(`Require bind`,``,n.requireBind,h(e=>n.requireBind=e)),t===`slack`?cc(`Thread mode: always on`,oc(`right`)):n.kind===`forum`?Io(`Topic mode`,``,n.topicMode,h(e=>n.topicMode=e),rc(`right`)):cc(`Topic mode: forum groups only`,rc(`right`)));let c=K(`div`,`mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2`,Z(`Working directory`,$o(n.cwd,``,h(e=>n.cwd=e)).el),Jo(`Model & reasoning`,n,r,h(e=>{n.model=e.model,n.thinking=e.thinking,w()})));return i.append(a,s,c),i}function C(e){let n=K(`div`,`flex flex-col gap-2.5`);return e.chats.length?n.append(...e.chats.map(t=>S(e,t))):n.append(zo(`None yet. Chats appear here after the bot sees a message in them.`)),Ao(t===`slack`?`Channels`:`Chats`,`Discovered from inbound traffic — no platform reliably lists every chat a bot is in.`,n)}function w(){if(!n)return;if(c(),!n.supported){s.replaceChildren(zo(`${sc.find(([e])=>e===t)?.[1]} is planned — no adapter yet.`));return}let e=K(`div`,`mx-auto flex max-w-3xl flex-col gap-4`);e.append(y(n),b(n),x(n),C(n)),s.replaceChildren(e)}return Yn(e,()=>void v(),()=>{u&&_()})}function dc(e,t){let n=`global`,r=null,i=document.createElement(`select`);i.className=`w-full rounded-md border border-neutral-300 bg-white px-2 py-1 text-[12.5px] focus:border-indigo-400 focus:outline-none`,i.onchange=()=>{n=i.value,r=null,y.clear(),m()};let a=K(`div`,`flex flex-none flex-col gap-1 border-b border-neutral-200 px-3 pb-2.5 pt-2`);a.append(K(`span`,`text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,`Scope`),i);let o=K(`header`,`flex h-10 flex-none items-center gap-3 border-b border-neutral-200 px-4 max-md:hidden`);o.append(K(`span`,`font-medium`,`Configuration`));let s=K(`div`,`min-h-0 flex-1 overflow-y-auto py-1`),c=K(`nav`,`flex w-64 flex-none flex-col border-r border-neutral-200 text-[13px]`);c.append(a,s);let d=K(`div`,`flex min-w-0 flex-1 flex-col`),f=K(`div`,`flex min-h-0 flex-1`);f.append(c,d),e.append(o,f);let p=(e=``)=>`?scope=${encodeURIComponent(n)}${e}`;async function m(){let e=await fetch(`/api/config${p()}`);if(!e.ok){x(null),C(`failed to load config: ${e.status}`);return}x(await e.json()),r||S()}function h(e){return K(`div`,`px-3 pb-0.5 pt-2.5 text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,e)}let g=()=>{let e=K(`span`,`flex-none rounded bg-neutral-100 px-1 text-[10px] font-semibold uppercase tracking-wide text-neutral-500`,`link`);return e.title=`Reached through a symlink`,e};function _(e,t,n,r,i=0,a=!1){let o=K(`button`,`flex w-full cursor-pointer items-center gap-1.5 py-1 pr-3 text-left hover:bg-neutral-100 ${t?`bg-indigo-50 hover:bg-indigo-50`:``} ${n?`text-neutral-400`:``}`);return o.append(K(`span`,`truncate`,e)),a&&o.append(g()),o.style.paddingLeft=`${20+i*14}px`,o.title=e,o.onclick=r,o}function v(e){let t={files:[],dirs:new Map,link:!0};for(let n of e){let e=n.name.split(`/`),r=t;for(let t of e.slice(0,-1)){let e=r.dirs.get(t);e||r.dirs.set(t,e={files:[],dirs:new Map,link:!0}),e.link&&=n.link,r=e}r.files.push({name:e[e.length-1],link:n.link})}return t}let y=new Set;function b(e,t,n,r,i,a){let o=[];for(let[s,c]of t.dirs){let t=n?`${n}/${s}`:s,l=`${e}:${t}`,u=document.createElement(`details`);u.open=y.has(l),u.ontoggle=()=>u.open?y.add(l):y.delete(l);let d=K(`summary`,`flex cursor-pointer select-none items-center gap-1 truncate py-1 pr-3 hover:bg-neutral-100`);d.style.paddingLeft=`${20+r*14}px`,d.title=t,d.append(K(`span`,`chev`,`▶`),K(`span`,`truncate text-neutral-600`,s)),c.link&&d.append(g()),u.append(d,...b(e,c,t,r+1,i,a)),o.push(u)}for(let s of t.files){let t={type:`resource`,kind:e,name:n?`${n}/${s.name}`:s.name};o.push(_(s.name,i(t),!1,()=>a(t),r,s.link))}return o}function x(e){if(!e){s.replaceChildren();return}let t=e=>JSON.stringify(e)===JSON.stringify(r),n=t=>{r=t,x(e),t.type===`file`?T(t.name):E(t.kind,t.name)},i=[h(`Files`)];for(let r of e.files){let e={type:`file`,name:r.name};i.push(_(r.name,t(e),!r.exists,()=>n(e)))}for(let r of[`extensions`,`skills`]){i.push(h(`${r} (read-only)`));let a=e.resources[r];a.length||i.push(K(`p`,`py-1 pl-5 pr-3 text-[12.5px] text-neutral-400`,`none`)),i.push(...b(r,v(a),``,0,t,n))}s.replaceChildren(...i)}function S(){d.replaceChildren(K(`p`,`px-4 py-3 text-[13px] text-neutral-400`,`Select a file to edit, or browse extensions and skills.`))}function C(e){d.replaceChildren(K(`p`,`px-4 py-3 text-[13px] text-red-600`,e))}let w=(e,...t)=>K(`div`,`flex flex-none items-center gap-3 border-b border-neutral-200 px-4 py-2`,K(`span`,`font-mono text-[12.5px] text-neutral-500`,e),...t);async function T(e){let t=await fetch(`/api/config/files/${encodeURIComponent(e)}${p()}`);if(!t.ok)return C(`failed to load ${e}: ${t.status}`);let{content:n}=await t.json(),r=K(`span`,`text-[11.5px] text-neutral-400`,``),i=K(`button`,`btn btn-primary ml-auto text-[12.5px]`,`Save`),a=document.createElement(`textarea`);a.className=`block min-h-0 flex-1 resize-none bg-white p-4 font-mono text-[13px] leading-relaxed focus:outline-none`,a.spellcheck=!1,a.value=n;let o=async()=>{Q(r,`saving`,`saving…`);let t=await l(`/api/config/files/${encodeURIComponent(e)}${p()}`,{content:a.value},`PUT`);t.ok?Q(r,`saved`,`saved — applies to new sessions`):Q(r,`failed`,await u(t,`save failed`))};i.onclick=()=>void o(),a.onkeydown=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),o())},a.oninput=()=>{Q(r,`idle`,`unsaved changes`)},d.replaceChildren(w(e,r,i),a),a.focus()}async function E(e,t){let n=await fetch(`/api/config/resource${p(`&kind=${e}&name=${encodeURIComponent(t)}`)}`);if(!n.ok)return C(`failed to load ${t}: ${n.status}`);let{content:r}=await n.json();d.replaceChildren(w(t,K(`span`,`ml-auto text-[11px] uppercase tracking-wide text-neutral-400`,`read-only`)),K(`pre`,`min-h-0 flex-1 overflow-auto whitespace-pre-wrap p-4 font-mono text-[12.5px]`,r))}return Yn(e,()=>{i.replaceChildren(new Option(`Global (~/.pier/pi)`,`global`),...t().map(e=>new Option(`${qn(e)} — ${e}`,e))),[...i.options].some(e=>e.value===n)||(n=`global`),i.value=n,m()})}var fc=[[`instance`,`Instance`],[`security`,`Security`]];function pc(e){let t=`instance`,n=K(`header`,`sticky top-0 z-30 flex h-10 items-center gap-3 border-b border-neutral-200 bg-white px-4`,K(`span`,`font-medium max-md:hidden`,`Settings`)),r=K(`div`,`sticky top-10 z-30 flex items-center gap-1 border-b border-neutral-200 bg-white px-4 py-2`),i=K(`div`,`px-4 py-5`);e.append(K(`div`,`min-h-0 flex-1 overflow-y-auto`,n,r,i));function a(){r.replaceChildren(...fc.map(([e,n])=>{let r=Oo(n,`cursor-pointer rounded-md px-2.5 py-1 text-[13px] transition-colors ${e===t?`bg-indigo-50 font-medium text-indigo-700`:`text-neutral-600 hover:bg-neutral-100`}`);return r.onclick=()=>{t=e,w()},r}))}let o=No();o.placeholder=`https://pier.example.com`,o.autocomplete=`off`;let s=K(`span`,`text-[11.5px]`,``),c=X(`Save`,!0);async function d(){Q(s,`saving`,`saving…`);let e=await l(`/api/settings`,{publicUrl:o.value},`PUT`);if(!e.ok)return Q(s,`failed`,await u(e,`Could not save`));let{publicUrl:t}=await e.json();o.value=t,Q(s,`saved`,t?`Saved — boards link as ${t}/p/<slug>/`:`Cleared.`)}c.onclick=()=>void d(),o.onkeydown=e=>{e.key===`Enter`&&d()};let f=Ao(`Public URL`,`Where this Pier is reached from outside — the proxy's address, not the port it listens on.`,Z(`Base URL`,o,{hint:`Agents read it to hand you a clickable board link instead of a path. Nothing here changes what Pier serves; leave it empty if Pier is only reachable locally.`}),K(`div`,`flex items-center gap-3`,c,s)),p=No(``,`password`),m=No(``,`password`),h=No(``,`password`);for(let e of[p,m,h])e.autocomplete=`off`;let g=K(`span`,`text-[11.5px]`,``),_=X(`Change password`,!0);async function v(){if(m.value!==h.value)return Q(g,`failed`,`The two new passwords differ.`);Q(g,`saving`,`changing…`);let e=await l(`/api/password`,{current:p.value,next:m.value});if(!e.ok)return Q(g,`failed`,await u(e,`Could not change the password`));for(let e of[p,m,h])e.value=``;Q(g,`saved`,`Changed. Every other signed-in browser has to sign in again.`)}_.onclick=()=>void v(),h.onkeydown=e=>{e.key===`Enter`&&v()};let y=K(`div`,`mx-auto flex max-w-2xl flex-col gap-6`,f,Ao(`Password`,`One shared password guards every page and API route. Changing it signs out every other browser.`,Z(`Current password`,p),Z(`New password`,m,{hint:`At least 10 characters.`}),Z(`Repeat new password`,h),K(`div`,`flex items-center gap-3`,_,g)));function b(){g.textContent=``,(async()=>{let e=await fetch(`/api/settings`);if(!e.ok)return Q(s,`failed`,await u(e,`Could not load settings`));o.value=(await e.json()).publicUrl,s.textContent=``})()}let x=K(`div`,`mx-auto flex max-w-2xl flex-col gap-6`);async function S(){let e=await fetch(`/api/secrets`);if(!e.ok){x.replaceChildren(zo(await u(e,`Could not load key status`)));return}C(await e.json())}function C(e,t){let n=e.state===`locked`,r=K(`span`,`text-[11.5px]`,``);t&&Q(r,`saved`,t);let i=[K(`div`,`flex items-center gap-2`,Ro(e.state,n?`bg-red-50 text-red-700 ring-red-200`:`bg-emerald-50 text-emerald-700 ring-emerald-200`),K(`span`,`text-[12.5px] text-neutral-600`,n?`Stored credentials cannot be read until the key is unlocked.`:e.mode===`vt`?`Key mode: vt:// — unlocking takes one vt approval per process start.`:`Key mode: file — the key sits raw in master.key; switch to vt:// to require an approval.`))];if(n){i.push(K(`p`,`text-[12.5px] leading-snug text-red-600`,e.reason??`No reason reported.`));let t=X(`Unlock`,!0);t.onclick=()=>{Q(r,`saving`,`unlocking… (vt mode waits on your approval)`),(async()=>{let e=await l(`/api/secrets/unlock`,{});if(!e.ok)return Q(r,`failed`,await u(e,`Could not unlock`));C(await e.json(),`Unlocked — channels are starting.`)})()},i.push(K(`div`,`flex items-center gap-3`,t,r))}else{let t=async(e,t,n)=>{if(!window.confirm(t))return;Q(r,`saving`,e===`vt`?`rotating… (vt asks for an approval)`:`rotating…`);let i=await l(`/api/secrets/rotate`,{mode:e});if(!i.ok)return Q(r,`failed`,await u(i,`Could not rotate`));C(await i.json(),n)},n=e.mode??`file`,a=X(`Rotate key`,!0);a.onclick=()=>void t(n,`Generate a new master key? Stored credentials stay valid; the old key stops working.`,`Rotated.`);let o=n===`vt`?`file`:`vt`,s=X(o===`vt`?`Switch to vt://`:`Switch to file`);s.onclick=()=>void t(o,o===`vt`?`Move the master key into vt? Every process start will then wait on a vt approval.`:`Store the master key raw in master.key? Anyone who can read the file can read every credential.`,o===`vt`?`Switched to vt:// mode.`:`Switched to file mode.`),i.push(K(`div`,`flex items-center gap-3`,a,s,r))}x.replaceChildren(Ao(`Master key`,`Seals every credential Pier stores (channel tokens, API keys). Rotating rewraps the key file; no stored data is rewritten.`,...i))}function w(){a(),t===`instance`?(i.replaceChildren(y),b()):(i.replaceChildren(x),S())}return Yn(e,w)}function mc(e,t){let n=e.map(e=>[`${e.title??`Untitled`} · ${e.cwd}`,e.id]);return t&&!n.some(([,e])=>e===t)&&n.push([`Current session · ${t}`,t]),n}function hc(e,t){let n=document.createElement(`dialog`);n.className=`m-auto w-[38.75rem] max-w-[94vw] rounded-lg border border-neutral-200 p-0 shadow-xl backdrop:bg-black/20`;let r=document.createElement(`form`);r.className=`flex max-h-[88vh] flex-col`;let i=K(`span`,`mr-auto text-[12px] text-red-600`),a=K(`header`,`flex h-11 flex-none items-center border-b border-neutral-200 px-4 font-medium`,t?`Edit task`:`New task`),o=K(`div`,`grid min-h-0 flex-1 grid-cols-2 gap-3 overflow-y-auto p-4`),s=No(t?.name??``);s.required=!0;let c=No(t?.description??``),l=No(String(t?.timeoutSeconds??900),`number`);l.min=`1`,l.max=`86400`;let u=Po([[`Manual`,`manual`],[`Scheduled`,`cron`],[`Watch`,`watch`]],t?.trigger.type??`manual`),d=Po([[`Bash`,`bash`],[`Agent`,`agent`],[`Task`,`task`]],t?.action.type??`bash`),f=Po([[`No callback`,`none`],[`Invoking session`,`origin`],[`Specific session`,`session`]],t?.callback.type??`none`),p=t?.callback.type===`session`?t.callback.sessionId:null,m=Po(mc(e.sessions(),p),p??``),h=Z(`Callback session`,m);h.classList.toggle(`hidden`,f.value!==`session`),f.onchange=()=>h.classList.toggle(`hidden`,f.value!==`session`),o.append(Z(`Name`,s),Z(`Description`,c),Z(`Trigger`,u),Z(`Action`,d),Z(`Callback`,f),h,Z(`Timeout (seconds)`,l));let g=K(`div`,`col-span-2 grid grid-cols-2 gap-3 border-t border-neutral-200 pt-3`);o.append(g);let _=()=>{g.replaceChildren();let a,o,p,h,_,v;if(u.value===`cron`)a=No(t?.trigger.type===`cron`?t.trigger.expression:`0 9 * * *`),o=No(t?.trigger.type===`cron`?t.trigger.timezone:Intl.DateTimeFormat().resolvedOptions().timeZone),g.append(Z(`Cron`,a),Z(`Timezone`,o));else if(u.value===`watch`){p=Fo(t?.trigger.type===`watch`?t.trigger.script:``,4),v=No(t?.trigger.type===`watch`?t.trigger.cwd:e.sessions()[0]?.cwd??``),h=No(String(t?.trigger.type===`watch`?t.trigger.intervalSeconds:60),`number`),_=Po([[`Continue after matches`,`repeat`],[`Stop after first match`,`once`]],t?.trigger.type===`watch`?t.trigger.mode:`repeat`);let n=Z(`Probe script (0=match, 1=no match)`,p);n.classList.add(`col-span-2`),g.append(n,Z(`Probe directory`,v),Z(`Interval (seconds)`,h),Z(`Mode`,_))}let y,b,x,S,C,w,T,E,D,O,k;if(d.value===`bash`){b=No(t?.action.type===`bash`?t.action.cwd:e.sessions()[0]?.cwd??``),y=Fo(t?.action.type===`bash`?t.action.script:``,6);let n=Z(`Bash script`,y);n.classList.add(`col-span-2`),g.append(Z(`Working directory`,b),K(`span`,``),n)}else if(d.value===`agent`){let n=e.sessions(),r=t?.action.type===`agent`?t.action:null,i=r?.session.mode===`reuse`?r.session.sessionId:``,a=mc(n,i||null);x=Po([[`Reuse session`,`reuse`],[`Fresh child per run`,`fresh`],[`Fork caller context`,`fork`]],r?.session.mode??`fresh`),S=Po(a,i||a[0]?.[1]||``),C=No((r?.session.mode===`fresh`||r?.session.mode===`fork`?r.session.cwd??``:``)||n[0]?.cwd||``),w=Fo(r?.prompt??``,6),T=Po([[`Normal project tools`,`write`],[`Read only`,`read`]],r?.launch?.capabilities??`write`),E=Po([[`Project default`,``],[`Off`,`off`],[`Low`,`low`],[`Medium`,`medium`],[`High`,`high`],[`Extra high`,`xhigh`]],r?.launch?.thinking??``),D=No(r?.launch?.model?.provider??``),O=No(r?.launch?.model?.id??``);let o=Z(`Session`,S),s=Z(`Child directory`,C),c=[Z(`Capabilities`,T),Z(`Thinking`,E),Z(`Model provider (optional)`,D),Z(`Model id (optional)`,O)],l=()=>{let e=x?.value===`reuse`;o.classList.toggle(`hidden`,!e),s.classList.toggle(`hidden`,e);for(let t of c)t.classList.toggle(`hidden`,e)};x.onchange=l,l();let u=Z(`Prompt`,w);u.classList.add(`col-span-2`),g.append(Z(`Session policy`,x),o,s,...c,u)}else k=Po(e.tasks().filter(e=>e.id!==t?.id&&!e.archived).map(e=>[e.name,e.id]),t?.action.type===`task`?t.action.taskId:``),g.append(Z(`Target task`,k));r.onsubmit=r=>{r.preventDefault();let g=u.value===`manual`?{type:`manual`}:u.value===`cron`?{type:`cron`,expression:a.value,timezone:o.value}:{type:`watch`,script:p.value,cwd:v.value,intervalSeconds:Number(h.value),mode:_.value},A=d.value===`agent`&&x.value!==`reuse`?{capabilities:T.value,...E.value?{thinking:E.value}:{},...D.value.trim()&&O.value.trim()?{model:{provider:D.value.trim(),id:O.value.trim()}}:{}}:void 0,ee=d.value===`bash`?{type:`bash`,cwd:b.value,script:y.value}:d.value===`agent`?{type:`agent`,prompt:w.value,session:x.value===`reuse`?{mode:`reuse`,sessionId:S.value}:x.value===`fork`?{mode:`fork`,...C.value.trim()?{cwd:C.value.trim()}:{}}:{mode:`fresh`,cwd:C.value},...A?{launch:A}:{}}:{type:`task`,taskId:k.value},j=f.value===`origin`?{type:`origin`}:f.value===`session`?{type:`session`,sessionId:m.value}:{type:`none`},te={name:s.value,description:c.value,trigger:g,action:ee,callback:j,timeoutSeconds:Number(l.value)};i.textContent=``,gc(t?.id,te,n,i,e.onSaved)}};u.onchange=_,d.onchange=_,_();let v=X(`Cancel`);v.onclick=()=>n.close();let y=X(`Save`,!0);y.type=`submit`;let b=K(`footer`,`flex flex-none justify-end gap-2 border-t border-neutral-200 px-4 py-3`);b.append(i,v,y),r.append(a,o,b),n.append(r),n.addEventListener(`close`,()=>n.remove()),document.body.append(n),n.showModal(),s.focus()}async function gc(e,t,n,r,i){let a=await l(e?`/api/tasks/${e}`:`/api/tasks`,t,e?`PATCH`:`POST`);if(!a.ok){r.textContent=(await a.json()).error??`Task save failed`;return}let o=await a.json(),s=`task`in o?o.task:o;n.close(),i(s.id)}var _c=e=>e===null?`-`:new Date(e).toLocaleString(),vc=e=>e.startedAt===null?`-`:Jn((e.finishedAt??Date.now())-e.startedAt);function yc(e,t,n){let r=K(`div`,`divide-y divide-neutral-100`);for(let i of t){let t=K(`button`,`grid w-full cursor-pointer grid-cols-[7.5rem_1fr_7.5rem_6.25rem] gap-3 px-4 py-2.5 text-left text-[12.5px] hover:bg-neutral-50`);t.append(K(`span`,`font-medium`,i.state),K(`span`,`truncate text-neutral-500`,_c(i.queuedAt)),K(`span`,`text-neutral-500`,i.triggerSource),K(`span`,`text-right text-neutral-500`,vc(i))),t.onclick=()=>void bc(e,i.id,r,n),r.append(t)}t.length||r.append(K(`p`,`p-4 text-[13px] text-neutral-400`,`No runs yet.`)),e.replaceChildren(r)}async function bc(e,t,n,r){let[i,a]=await Promise.all([fetch(`/api/task-runs/${t}`),fetch(`/api/task-runs/${t}/messages`)]);if(!i.ok)return;let o=await i.json(),s=a.ok?await a.json():[],c=X(`Back to runs`);c.onclick=()=>e.replaceChildren(n);let l=K(`div`,`flex items-center gap-2 border-b border-neutral-200 px-4 py-2`);if(l.append(c,K(`span`,`font-mono text-[12px] text-neutral-400`,o.id)),o.targetSessionId){let e=X(`Open session`);e.classList.add(`ml-auto`),e.onclick=()=>r.openSession(o.targetSessionId),l.append(e)}if(o.state===`queued`||o.state===`running`){let e=X(`Steer`);e.onclick=()=>void xc(d(`Steer subagent`,`/api/task-runs/${o.id}/steer`,{mode:`steer`,sourceSessionId:r.currentSessionId()},`Run control failed`),r);let t=X(`Stop`);t.onclick=()=>void r.mutate(`/api/task-runs/${o.id}/cancel`),l.append(e,t)}else if(o.targetSessionId){let e=X(`Continue`);e.onclick=()=>void xc(d(`Continue subagent`,`/api/task-runs/${o.id}/resume`,{sourceSessionId:r.currentSessionId()},`Run control failed`),r),l.append(e)}let u=K(`div`,`min-h-0 flex-1 overflow-auto`),f=K(`pre`,`whitespace-pre-wrap break-words p-4 font-mono text-[12px]`,JSON.stringify(o,null,2));if(u.append(f),s.length){let e=K(`div`,`border-t border-neutral-200`);e.append(K(`div`,`px-4 py-2 text-[11px] font-semibold uppercase text-neutral-400`,`Messages`));for(let t of s){let n=K(`div`,`grid grid-cols-[6.25rem_6.25rem_1fr] gap-3 border-t border-neutral-100 px-4 py-2 text-[12px]`);n.append(K(`span`,`font-medium`,t.kind),K(`span`,`text-neutral-500`,t.state),K(`span`,`whitespace-pre-wrap`,t.content)),e.append(n)}u.append(e)}e.replaceChildren(l,u)}async function xc(e,t){let n=await e;n.sent&&(n.error?t.onError(n.error):await t.reload())}var Sc=e=>e.trigger.type===`manual`?`Manual`:e.trigger.type===`cron`?`${e.trigger.expression} (${e.trigger.timezone})`:`Every ${e.trigger.intervalSeconds}s · ${e.trigger.mode}`,Cc=e=>e.action.type===`agent`?`Agent · ${e.action.session.mode}`:e.action.type===`bash`?`Bash`:`Task`;function wc(e,t,n,r,i){let a=[],o=[],s=null,c=`active`;async function u(){let e=await fetch(`/api/tasks?state=${c===`archived`?`archived`:`active`}${c===`subagent`?`&kind=subagent`:``}`);if(!e.ok)return d(`Failed to load tasks: ${e.status}`);a=await e.json(),o=c===`archived`||c===`subagent`?await f():a,c!==`active`&&c!==`archived`&&c!==`subagent`&&(a=a.filter(e=>e.trigger.type===c)),s?await b(s):v()}function d(t){e.replaceChildren(K(`p`,`p-4 text-[13px] text-red-600`,t))}async function f(){let e=await fetch(`/api/tasks?state=active`);return e.ok?await e.json():o}let p={sessions:t,tasks:()=>o,onSaved:e=>{s=e,u()}},m={openSession:n,currentSessionId:r,mutate:C,onError:d,reload:u};function h(e,t){let n=K(`header`,`flex h-10 flex-none items-center gap-2 border-b border-neutral-200 px-4`);if(n.append(typeof e==`string`?K(`span`,`truncate font-medium max-md:hidden`,e):e),t.length){let e=K(`div`,`ml-auto flex items-center gap-2`);e.append(...t),n.append(e)}return n}function g(){return K(`div`,`tabstrip`,ko(`Sessions`,!1,()=>i(`sessions`)),ko(`Dependencies`,!1,()=>i(`dependencies`)),ko(`Tasks`,!0,_))}function _(){s=null,v()}function v(){let t=X(`New task`,!0);t.onclick=()=>hc(p);let n=g(),r=K(`div`,`ml-auto flex flex-none items-center gap-1 pl-1 max-md:ml-0 max-md:w-full max-md:overflow-x-auto max-md:pl-0`);for(let[e,t]of[[`All`,`active`],[`Manual`,`manual`],[`Scheduled`,`cron`],[`Watching`,`watch`],[`Subagents`,`subagent`],[`Archived`,`archived`]])r.append(ko(e,c===t,()=>{c=t,s=null,u()}));n.append(r);let i=document.createElement(`table`);i.className=`w-full min-w-[52rem] table-fixed text-left text-[12.5px]`,i.innerHTML=`<thead class="sticky top-0 bg-neutral-50 text-[10.5px] uppercase text-neutral-400"><tr>
76
+ <th class="w-[24%] px-4 py-2 font-semibold">Name</th><th class="w-[10%] px-2 py-2 font-semibold">Action</th>
77
+ <th class="w-[23%] px-2 py-2 font-semibold">Trigger</th><th class="w-[17%] px-2 py-2 font-semibold">Next</th>
78
+ <th class="w-[14%] px-2 py-2 font-semibold">Last result</th><th class="px-2 py-2 font-semibold"></th></tr></thead>`;let o=document.createElement(`tbody`);for(let e of a)o.append(y(e));i.append(o),e.replaceChildren(h(`Tasks`,[t]),n,K(`div`,`min-h-0 flex-1 overflow-auto`,i))}function y(e){let t=document.createElement(`tr`);t.className=`cursor-pointer border-b border-neutral-100 hover:bg-neutral-50`,t.onclick=()=>{s=e.id,b(e.id)};let n=e.archived?`Archived`:e.enabled?`Enabled`:`Paused`;t.append(K(`td`,`truncate py-2.5 pl-4 pr-2`,K(`div`,`truncate font-medium`,e.name),K(`div`,`text-[11px] text-neutral-400`,n)));for(let n of[Cc(e),Sc(e),_c(e.nextRunAt),e.lastRun?`${e.lastRun.state} · ${vc(e.lastRun)}`:`-`])t.append(K(`td`,`truncate px-2 py-2.5`,n));let r=X(`Run`);return r.disabled=e.archived,r.onclick=t=>{t.stopPropagation(),S(e.id)},t.append(K(`td`,`px-2 py-1 text-right`,r)),t}async function b(t){let[n,r]=await Promise.all([fetch(`/api/tasks/${t}`),fetch(`/api/tasks/${t}/runs`)]);if(!n.ok||!r.ok)return d(`Failed to load task`);let i=await n.json(),a=await r.json(),o=X(`Tasks`);o.className=`cursor-pointer text-neutral-500 hover:underline`,o.onclick=_;let s=K(`span`,`flex min-w-0 items-center gap-1.5`,o,K(`span`,`text-neutral-400`,`›`),K(`span`,`truncate font-medium`,i.name)),c=X(`Run now`,!0);c.disabled=i.archived,c.onclick=()=>void S(i.id);let l=X(i.enabled?`Pause`:`Resume`);l.disabled=i.archived||i.trigger.type===`manual`,l.onclick=()=>void C(`/api/tasks/${i.id}/${i.enabled?`pause`:`resume`}`);let u=X(`Edit`);u.disabled=i.archived,u.onclick=()=>hc(p,i);let f=X(`Archive`);f.disabled=i.archived,f.onclick=()=>void C(`/api/tasks/${i.id}/archive`);let v=K(`div`,`flex flex-none gap-1 border-b border-neutral-200 px-4 py-2`),y=X(`Definition`),b=X(`Runs (${a.length})`),w=K(`div`,`min-h-0 flex-1 overflow-auto`),T=()=>{y.classList.add(`bg-neutral-200`),b.classList.remove(`bg-neutral-200`),x(w,i)};y.onclick=T,b.onclick=()=>{b.classList.add(`bg-neutral-200`),y.classList.remove(`bg-neutral-200`),yc(w,a,m)},v.append(y,b),e.replaceChildren(h(s,[c,l,u,f]),g(),v,w),a.length?b.click():T()}function x(e,t){let r=K(`div`,`grid max-w-4xl grid-cols-[9.375rem_minmax(0,1fr)] gap-x-5 gap-y-3 p-4 text-[13px]`),i=[[`Status`,t.archived?`Archived`:t.enabled?`Enabled`:`Paused`],[`Trigger`,Sc(t)],[`Action`,Cc(t)],[`Timeout`,`${t.timeoutSeconds}s`],[`Next run`,_c(t.nextRunAt)],[`Revision`,String(t.revision)],[`Created by`,t.createdBySessionId??t.creator],[`Callback`,t.callback.type===`session`?t.callback.sessionId:t.callback.type],[`Description`,t.description||`-`]];t.action.type===`agent`&&(i.push([`Session policy`,t.action.session.mode]),t.action.session.mode===`reuse`&&i.push([`Session`,t.action.session.sessionId]),t.action.session.mode===`fresh`&&i.push([`Directory`,t.action.session.cwd]),t.action.session.mode===`fork`&&i.push([`Directory`,t.action.session.cwd??`Caller project`]),t.action.launch?.model&&i.push([`Model`,`${t.action.launch.model.provider}/${t.action.launch.model.id}`]),t.action.launch?.thinking&&i.push([`Thinking`,t.action.launch.thinking]),t.action.launch?.capabilities&&i.push([`Capabilities`,t.action.launch.capabilities]),i.push([`Prompt`,t.action.prompt])),t.action.type===`bash`&&i.push([`Directory`,t.action.cwd],[`Script`,t.action.script]),t.action.type===`task`&&i.push([`Target task`,t.action.taskId]),t.trigger.type===`watch`&&i.push([`Probe`,t.trigger.script]);for(let[e,t]of i)r.append(K(`span`,`text-[11px] font-semibold uppercase text-neutral-400`,e),K(`pre`,`whitespace-pre-wrap break-words font-mono text-[12.5px]`,t));if(t.action.type===`agent`&&t.action.session.mode===`reuse`){let{sessionId:e}=t.action.session,i=X(`Open session`);i.onclick=()=>n(e),r.append(K(`span`,``,``),i)}e.replaceChildren(r)}async function S(e){let t=await l(`/api/tasks/${e}/run`,{sourceSessionId:r()});if(!t.ok)return d((await t.json()).error??`Failed to run task`);s=e,await b(e)}async function C(e){let t=await fetch(e,{method:`POST`});if(!t.ok)return d((await t.json()).error??`Task update failed`);await u()}let w=Yn(e,e=>{e&&(s=e),u()});return Object.assign(w,{refresh(e){w.visible&&(!s||!e||s===e)&&u()}})}var Tc,Ec=G(`#chat-header`),Dc=G(`#chat-title`),Oc=[Ec,Gi,G(`#composer`)],kc=!0,Ac=()=>kc,jc,Mc,Nc=[],Pc=new Map,Fc=`activity`,Ic={config:`Configuration`,channels:`Channels`,tasks:`Tasks`,activity:`Activity`,boards:`Boards`,settings:`Settings`},Lc=e=>jc.refresh(e),Rc=()=>Mc.refresh();function zc(){let e=Nc.find(e=>e.view.visible);e?Js(Ic[e.name],!1):Js(Dc.textContent??``,Tc.currentSession()!==void 0)}function Bc(e,t){(e===`tasks`||e===`activity`)&&(Fc=e),Kc({kind:`console`,name:e,arg:t}),qs(),kc=!1;for(let e of Oc)e.classList.add(`hidden`);Ka();for(let n of Nc)n.name===e?n.view.show(t):n.view.hide();for(let[t,n]of Pc)n.classList.toggle(`bg-indigo-50`,t===e||t===`activity`&&e===`tasks`);zc()}var Vc=e=>Bc(`tasks`,e);function Hc(){if(Nc.some(({view:e})=>e.visible)){for(let{view:e}of Nc)e.hide();for(let e of Pc.values())e.classList.remove(`bg-indigo-50`);kc=!0;for(let e of Oc)e.classList.remove(`hidden`);Ka(),zc(),Tc.maybeAckRead()}}var Uc=e=>e.kind===`session`?`#/session/${encodeURIComponent(e.id)}`:`#/${e.name}${e.arg?`/${encodeURIComponent(e.arg)}`:``}`;function Wc(){let[e=``,t]=location.hash.replace(/^#\/?/,``).split(`/`),n=Nc.find(t=>t.name===e)?.name;return n?{kind:`console`,name:n,arg:t?decodeURIComponent(t):void 0}:e===`session`&&t?{kind:`session`,id:decodeURIComponent(t)}:null}var Gc=!1;function Kc(e,t=!1){if(Gc)return;let n=Uc(e);location.hash!==n&&(t?history.replaceState(null,``,n):location.hash=n)}var qc=e=>Kc({kind:`session`,id:e});function Jc(){let e=Wc(),t=Tc.sessions(),n=Tc.currentId(),r=e?.kind===`session`?e.id:null,i=r&&t.some(e=>e.id===r)?r:n??(t.find(e=>e.pinned)??t[0])?.id??null;Gc=!0;try{i&&i!==n&&Tc.select(i),e?.kind===`console`?Bc(e.name,e.arg):Hc(),i||Ns()}finally{Gc=!1}e?.kind!==`console`&&i&&Kc({kind:`session`,id:i},!0)}function Yc(e){Tc=e,jc=wc(G(`#tasks-view`),()=>Tc.sessions().map(({id:e,cwd:t,title:n})=>({id:e,cwd:t,title:n})),e.select,()=>Tc.currentId(),e=>Bc(`activity`,e)),Mc=Qs(G(`#activity-view`),e.select,Vc),Nc=[{name:`config`,view:dc(G(`#config-view`),()=>[...fs(Tc.sessions()).keys()])},{name:`channels`,view:uc(G(`#channels-view`))},{name:`tasks`,view:jc},{name:`activity`,view:Mc},{name:`boards`,view:$s(G(`#boards-view`),e.select)},{name:`settings`,view:pc(G(`#settings-view`))}];for(let e of[`config`,`channels`,`activity`,`boards`,`settings`]){let t=G(`#open-${e}`);Pc.set(e,t),t.onclick=()=>Bc(e===`activity`?Fc:e)}let t=G(`#console-section`);t.open=localStorage.getItem(`pier.consoleCollapsed`)!==`1`,t.ontoggle=()=>localStorage.setItem(`pier.consoleCollapsed`,t.open?`0`:`1`),window.onhashchange=Jc}var Xc=[],$=null,Zc=`idle`,Qc=null,$c=0,el=!1;async function tl(e){let t=await l(`/api/sessions`,{cwd:e});if(!t.ok){J(`error`,`session create failed: ${t.status}`);return}let{id:n}=await t.json();await nl(),await ul(n),Ha()}async function nl(){Xc=await(await fetch(`/api/sessions`)).json(),Xc.sort((e,t)=>t.createdAt-e.createdAt),vs(),rl()}function rl(){if(document.hidden||!Ac())return;let e=Xc.find(e=>e.id===$);e?.unread&&(e.unread=!1,vs(),fetch(`/api/sessions/${e.id}/read`,{method:`POST`}))}function il(){let e=Xc.find(e=>e.id===$);return e||!$?e:{id:$,cwd:`—`,createdAt:Date.now(),state:Zc,pinned:!1,unread:!1,activeRuns:0}}function al(e,t){let n=Xc.find(t=>t.id===e);!n||n.title||!t.trim()||(n.title=t.trim().slice(0,80),vs(),Ns())}function ol(e){Zc=e;let t=Xc.find(e=>e.id===$);t&&(t.state=e),vs(),Ns(),Ga(),e===`idle`&&nl()}function sl(e){if(!(e.sessionId!==$||e.seq<=$c))switch($c=e.seq,e.type){case`turn-start`:el=!0;break;case`system-input`:da(),Yi(e.text,e.origin);break;case`task-status`:ki(e.run);break;case`user-message`:if(al(e.sessionId,e.text),Ua(e.text))break;da(),J(`user`,e.text),qi();break;case`text-delta`:ua(e.text);break;case`thinking-delta`:Vi(e.ts,e.text);break;case`tool-start`:da(),zi(e.ts,e.toolCallId,e.toolName,e.args);break;case`tool-end`:Bi(e.toolCallId,e.isError,e.output);break;case`turn-end`:el=!1,fa(e.text,e.meta),e.meta&&Ms(e.meta.tokens);break;case`queue-state`:qa(e.steering,e.followUp);break;case`error`:Ri(),J(`error`,e.message);break;case`state`:e.state===`idle`&&el&&(el=!1,pa()),e.state===`idle`&&qa([],[]),ol(e.state)}}function cl(){let e=new EventSource(`/api/events`);e.onopen=()=>void nl(),e.onerror=()=>Da(e,`Workspace`),e.onmessage=e=>{let t=JSON.parse(e.data);if(t.type===`sessions-changed`){nl();return}if(t.type===`tasks-changed`||t.type===`task-run-changed`||t.type===`task-message-changed`||t.type===`task-group-changed`){Lc(t.type===`task-run-changed`?t.taskId:void 0),Rc(),t.type===`task-run-changed`&&nl();return}if(Rc(),ho(t.sessionId,t.state),t.sessionId===$)return;let n=Xc.find(e=>e.id===t.sessionId);n&&(n.state=t.state,vs())}}function ll(e,t){Qc?.close();let n=new EventSource(`/api/sessions/${e}/events?after=${t}`);n.onmessage=e=>sl(JSON.parse(e.data)),n.onerror=()=>Da(n,`Session`),Qc=n}async function ul(e){Hc(),qs(),qc(e),e!==$&&(Qa(),$=e,Zc=Xc.find(t=>t.id===e)?.state??`idle`,$a(e),vs(),Ns(),rl(),await dl(e))}async function dl(e){Qc?.close(),ma(),qa([],[]),As(),el=!1,Wa(),$c=0;let t=await fetch(`/api/sessions/${e}/history`),n=t.ok?await t.json():null;if($===e){if(!n){J(`error`,`failed to load session: ${t.status}`);return}ha(n.turns,n.state,n.backgroundRuns,e),$c=n.lastSeq,el=n.state===`streaming`,ol(n.state),qa(n.queue.steering,n.queue.followUp),js(n.model,n.context,n.thinkingLevel),ll(e,n.lastSeq)}}Ca(),Ea();var fl=async e=>{$===e&&await dl(e)};Ki({sessionId:()=>$,sessionState:()=>Zc,select:e=>void ul(e),showTasks:Vc,send:(e,t)=>void to(e,t),reload:fl}),io({sessionId:()=>$,sessionState:()=>Zc,chatVisible:Ac,setState:ol,reload:fl}),Ys({sessionMenu:e=>{let t=il();t&&Hs(e,t)}}),go(e=>Xc.find(t=>t.id===e)?.title??`Untitled session`),xs({sessions:()=>Xc,currentId:()=>$,select:e=>void ul(e),sessionMenu:Hs,createSession:tl,onPinsChanged:Ns}),Cs({currentId:()=>$,currentSession:il,syncBar:zc}),Yc({sessions:()=>Xc,currentId:()=>$,currentSession:il,select:e=>void ul(e),maybeAckRead:rl}),G(`#version`).textContent=`v0.0.1`,document.addEventListener(`visibilitychange`,rl),cl(),nl().then(Jc);