@hpcc-js/observablehq-compiler 3.7.0 → 3.7.2

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 (40) hide show
  1. package/dist/dot-DS0nDHkc.js.map +1 -1
  2. package/dist/duckdb-ZQnOaRxt.js.map +1 -1
  3. package/dist/highlight-DMD1f-AU.js +3 -0
  4. package/dist/highlight-DMD1f-AU.js.map +1 -0
  5. package/dist/{index-dua00tZO.js → index-BEJybQP2.js} +2 -2
  6. package/dist/{index-dua00tZO.js.map → index-BEJybQP2.js.map} +1 -1
  7. package/dist/{index-Cc5s-So_.js → index-B_MA3pnO.js} +2 -2
  8. package/dist/{index-Cc5s-So_.js.map → index-B_MA3pnO.js.map} +1 -1
  9. package/dist/index-Bx3I5Hd1.js +2 -0
  10. package/dist/index-Bx3I5Hd1.js.map +1 -0
  11. package/dist/{index-CslOpeoU.js → index-DX-wW7fi.js} +2 -2
  12. package/dist/{index-CslOpeoU.js.map → index-DX-wW7fi.js.map} +1 -1
  13. package/dist/{index-BBvGdYa0.js → index-DXoy8fy6.js} +2 -2
  14. package/dist/{index-BBvGdYa0.js.map → index-DXoy8fy6.js.map} +1 -1
  15. package/dist/index-DzAd7RhG.js +2 -0
  16. package/dist/index-DzAd7RhG.js.map +1 -0
  17. package/dist/leaflet-JfyiggwS.js.map +1 -1
  18. package/dist/mapboxgl-DqywFqPd.js.map +1 -1
  19. package/dist/{md-C6Ow-w1v.js → md-DCq6DMWq.js} +2 -2
  20. package/dist/md-DCq6DMWq.js.map +1 -0
  21. package/dist/mermaid-0kvRJ9Mp.js +2 -0
  22. package/dist/mermaid-0kvRJ9Mp.js.map +1 -0
  23. package/dist/node/index.cjs +1 -1
  24. package/dist/node/index.cjs.map +1 -1
  25. package/dist/node/index.js +1 -1
  26. package/dist/node/index.js.map +1 -1
  27. package/dist/runtime.js +1 -1
  28. package/dist/runtime.js.map +1 -1
  29. package/dist/tex-BV6RAcNQ.js.map +1 -1
  30. package/dist/vega-lite-Phlb3i_g.js.map +1 -1
  31. package/package.json +4 -4
  32. package/dist/highlight-LE-BkJRm.js +0 -3
  33. package/dist/highlight-LE-BkJRm.js.map +0 -1
  34. package/dist/index-B-QesaRi.js +0 -2
  35. package/dist/index-B-QesaRi.js.map +0 -1
  36. package/dist/index-Cbl-BNqq.js +0 -2
  37. package/dist/index-Cbl-BNqq.js.map +0 -1
  38. package/dist/md-C6Ow-w1v.js.map +0 -1
  39. package/dist/mermaid-DqafRzAu.js +0 -2
  40. package/dist/mermaid-DqafRzAu.js.map +0 -1
@@ -1,2 +0,0 @@
1
- var t=Object.defineProperty,e=(e,n)=>t(e,"name",{value:n,configurable:!0});import{N as n,a as s,s as r,P as i,b as o,c as a,T as l,t as h}from"./highlight-LE-BkJRm.js";const f=class _CompositeBlock{static create(t,e,n,s,r){return new _CompositeBlock(t,e,n,s+(s<<8)+t+(e<<4)|0,r,[],[])}constructor(t,e,n,s,r,i,a){this.type=t,this.value=e,this.from=n,this.hash=s,this.end=r,this.children=i,this.positions=a,this.hashProp=[[o.contextHash,s]]}addChild(t,e){t.prop(o.contextHash)!=this.hash&&(t=new l(t.type,t.children,t.positions,t.length,this.hashProp)),this.children.push(t),this.positions.push(e)}toTree(t,n=this.end){let r=this.children.length-1;return r>=0&&(n=Math.max(n,this.positions[r]+this.children[r].length+this.from)),new l(t.types[this.type],this.children,this.positions,n-this.from).balance({makeTree:/* @__PURE__ */e((t,e,n)=>new l(s.none,t,e,n,this.hashProp),"makeTree")})}};e(f,"CompositeBlock");let d=f;var p,c;(c=p||(p={}))[c.Document=1]="Document",c[c.CodeBlock=2]="CodeBlock",c[c.FencedCode=3]="FencedCode",c[c.Blockquote=4]="Blockquote",c[c.HorizontalRule=5]="HorizontalRule",c[c.BulletList=6]="BulletList",c[c.OrderedList=7]="OrderedList",c[c.ListItem=8]="ListItem",c[c.ATXHeading1=9]="ATXHeading1",c[c.ATXHeading2=10]="ATXHeading2",c[c.ATXHeading3=11]="ATXHeading3",c[c.ATXHeading4=12]="ATXHeading4",c[c.ATXHeading5=13]="ATXHeading5",c[c.ATXHeading6=14]="ATXHeading6",c[c.SetextHeading1=15]="SetextHeading1",c[c.SetextHeading2=16]="SetextHeading2",c[c.HTMLBlock=17]="HTMLBlock",c[c.LinkReference=18]="LinkReference",c[c.Paragraph=19]="Paragraph",c[c.CommentBlock=20]="CommentBlock",c[c.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",c[c.Escape=22]="Escape",c[c.Entity=23]="Entity",c[c.HardBreak=24]="HardBreak",c[c.Emphasis=25]="Emphasis",c[c.StrongEmphasis=26]="StrongEmphasis",c[c.Link=27]="Link",c[c.Image=28]="Image",c[c.InlineCode=29]="InlineCode",c[c.HTMLTag=30]="HTMLTag",c[c.Comment=31]="Comment",c[c.ProcessingInstruction=32]="ProcessingInstruction",c[c.Autolink=33]="Autolink",c[c.HeaderMark=34]="HeaderMark",c[c.QuoteMark=35]="QuoteMark",c[c.ListMark=36]="ListMark",c[c.LinkMark=37]="LinkMark",c[c.EmphasisMark=38]="EmphasisMark",c[c.CodeMark=39]="CodeMark",c[c.CodeText=40]="CodeText",c[c.CodeInfo=41]="CodeInfo",c[c.LinkTitle=42]="LinkTitle",c[c.LinkLabel=43]="LinkLabel",c[c.URL=44]="URL";const u=class _LeafBlock{constructor(t,e){this.start=t,this.content=e,this.marks=[],this.parsers=[]}};e(u,"LeafBlock");let g=u;const k=class _Line{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let t=this.skipSpace(this.basePos);this.indent=this.countIndent(t,this.pos,this.indent),this.pos=t,this.next=t==this.text.length?-1:this.text.charCodeAt(t)}skipSpace(t){return C(this.text,t)}reset(t){for(this.text=t,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(t){this.basePos=t,this.baseIndent=this.countIndent(t,this.pos,this.indent)}moveBaseColumn(t){this.baseIndent=t,this.basePos=this.findColumn(t)}addMarker(t){this.markers.push(t)}countIndent(t,e=0,n=0){for(let s=e;s<t;s++)n+=9==this.text.charCodeAt(s)?4-n%4:1;return n}findColumn(t){let e=0;for(let n=0;e<this.text.length&&n<t;e++)n+=9==this.text.charCodeAt(e)?4-n%4:1;return e}scrub(){if(!this.baseIndent)return this.text;let t="";for(let e=0;e<this.basePos;e++)t+=" ";return t+this.text.slice(this.basePos)}};e(k,"Line");let m=k;function x(t,e,n){if(n.pos==n.text.length||t!=e.block&&n.indent>=e.stack[n.depth+1].value+n.baseIndent)return!0;if(n.indent>=n.baseIndent+4)return!1;let s=(t.type==p.OrderedList?E:I)(n,e,!1);return s>0&&(t.type!=p.BulletList||w(n,e,!1)<0)&&n.text.charCodeAt(n.pos+s-1)==t.value}e(x,"skipForList");const L={[p.Blockquote]:(t,e,n)=>62==n.next&&(n.markers.push(ht(p.QuoteMark,e.lineStart+n.pos,e.lineStart+n.pos+1)),n.moveBase(n.pos+(b(n.text.charCodeAt(n.pos+1))?2:1)),t.end=e.lineStart+n.text.length,!0),[p.ListItem]:(t,e,n)=>!(n.indent<n.baseIndent+t.value&&n.next>-1)&&(n.moveBaseColumn(n.baseIndent+t.value),!0),[p.OrderedList]:x,[p.BulletList]:x,[p.Document]:()=>!0};function b(t){return 32==t||9==t||10==t||13==t}function C(t,e=0){for(;e<t.length&&b(t.charCodeAt(e));)e++;return e}function S(t,e,n){for(;e>n&&b(t.charCodeAt(e-1));)e--;return e}function y(t){if(96!=t.next&&126!=t.next)return-1;let e=t.pos+1;for(;e<t.text.length&&t.text.charCodeAt(e)==t.next;)e++;if(e<t.pos+3)return-1;if(96==t.next)for(let n=e;n<t.text.length;n++)if(96==t.text.charCodeAt(n))return-1;return e}function A(t){return 62!=t.next?-1:32==t.text.charCodeAt(t.pos+1)?2:1}function w(t,e,n){if(42!=t.next&&45!=t.next&&95!=t.next)return-1;let s=1;for(let r=t.pos+1;r<t.text.length;r++){let e=t.text.charCodeAt(r);if(e==t.next)s++;else if(!b(e))return-1}return n&&45==t.next&&H(t)>-1&&t.depth==e.stack.length&&e.parser.leafBlockParsers.indexOf(q.SetextHeading)>-1||s<3?-1:1}function B(t,e){for(let n=t.stack.length-1;n>=0;n--)if(t.stack[n].type==e)return!0;return!1}function I(t,e,n){return 45!=t.next&&43!=t.next&&42!=t.next||t.pos!=t.text.length-1&&!b(t.text.charCodeAt(t.pos+1))||!(!n||B(e,p.BulletList)||t.skipSpace(t.pos+2)<t.text.length)?-1:1}function E(t,e,n){let s=t.pos,r=t.next;for(;r>=48&&r<=57;){if(s++,s==t.text.length)return-1;r=t.text.charCodeAt(s)}return s==t.pos||s>t.pos+9||46!=r&&41!=r||s<t.text.length-1&&!b(t.text.charCodeAt(s+1))||n&&!B(e,p.OrderedList)&&(t.skipSpace(s+1)==t.text.length||s>t.pos+1||49!=t.next)?-1:s+1-t.pos}function T(t){if(35!=t.next)return-1;let e=t.pos+1;for(;e<t.text.length&&35==t.text.charCodeAt(e);)e++;if(e<t.text.length&&32!=t.text.charCodeAt(e))return-1;let n=e-t.pos;return n>6?-1:n}function H(t){if(45!=t.next&&61!=t.next||t.indent>=t.baseIndent+4)return-1;let e=t.pos+1;for(;e<t.text.length&&t.text.charCodeAt(e)==t.next;)e++;let n=e;for(;e<t.text.length&&b(t.text.charCodeAt(e));)e++;return e==t.text.length?n:-1}e(b,"space"),e(C,"skipSpace"),e(S,"skipSpaceBack"),e(y,"isFencedCode"),e(A,"isBlockquote"),e(w,"isHorizontalRule"),e(B,"inList"),e(I,"isBulletList"),e(E,"isOrderedList"),e(T,"isAtxHeading"),e(H,"isSetextUnderline");const M=/^[ \t]*$/,P=/-->/,v=/\?>/,N=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*<!--/,P],[/^\s*<\?/,v],[/^\s*<![A-Z]/,/>/],[/^\s*<!\[CDATA\[/,/\]\]>/],[/^\s*<\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|\/?>|$)/i,M],[/^\s*(?:<\/[a-z][\w-]*\s*>|<[a-z][\w-]*(\s+[a-z:_][\w-.]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*>)\s*$/i,M]];function O(t,e,n){if(60!=t.next)return-1;let s=t.text.slice(t.pos);for(let r=0,i=N.length-(n?1:0);r<i;r++)if(N[r][0].test(s))return r;return-1}function R(t,e){let n=t.countIndent(e,t.pos,t.indent),s=t.countIndent(t.skipSpace(e),e,n);return s>=n+5?n+1:s}function X(t,e,n){let s=t.length-1;s>=0&&t[s].to==e&&t[s].type==p.CodeText?t[s].to=n:t.push(ht(p.CodeText,e,n))}e(O,"isHTMLBlock"),e(R,"getListIndent"),e(X,"addCodeText");const z={LinkReference:void 0,IndentedCode(t,e){let n=e.baseIndent+4;if(e.indent<n)return!1;let s=e.findColumn(n),r=t.lineStart+s,i=t.lineStart+e.text.length,o=[],a=[];for(X(o,r,i);t.nextLine()&&e.depth>=t.stack.length;)if(e.pos==e.text.length){X(a,t.lineStart-1,t.lineStart);for(let t of e.markers)a.push(t)}else{if(e.indent<n)break;{if(a.length){for(let t of a)t.type==p.CodeText?X(o,t.from,t.to):o.push(t);a=[]}X(o,t.lineStart-1,t.lineStart);for(let t of e.markers)o.push(t);i=t.lineStart+e.text.length;let n=t.lineStart+e.findColumn(e.baseIndent+4);n<i&&X(o,n,i)}}return a.length&&(a=a.filter(t=>t.type!=p.CodeText),a.length&&(e.markers=a.concat(e.markers))),t.addNode(t.buffer.writeElements(o,-r).finish(p.CodeBlock,i-r),r),!0},FencedCode(t,e){let n=y(e);if(n<0)return!1;let s=t.lineStart+e.pos,r=e.next,i=n-e.pos,o=e.skipSpace(n),a=S(e.text,e.text.length,o),l=[ht(p.CodeMark,s,s+i)];o<a&&l.push(ht(p.CodeInfo,t.lineStart+o,t.lineStart+a));for(let h=!0;t.nextLine()&&e.depth>=t.stack.length;h=!1){let n=e.pos;if(e.indent-e.baseIndent<4)for(;n<e.text.length&&e.text.charCodeAt(n)==r;)n++;if(n-e.pos>=i&&e.skipSpace(n)==e.text.length){for(let t of e.markers)l.push(t);l.push(ht(p.CodeMark,t.lineStart+e.pos,t.lineStart+n)),t.nextLine();break}{h||X(l,t.lineStart-1,t.lineStart);for(let t of e.markers)l.push(t);let n=t.lineStart+e.basePos,s=t.lineStart+e.text.length;n<s&&X(l,n,s)}}return t.addNode(t.buffer.writeElements(l,-s).finish(p.FencedCode,t.prevLineEnd()-s),s),!0},Blockquote(t,e){let n=A(e);return!(n<0)&&(t.startContext(p.Blockquote,e.pos),t.addNode(p.QuoteMark,t.lineStart+e.pos,t.lineStart+e.pos+1),e.moveBase(e.pos+n),null)},HorizontalRule(t,e){if(w(e,t,!1)<0)return!1;let n=t.lineStart+e.pos;return t.nextLine(),t.addNode(p.HorizontalRule,n),!0},BulletList(t,e){let n=I(e,t,!1);if(n<0)return!1;t.block.type!=p.BulletList&&t.startContext(p.BulletList,e.basePos,e.next);let s=R(e,e.pos+1);return t.startContext(p.ListItem,e.basePos,s-e.baseIndent),t.addNode(p.ListMark,t.lineStart+e.pos,t.lineStart+e.pos+n),e.moveBaseColumn(s),null},OrderedList(t,e){let n=E(e,t,!1);if(n<0)return!1;t.block.type!=p.OrderedList&&t.startContext(p.OrderedList,e.basePos,e.text.charCodeAt(e.pos+n-1));let s=R(e,e.pos+n);return t.startContext(p.ListItem,e.basePos,s-e.baseIndent),t.addNode(p.ListMark,t.lineStart+e.pos,t.lineStart+e.pos+n),e.moveBaseColumn(s),null},ATXHeading(t,e){let n=T(e);if(n<0)return!1;let s=e.pos,r=t.lineStart+s,i=S(e.text,e.text.length,s),o=i;for(;o>s&&e.text.charCodeAt(o-1)==e.next;)o--;o!=i&&o!=s&&b(e.text.charCodeAt(o-1))||(o=e.text.length);let a=t.buffer.write(p.HeaderMark,0,n).writeElements(t.parser.parseInline(e.text.slice(s+n+1,o),r+n+1),-r);o<e.text.length&&a.write(p.HeaderMark,o-s,i-s);let l=a.finish(p.ATXHeading1-1+n,e.text.length-s);return t.nextLine(),t.addNode(l,r),!0},HTMLBlock(t,e){let n=O(e,0,!1);if(n<0)return!1;let s=t.lineStart+e.pos,r=N[n][1],i=[],o=r!=M;for(;!r.test(e.text)&&t.nextLine();){if(e.depth<t.stack.length){o=!1;break}for(let t of e.markers)i.push(t)}o&&t.nextLine();let a=r==P?p.CommentBlock:r==v?p.ProcessingInstructionBlock:p.HTMLBlock,l=t.prevLineEnd();return t.addNode(t.buffer.writeElements(i,-s).finish(a,l-s),s),!0},SetextHeading:void 0},_=class _LinkReferenceParser{constructor(t){this.stage=0,this.elts=[],this.pos=0,this.start=t.start,this.advance(t.content)}nextLine(t,e,n){if(-1==this.stage)return!1;let s=n.content+"\n"+e.scrub(),r=this.advance(s);return r>-1&&r<s.length&&this.complete(t,n,r)}finish(t,e){return(2==this.stage||3==this.stage)&&C(e.content,this.pos)==e.content.length&&this.complete(t,e,e.content.length)}complete(t,e,n){return t.addLeafElement(e,ht(p.LinkReference,this.start,this.start+n,this.elts)),!0}nextStage(t){return t?(this.pos=t.to-this.start,this.elts.push(t),this.stage++,!0):(!1===t&&(this.stage=-1),!1)}advance(t){for(;;){if(-1==this.stage)return-1;if(0==this.stage){if(!this.nextStage(St(t,this.pos,this.start,!0)))return-1;if(58!=t.charCodeAt(this.pos))return this.stage=-1;this.elts.push(ht(p.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else{if(1!=this.stage){if(2==this.stage){let e=C(t,this.pos),n=0;if(e>this.pos){let s=Ct(t,e,this.start);if(s){let e=j(t,s.to-this.start);e>0&&(this.nextStage(s),n=e)}}return n||(n=j(t,this.pos)),n>0&&n<t.length?n:-1}return j(t,this.pos)}if(!this.nextStage(bt(t,C(t,this.pos),this.start)))return-1}}}};e(_,"LinkReferenceParser");let D=_;function j(t,e){for(;e<t.length;e++){let n=t.charCodeAt(e);if(10==n)break;if(!b(n))return-1}return e}e(j,"lineEnd");const F=class _SetextHeadingParser{nextLine(t,e,n){let s=e.depth<t.stack.length?-1:H(e),r=e.next;if(s<0)return!1;let i=ht(p.HeaderMark,t.lineStart+e.pos,t.lineStart+s);return t.nextLine(),t.addLeafElement(n,ht(61==r?p.SetextHeading1:p.SetextHeading2,n.start,t.prevLineEnd(),[...t.parser.parseInline(n.content,n.start),i])),!0}finish(){return!1}};e(F,"SetextHeadingParser");let $=F;const q={LinkReference:(t,e)=>91==e.content.charCodeAt(0)?new D(e):null,SetextHeading:()=>new $},U=[(t,e)=>T(e)>=0,(t,e)=>y(e)>=0,(t,e)=>A(e)>=0,(t,e)=>I(e,t,!0)>=0,(t,e)=>E(e,t,!0)>=0,(t,e)=>w(e,t,!0)>=0,(t,e)=>O(e,0,!0)>=0],Q={text:"",end:0},Z=class _BlockContext{constructor(t,e,n,s){this.parser=t,this.input=e,this.ranges=s,this.line=new m,this.atEnd=!1,this.reusePlaceholders=/* @__PURE__ */new Map,this.stoppedAt=null,this.rangeI=0,this.to=s[s.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=s[0].from,this.block=d.create(p.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=n.length?new Et(n,e):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(null!=this.stoppedAt&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line:t}=this;for(;;){for(let e=0;;){let n=t.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;e<t.markers.length&&(!n||t.markers[e].from<n.end);){let n=t.markers[e++];this.addNode(n.type,n.from,n.to)}if(!n)break;this.finishContext()}if(t.pos<t.text.length)break;if(!this.nextLine())return this.finish()}if(this.fragments&&this.reuseFragment(t.basePos))return null;t:for(;;){for(let e of this.parser.blockParsers)if(e){let n=e(this,t);if(0!=n){if(1==n)return null;t.forward();continue t}}break}let e=new g(this.lineStart+t.pos,t.text.slice(t.pos));for(let n of this.parser.leafBlockParsers)if(n){let t=n(this,e);t&&e.parsers.push(t)}t:for(;this.nextLine()&&t.pos!=t.text.length;){if(t.indent<t.baseIndent+4)for(let n of this.parser.endLeafBlock)if(n(this,t,e))break t;for(let n of e.parsers)if(n.nextLine(this,t,e))return null;e.content+="\n"+t.scrub();for(let n of t.markers)e.marks.push(n)}return this.finishLeaf(e),null}stopAt(t){if(null!=this.stoppedAt&&this.stoppedAt<t)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=t}reuseFragment(t){if(!this.fragments.moveTo(this.absoluteLineStart+t,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let e=this.fragments.takeNodes(this);return!!e&&(this.absoluteLineStart+=e,this.lineStart=Tt(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0)}get depth(){return this.stack.length}parentType(t=this.depth-1){return this.parser.nodeSet.types[this.stack[t].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(t){let e=Q;if(e.end=t,t>=this.to)e.text="";else if(e.text=this.lineChunkAt(t),e.end+=e.text.length,this.ranges.length>1){let t=this.absoluteLineStart,n=this.rangeI;for(;this.ranges[n].to<e.end;){n++;let s=this.ranges[n].from,r=this.lineChunkAt(s);e.end=s+r.length,e.text=e.text.slice(0,this.ranges[n-1].to-t)+r,t=e.end-e.text.length}}return e}readLine(){let{line:t}=this,{text:e,end:n}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=n,t.reset(e);t.depth<this.stack.length;t.depth++){let e=this.stack[t.depth],n=this.parser.skipContextMarkup[e.type];if(!n)throw new Error("Unhandled block context "+p[e.type]);let s=this.line.markers.length;if(!n(e,this,t)){this.line.markers.length>s&&(e.end=this.line.markers[this.line.markers.length-1].to);break}t.forward()}}lineChunkAt(t){let e,n=this.input.chunk(t);if(this.input.lineChunks)e="\n"==n?"":n;else{let t=n.indexOf("\n");e=t<0?n:n.slice(0,t)}return t+e.length>this.to?e.slice(0,this.to-t):e}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(t,e,n=0){this.block=d.create(t,n,this.lineStart+e,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(t,e,n=0){this.startContext(this.parser.getNodeType(t),e,n)}addNode(t,e,n){"number"==typeof t&&(t=new l(this.parser.nodeSet.types[t],nt,nt,(null!=n?n:this.prevLineEnd())-e)),this.block.addChild(t,e-this.block.from)}addElement(t){this.block.addChild(t.toTree(this.parser.nodeSet),t.from-this.block.from)}addLeafElement(t,e){this.addNode(this.buffer.writeElements(wt(e.children,t.marks),-e.from).finish(e.type,e.to-e.from),e.from)}finishContext(){let t=this.stack.pop(),e=this.stack[this.stack.length-1];e.addChild(t.toTree(this.parser.nodeSet),t.from-e.from),this.block=e}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(t){return this.ranges.length>1?V(this.ranges,0,t.topNode,this.ranges[0].from,this.reusePlaceholders):t}finishLeaf(t){for(let n of t.parsers)if(n.finish(this,t))return;let e=wt(this.parser.parseInline(t.content,t.start),t.marks);this.addNode(this.buffer.writeElements(e,-t.start).finish(p.Paragraph,t.content.length),t.start)}elt(t,e,n,s){return"string"==typeof t?ht(this.parser.getNodeType(t),e,n,s):new lt(t,e)}get buffer(){return new rt(this.parser.nodeSet)}};e(Z,"BlockContext");let G=Z;function V(t,n,s,r,i){let o=t[n].to,a=[],h=[],f=s.from+r;function d(e,s){for(;s?e>=o:e>o;){let s=t[n+1].from-o;r+=s,e+=s,n++,o=t[n].to}}e(d,"movePastNext");for(let e=s.firstChild;e;e=e.nextSibling){d(e.from+r,!0);let s,l=e.from+r,p=i.get(e.tree);p?s=p:e.to+r>o?(s=V(t,n,e,r,i),d(e.to+r,!1)):s=e.toTree(),a.push(s),h.push(l-f)}return d(s.to+r,!1),new l(s.type,a,h,s.to+r-f,s.tree?s.tree.propValues:void 0)}e(V,"injectGaps");const J=class _MarkdownParser extends i{constructor(t,e,n,s,r,i,o,a,l){super(),this.nodeSet=t,this.blockParsers=e,this.leafBlockParsers=n,this.blockNames=s,this.endLeafBlock=r,this.skipContextMarkup=i,this.inlineParsers=o,this.inlineNames=a,this.wrappers=l,this.nodeTypes=/* @__PURE__ */Object.create(null);for(let h of t.types)this.nodeTypes[h.name]=h.id}createParse(t,e,n){let s=new G(this,t,e,n);for(let r of this.wrappers)s=r(s,t,e,n);return s}configure(t){let e=Y(t);if(!e)return this;let{nodeSet:i,skipContextMarkup:l}=this,h=this.blockParsers.slice(),f=this.leafBlockParsers.slice(),d=this.blockNames.slice(),c=this.inlineParsers.slice(),u=this.inlineNames.slice(),g=this.endLeafBlock.slice(),k=this.wrappers;if(W(e.defineNodes)){l=Object.assign({},l);let t,h=i.types.slice();for(let n of e.defineNodes){let{name:e,block:r,composite:i,style:f}="string"==typeof n?{name:n}:n;if(h.some(t=>t.name==e))continue;i&&(l[h.length]=(t,e,n)=>i(e,n,t.value));let d=h.length,c=i?["Block","BlockContext"]:r?d>=p.ATXHeading1&&d<=p.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;h.push(s.define({id:d,name:e,props:c&&[[o.group,c]]})),f&&(t||(t={}),Array.isArray(f)||f instanceof a?t[e]=f:Object.assign(t,f))}i=new n(h),t&&(i=i.extend(r(t)))}if(W(e.props)&&(i=i.extend(...e.props)),W(e.remove))for(let n of e.remove){let t=this.blockNames.indexOf(n),e=this.inlineNames.indexOf(n);t>-1&&(h[t]=f[t]=void 0),e>-1&&(c[e]=void 0)}if(W(e.parseBlock))for(let n of e.parseBlock){let t=d.indexOf(n.name);if(t>-1)h[t]=n.parse,f[t]=n.leaf;else{let t=n.before?tt(d,n.before):n.after?tt(d,n.after)+1:d.length-1;h.splice(t,0,n.parse),f.splice(t,0,n.leaf),d.splice(t,0,n.name)}n.endLeaf&&g.push(n.endLeaf)}if(W(e.parseInline))for(let n of e.parseInline){let t=u.indexOf(n.name);if(t>-1)c[t]=n.parse;else{let t=n.before?tt(u,n.before):n.after?tt(u,n.after)+1:u.length-1;c.splice(t,0,n.parse),u.splice(t,0,n.name)}}return e.wrap&&(k=k.concat(e.wrap)),new _MarkdownParser(i,h,f,d,g,l,c,u,k)}getNodeType(t){let e=this.nodeTypes[t];if(null==e)throw new RangeError(`Unknown node type '${t}'`);return e}parseInline(t,e){let n=new At(this,t,e);t:for(let s=e;s<n.end;){let t=n.char(s);for(let e of this.inlineParsers)if(e){let r=e(n,t,s);if(r>=0){s=r;continue t}}s++}return n.resolveMarkers(0)}};e(J,"MarkdownParser");let K=J;function W(t){return null!=t&&t.length>0}function Y(t){if(!Array.isArray(t))return t;if(0==t.length)return null;let n=Y(t[0]);if(1==t.length)return n;let s=Y(t.slice(1));if(!s||!n)return n||s;let r=/* @__PURE__ */e((t,e)=>(t||nt).concat(e||nt),"conc"),i=n.wrap,o=s.wrap;return{props:r(n.props,s.props),defineNodes:r(n.defineNodes,s.defineNodes),parseBlock:r(n.parseBlock,s.parseBlock),parseInline:r(n.parseInline,s.parseInline),remove:r(n.remove,s.remove),wrap:i?o?(t,e,n,s)=>i(o(t,e,n,s),e,n,s):i:o}}function tt(t,e){let n=t.indexOf(e);if(n<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return n}e(W,"nonEmpty"),e(Y,"resolveConfig"),e(tt,"findName");let et=[s.none];for(let vt,Nt=1;vt=p[Nt];Nt++)et[Nt]=s.define({id:Nt,name:vt,props:Nt>=p.Escape?[]:[[o.group,Nt in L?["Block","BlockContext"]:["Block","LeafBlock"]]],top:"Document"==vt});const nt=[],st=class _Buffer{constructor(t){this.nodeSet=t,this.content=[],this.nodes=[]}write(t,e,n,s=0){return this.content.push(t,e,n,4+4*s),this}writeElements(t,e=0){for(let n of t)n.writeTo(this,e);return this}finish(t,e){return l.build({buffer:this.content,nodeSet:this.nodeSet,reused:this.nodes,topID:t,length:e})}};e(st,"Buffer");let rt=st;const it=class _Element{constructor(t,e,n,s=nt){this.type=t,this.from=e,this.to=n,this.children=s}writeTo(t,e){let n=t.content.length;t.writeElements(this.children,e),t.content.push(this.type,this.from+e,this.to+e,t.content.length+4-n)}toTree(t){return new rt(t).writeElements(this.children,-this.from).finish(this.type,this.to-this.from)}};e(it,"Element");let ot=it;const at=class _TreeElement{constructor(t,e){this.tree=t,this.from=e}get to(){return this.from+this.tree.length}get type(){return this.tree.type.id}get children(){return nt}writeTo(t,e){t.nodes.push(this.tree),t.content.push(t.nodes.length-1,this.from+e,this.to+e,-1)}toTree(){return this.tree}};e(at,"TreeElement");let lt=at;function ht(t,e,n,s){return new ot(t,e,n,s)}e(ht,"elt");const ft={resolve:"Emphasis",mark:"EmphasisMark"},dt={resolve:"Emphasis",mark:"EmphasisMark"},pt={},ct={},ut=class _InlineDelimiter{constructor(t,e,n,s){this.type=t,this.from=e,this.to=n,this.side=s}};e(ut,"InlineDelimiter");let gt=ut;const kt="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";let mt=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\u2010-\u2027]/;try{mt=new RegExp("[\\p{S}|\\p{P}]","u")}catch(Pt){}const xt={Escape(t,e,n){if(92!=e||n==t.end-1)return-1;let s=t.char(n+1);for(let r=0;r<32;r++)if(kt.charCodeAt(r)==s)return t.append(ht(p.Escape,n,n+2));return-1},Entity(t,e,n){if(38!=e)return-1;let s=/^(?:#\d+|#x[a-f\d]+|\w+);/i.exec(t.slice(n+1,n+31));return s?t.append(ht(p.Entity,n,n+1+s[0].length)):-1},InlineCode(t,e,n){if(96!=e||n&&96==t.char(n-1))return-1;let s=n+1;for(;s<t.end&&96==t.char(s);)s++;let r=s-n,i=0;for(;s<t.end;s++)if(96==t.char(s)){if(i++,i==r&&96!=t.char(s+1))return t.append(ht(p.InlineCode,n,s+1,[ht(p.CodeMark,n,n+r),ht(p.CodeMark,s+1-r,s+1)]))}else i=0;return-1},HTMLTag(t,e,n){if(60!=e||n==t.end-1)return-1;let s=t.slice(n+1,t.end),r=/^(?:[a-z][-\w+.]+:[^\s>]+|[a-z\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?(?:\.[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?)*)>/i.exec(s);if(r)return t.append(ht(p.Autolink,n,n+1+r[0].length,[ht(p.LinkMark,n,n+1),ht(p.URL,n+1,n+r[0].length),ht(p.LinkMark,n+r[0].length,n+1+r[0].length)]));let i=/^!--[^>](?:-[^-]|[^-])*?-->/i.exec(s);if(i)return t.append(ht(p.Comment,n,n+1+i[0].length));let o=/^\?[^]*?\?>/.exec(s);if(o)return t.append(ht(p.ProcessingInstruction,n,n+1+o[0].length));let a=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(s);return a?t.append(ht(p.HTMLTag,n,n+1+a[0].length)):-1},Emphasis(t,e,n){if(95!=e&&42!=e)return-1;let s=n+1;for(;t.char(s)==e;)s++;let r=t.slice(n-1,n),i=t.slice(s,s+1),o=mt.test(r),a=mt.test(i),l=/\s|^$/.test(r),h=/\s|^$/.test(i),f=!h&&(!a||l||o),d=!l&&(!o||h||a),p=f&&(42==e||!d||o),c=d&&(42==e||!f||a);return t.append(new gt(95==e?ft:dt,n,s,(p?1:0)|(c?2:0)))},HardBreak(t,e,n){if(92==e&&10==t.char(n+1))return t.append(ht(p.HardBreak,n,n+2));if(32==e){let e=n+1;for(;32==t.char(e);)e++;if(10==t.char(e)&&e>=n+2)return t.append(ht(p.HardBreak,n,e+1))}return-1},Link:(t,e,n)=>91==e?t.append(new gt(pt,n,n+1,1)):-1,Image:(t,e,n)=>33==e&&91==t.char(n+1)?t.append(new gt(ct,n,n+2,1)):-1,LinkEnd(t,e,n){if(93!=e)return-1;for(let s=t.parts.length-1;s>=0;s--){let e=t.parts[s];if(e instanceof gt&&(e.type==pt||e.type==ct)){if(!e.side||t.skipSpace(e.to)==n&&!/[(\[]/.test(t.slice(n+1,n+2)))return t.parts[s]=null,-1;let r=t.takeContent(s),i=t.parts[s]=Lt(t,r,e.type==pt?p.Link:p.Image,e.from,n+1);if(e.type==pt)for(let e=0;e<s;e++){let n=t.parts[e];n instanceof gt&&n.type==pt&&(n.side=0)}return i.to}}return-1}};function Lt(t,e,n,s,r){let{text:i}=t,o=t.char(r),a=r;if(e.unshift(ht(p.LinkMark,s,s+(n==p.Image?2:1))),e.push(ht(p.LinkMark,r-1,r)),40==o){let n,s=t.skipSpace(r+1),o=bt(i,s-t.offset,t.offset);o&&(s=t.skipSpace(o.to),s!=o.to&&(n=Ct(i,s-t.offset,t.offset),n&&(s=t.skipSpace(n.to)))),41==t.char(s)&&(e.push(ht(p.LinkMark,r,r+1)),a=s+1,o&&e.push(o),n&&e.push(n),e.push(ht(p.LinkMark,s,a)))}else if(91==o){let n=St(i,r-t.offset,t.offset,!1);n&&(e.push(n),a=n.to)}return ht(n,s,a,e)}function bt(t,e,n){if(60==t.charCodeAt(e)){for(let s=e+1;s<t.length;s++){let r=t.charCodeAt(s);if(62==r)return ht(p.URL,e+n,s+1+n);if(60==r||10==r)return!1}return null}{let s=0,r=e;for(let e=!1;r<t.length;r++){let n=t.charCodeAt(r);if(b(n))break;if(e)e=!1;else if(40==n)s++;else if(41==n){if(!s)break;s--}else 92==n&&(e=!0)}return r>e?ht(p.URL,e+n,r+n):r==t.length&&null}}function Ct(t,e,n){let s=t.charCodeAt(e);if(39!=s&&34!=s&&40!=s)return!1;let r=40==s?41:s;for(let i=e+1,o=!1;i<t.length;i++){let s=t.charCodeAt(i);if(o)o=!1;else{if(s==r)return ht(p.LinkTitle,e+n,i+1+n);92==s&&(o=!0)}}return null}function St(t,e,n,s){for(let r=!1,i=e+1,o=Math.min(t.length,i+999);i<o;i++){let o=t.charCodeAt(i);if(r)r=!1;else{if(93==o)return!s&&ht(p.LinkLabel,e+n,i+1+n);if(s&&!b(o)&&(s=!1),91==o)return!1;92==o&&(r=!0)}}return null}e(Lt,"finishLink"),e(bt,"parseURL"),e(Ct,"parseLinkTitle"),e(St,"parseLinkLabel");const yt=class _InlineContext{constructor(t,e,n){this.parser=t,this.text=e,this.offset=n,this.parts=[]}char(t){return t>=this.end?-1:this.text.charCodeAt(t-this.offset)}get end(){return this.offset+this.text.length}slice(t,e){return this.text.slice(t-this.offset,e-this.offset)}append(t){return this.parts.push(t),t.to}addDelimiter(t,e,n,s,r){return this.append(new gt(t,e,n,(s?1:0)|(r?2:0)))}get hasOpenLink(){for(let t=this.parts.length-1;t>=0;t--){let e=this.parts[t];if(e instanceof gt&&(e.type==pt||e.type==ct))return!0}return!1}addElement(t){return this.append(t)}resolveMarkers(t){for(let n=t;n<this.parts.length;n++){let e=this.parts[n];if(!(e instanceof gt&&e.type.resolve&&2&e.side))continue;let s,r=e.type==ft||e.type==dt,i=e.to-e.from,o=n-1;for(;o>=t;o--){let t=this.parts[o];if(t instanceof gt&&1&t.side&&t.type==e.type&&!(r&&(1&e.side||2&t.side)&&(t.to-t.from+i)%3==0&&((t.to-t.from)%3||i%3))){s=t;break}}if(!s)continue;let a=e.type.resolve,l=[],h=s.from,f=e.to;if(r){let t=Math.min(2,s.to-s.from,i);h=s.to-t,f=e.from+t,a=1==t?"Emphasis":"StrongEmphasis"}s.type.mark&&l.push(this.elt(s.type.mark,h,s.to));for(let t=o+1;t<n;t++)this.parts[t]instanceof ot&&l.push(this.parts[t]),this.parts[t]=null;e.type.mark&&l.push(this.elt(e.type.mark,e.from,f));let d=this.elt(a,h,f,l);this.parts[o]=r&&s.from!=h?new gt(s.type,s.from,h,s.side):null,(this.parts[n]=r&&e.to!=f?new gt(e.type,f,e.to,e.side):null)?this.parts.splice(n,0,d):this.parts[n]=d}let e=[];for(let n=t;n<this.parts.length;n++){let t=this.parts[n];t instanceof ot&&e.push(t)}return e}findOpeningDelimiter(t){for(let e=this.parts.length-1;e>=0;e--){let n=this.parts[e];if(n instanceof gt&&n.type==t&&1&n.side)return e}return null}takeContent(t){let e=this.resolveMarkers(t);return this.parts.length=t,e}getDelimiterAt(t){let e=this.parts[t];return e instanceof gt?e:null}skipSpace(t){return C(this.text,t-this.offset)+this.offset}elt(t,e,n,s){return"string"==typeof t?ht(this.parser.getNodeType(t),e,n,s):new lt(t,e)}};e(yt,"InlineContext");let At=yt;function wt(t,e){if(!e.length)return t;if(!t.length)return e;let n=t.slice(),s=0;for(let r of e){for(;s<n.length&&n[s].to<r.to;)s++;if(s<n.length&&n[s].from<r.from){let t=n[s];t instanceof ot&&(n[s]=new ot(t.type,t.from,t.to,wt(t.children,[r])))}else n.splice(s++,0,r)}return n}At.linkStart=pt,At.imageStart=ct,e(wt,"injectMarks");const Bt=[p.CodeBlock,p.ListItem,p.OrderedList,p.BulletList],It=class _FragmentCursor{constructor(t,e){this.fragments=t,this.input=e,this.i=0,this.fragment=null,this.fragmentEnd=-1,this.cursor=null,t.length&&(this.fragment=t[this.i++])}nextFragment(){this.fragment=this.i<this.fragments.length?this.fragments[this.i++]:null,this.cursor=null,this.fragmentEnd=-1}moveTo(t,e){for(;this.fragment&&this.fragment.to<=t;)this.nextFragment();if(!this.fragment||this.fragment.from>(t?t-1:0))return!1;if(this.fragmentEnd<0){let t=this.fragment.to;for(;t>0&&"\n"!=this.input.read(t-1,t);)t--;this.fragmentEnd=t?t-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let s=t+this.fragment.offset;for(;n.to<=s;)if(!n.parent())return!1;for(;;){if(n.from>=s)return this.fragment.from<=e;if(!n.childAfter(s))return!1}}matches(t){let e=this.cursor.tree;return e&&e.prop(o.contextHash)==t}takeNodes(t){let e=this.cursor,n=this.fragment.offset,s=this.fragmentEnd-(this.fragment.openEnd?1:0),r=t.absoluteLineStart,i=r,o=t.block.children.length,a=i,h=o;for(;;){if(e.to-n>s){if(e.type.isAnonymous&&e.firstChild())continue;break}let r=Tt(e.from-n,t.ranges);if(e.to-n<=t.ranges[t.rangeI].to)t.addNode(e.tree,r);else{let n=new l(t.parser.nodeSet.types[p.Paragraph],[],[],0,t.block.hashProp);t.reusePlaceholders.set(n,e.tree),t.addNode(n,r)}if(e.type.is("Block")&&(Bt.indexOf(e.type.id)<0?(i=e.to-n,o=t.block.children.length):(i=a,o=h,a=e.to-n,h=t.block.children.length)),!e.nextSibling())break}for(;t.block.children.length>o;)t.block.children.pop(),t.block.positions.pop();return i-r}};e(It,"FragmentCursor");let Et=It;function Tt(t,e){let n=t;for(let s=1;s<e.length;s++){let r=e[s-1].to,i=e[s].from;r<t&&(n-=i-r)}return n}e(Tt,"toRelative");const Ht=r({"Blockquote/...":h.quote,HorizontalRule:h.contentSeparator,"ATXHeading1/... SetextHeading1/...":h.heading1,"ATXHeading2/... SetextHeading2/...":h.heading2,"ATXHeading3/...":h.heading3,"ATXHeading4/...":h.heading4,"ATXHeading5/...":h.heading5,"ATXHeading6/...":h.heading6,"Comment CommentBlock":h.comment,Escape:h.escape,Entity:h.character,"Emphasis/...":h.emphasis,"StrongEmphasis/...":h.strong,"Link/... Image/...":h.link,"OrderedList/... BulletList/...":h.list,"BlockQuote/...":h.quote,"InlineCode CodeText":h.monospace,"URL Autolink":h.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":h.processingInstruction,"CodeInfo LinkLabel":h.labelName,LinkTitle:h.string,Paragraph:h.content}),Mt=new K(new n(et).extend(Ht),Object.keys(z).map(t=>z[t]),Object.keys(z).map(t=>q[t]),Object.keys(z),U,L,Object.keys(xt).map(t=>xt[t]),Object.keys(xt),[]);h.special(h.content),h.processingInstruction,h.special(h.content),h.processingInstruction;export{G as BlockContext,ot as Element,At as InlineContext,g as LeafBlock,m as Line,K as MarkdownParser,Mt as parser};
2
- //# sourceMappingURL=index-B-QesaRi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-B-QesaRi.js","sources":["../../../node_modules/@lezer/markdown/dist/index.js"],"sourcesContent":["import { NodeType, NodeProp, NodeSet, Tree, Parser, parseMixed } from '@lezer/common';\nimport { styleTags, tags, Tag } from '@lezer/highlight';\n\nclass CompositeBlock {\n static create(type, value, from, parentHash, end) {\n let hash = (parentHash + (parentHash << 8) + type + (value << 4)) | 0;\n return new CompositeBlock(type, value, from, hash, end, [], []);\n }\n constructor(type, \n // Used for indentation in list items, markup character in lists\n value, from, hash, end, children, positions) {\n this.type = type;\n this.value = value;\n this.from = from;\n this.hash = hash;\n this.end = end;\n this.children = children;\n this.positions = positions;\n this.hashProp = [[NodeProp.contextHash, hash]];\n }\n addChild(child, pos) {\n if (child.prop(NodeProp.contextHash) != this.hash)\n child = new Tree(child.type, child.children, child.positions, child.length, this.hashProp);\n this.children.push(child);\n this.positions.push(pos);\n }\n toTree(nodeSet, end = this.end) {\n let last = this.children.length - 1;\n if (last >= 0)\n end = Math.max(end, this.positions[last] + this.children[last].length + this.from);\n return new Tree(nodeSet.types[this.type], this.children, this.positions, end - this.from).balance({\n makeTree: (children, positions, length) => new Tree(NodeType.none, children, positions, length, this.hashProp)\n });\n }\n}\nvar Type;\n(function (Type) {\n Type[Type[\"Document\"] = 1] = \"Document\";\n Type[Type[\"CodeBlock\"] = 2] = \"CodeBlock\";\n Type[Type[\"FencedCode\"] = 3] = \"FencedCode\";\n Type[Type[\"Blockquote\"] = 4] = \"Blockquote\";\n Type[Type[\"HorizontalRule\"] = 5] = \"HorizontalRule\";\n Type[Type[\"BulletList\"] = 6] = \"BulletList\";\n Type[Type[\"OrderedList\"] = 7] = \"OrderedList\";\n Type[Type[\"ListItem\"] = 8] = \"ListItem\";\n Type[Type[\"ATXHeading1\"] = 9] = \"ATXHeading1\";\n Type[Type[\"ATXHeading2\"] = 10] = \"ATXHeading2\";\n Type[Type[\"ATXHeading3\"] = 11] = \"ATXHeading3\";\n Type[Type[\"ATXHeading4\"] = 12] = \"ATXHeading4\";\n Type[Type[\"ATXHeading5\"] = 13] = \"ATXHeading5\";\n Type[Type[\"ATXHeading6\"] = 14] = \"ATXHeading6\";\n Type[Type[\"SetextHeading1\"] = 15] = \"SetextHeading1\";\n Type[Type[\"SetextHeading2\"] = 16] = \"SetextHeading2\";\n Type[Type[\"HTMLBlock\"] = 17] = \"HTMLBlock\";\n Type[Type[\"LinkReference\"] = 18] = \"LinkReference\";\n Type[Type[\"Paragraph\"] = 19] = \"Paragraph\";\n Type[Type[\"CommentBlock\"] = 20] = \"CommentBlock\";\n Type[Type[\"ProcessingInstructionBlock\"] = 21] = \"ProcessingInstructionBlock\";\n // Inline\n Type[Type[\"Escape\"] = 22] = \"Escape\";\n Type[Type[\"Entity\"] = 23] = \"Entity\";\n Type[Type[\"HardBreak\"] = 24] = \"HardBreak\";\n Type[Type[\"Emphasis\"] = 25] = \"Emphasis\";\n Type[Type[\"StrongEmphasis\"] = 26] = \"StrongEmphasis\";\n Type[Type[\"Link\"] = 27] = \"Link\";\n Type[Type[\"Image\"] = 28] = \"Image\";\n Type[Type[\"InlineCode\"] = 29] = \"InlineCode\";\n Type[Type[\"HTMLTag\"] = 30] = \"HTMLTag\";\n Type[Type[\"Comment\"] = 31] = \"Comment\";\n Type[Type[\"ProcessingInstruction\"] = 32] = \"ProcessingInstruction\";\n Type[Type[\"Autolink\"] = 33] = \"Autolink\";\n // Smaller tokens\n Type[Type[\"HeaderMark\"] = 34] = \"HeaderMark\";\n Type[Type[\"QuoteMark\"] = 35] = \"QuoteMark\";\n Type[Type[\"ListMark\"] = 36] = \"ListMark\";\n Type[Type[\"LinkMark\"] = 37] = \"LinkMark\";\n Type[Type[\"EmphasisMark\"] = 38] = \"EmphasisMark\";\n Type[Type[\"CodeMark\"] = 39] = \"CodeMark\";\n Type[Type[\"CodeText\"] = 40] = \"CodeText\";\n Type[Type[\"CodeInfo\"] = 41] = \"CodeInfo\";\n Type[Type[\"LinkTitle\"] = 42] = \"LinkTitle\";\n Type[Type[\"LinkLabel\"] = 43] = \"LinkLabel\";\n Type[Type[\"URL\"] = 44] = \"URL\";\n})(Type || (Type = {}));\n/**\nData structure used to accumulate a block's content during [leaf\nblock parsing](#BlockParser.leaf).\n*/\nclass LeafBlock {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the block.\n */\n start, \n /**\n The block's text content.\n */\n content) {\n this.start = start;\n this.content = content;\n /**\n @internal\n */\n this.marks = [];\n /**\n The block parsers active for this block.\n */\n this.parsers = [];\n }\n}\n/**\nData structure used during block-level per-line parsing.\n*/\nclass Line {\n constructor() {\n /**\n The line's full text.\n */\n this.text = \"\";\n /**\n The base indent provided by the composite contexts (that have\n been handled so far).\n */\n this.baseIndent = 0;\n /**\n The string position corresponding to the base indent.\n */\n this.basePos = 0;\n /**\n The number of contexts handled @internal\n */\n this.depth = 0;\n /**\n Any markers (i.e. block quote markers) parsed for the contexts. @internal\n */\n this.markers = [];\n /**\n The position of the next non-whitespace character beyond any\n list, blockquote, or other composite block markers.\n */\n this.pos = 0;\n /**\n The column of the next non-whitespace character.\n */\n this.indent = 0;\n /**\n The character code of the character after `pos`.\n */\n this.next = -1;\n }\n /**\n @internal\n */\n forward() {\n if (this.basePos > this.pos)\n this.forwardInner();\n }\n /**\n @internal\n */\n forwardInner() {\n let newPos = this.skipSpace(this.basePos);\n this.indent = this.countIndent(newPos, this.pos, this.indent);\n this.pos = newPos;\n this.next = newPos == this.text.length ? -1 : this.text.charCodeAt(newPos);\n }\n /**\n Skip whitespace after the given position, return the position of\n the next non-space character or the end of the line if there's\n only space after `from`.\n */\n skipSpace(from) { return skipSpace(this.text, from); }\n /**\n @internal\n */\n reset(text) {\n this.text = text;\n this.baseIndent = this.basePos = this.pos = this.indent = 0;\n this.forwardInner();\n this.depth = 1;\n while (this.markers.length)\n this.markers.pop();\n }\n /**\n Move the line's base position forward to the given position.\n This should only be called by composite [block\n parsers](#BlockParser.parse) or [markup skipping\n functions](#NodeSpec.composite).\n */\n moveBase(to) {\n this.basePos = to;\n this.baseIndent = this.countIndent(to, this.pos, this.indent);\n }\n /**\n Move the line's base position forward to the given _column_.\n */\n moveBaseColumn(indent) {\n this.baseIndent = indent;\n this.basePos = this.findColumn(indent);\n }\n /**\n Store a composite-block-level marker. Should be called from\n [markup skipping functions](#NodeSpec.composite) when they\n consume any non-whitespace characters.\n */\n addMarker(elt) {\n this.markers.push(elt);\n }\n /**\n Find the column position at `to`, optionally starting at a given\n position and column.\n */\n countIndent(to, from = 0, indent = 0) {\n for (let i = from; i < to; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return indent;\n }\n /**\n Find the position corresponding to the given column.\n */\n findColumn(goal) {\n let i = 0;\n for (let indent = 0; i < this.text.length && indent < goal; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return i;\n }\n /**\n @internal\n */\n scrub() {\n if (!this.baseIndent)\n return this.text;\n let result = \"\";\n for (let i = 0; i < this.basePos; i++)\n result += \" \";\n return result + this.text.slice(this.basePos);\n }\n}\nfunction skipForList(bl, cx, line) {\n if (line.pos == line.text.length ||\n (bl != cx.block && line.indent >= cx.stack[line.depth + 1].value + line.baseIndent))\n return true;\n if (line.indent >= line.baseIndent + 4)\n return false;\n let size = (bl.type == Type.OrderedList ? isOrderedList : isBulletList)(line, cx, false);\n return size > 0 &&\n (bl.type != Type.BulletList || isHorizontalRule(line, cx, false) < 0) &&\n line.text.charCodeAt(line.pos + size - 1) == bl.value;\n}\nconst DefaultSkipMarkup = {\n [Type.Blockquote](bl, cx, line) {\n if (line.next != 62 /* '>' */)\n return false;\n line.markers.push(elt(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1));\n line.moveBase(line.pos + (space(line.text.charCodeAt(line.pos + 1)) ? 2 : 1));\n bl.end = cx.lineStart + line.text.length;\n return true;\n },\n [Type.ListItem](bl, _cx, line) {\n if (line.indent < line.baseIndent + bl.value && line.next > -1)\n return false;\n line.moveBaseColumn(line.baseIndent + bl.value);\n return true;\n },\n [Type.OrderedList]: skipForList,\n [Type.BulletList]: skipForList,\n [Type.Document]() { return true; }\n};\nfunction space(ch) { return ch == 32 || ch == 9 || ch == 10 || ch == 13; }\nfunction skipSpace(line, i = 0) {\n while (i < line.length && space(line.charCodeAt(i)))\n i++;\n return i;\n}\nfunction skipSpaceBack(line, i, to) {\n while (i > to && space(line.charCodeAt(i - 1)))\n i--;\n return i;\n}\nfunction isFencedCode(line) {\n if (line.next != 96 && line.next != 126 /* '`~' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n if (pos < line.pos + 3)\n return -1;\n if (line.next == 96)\n for (let i = pos; i < line.text.length; i++)\n if (line.text.charCodeAt(i) == 96)\n return -1;\n return pos;\n}\nfunction isBlockquote(line) {\n return line.next != 62 /* '>' */ ? -1 : line.text.charCodeAt(line.pos + 1) == 32 ? 2 : 1;\n}\nfunction isHorizontalRule(line, cx, breaking) {\n if (line.next != 42 && line.next != 45 && line.next != 95 /* '_-*' */)\n return -1;\n let count = 1;\n for (let pos = line.pos + 1; pos < line.text.length; pos++) {\n let ch = line.text.charCodeAt(pos);\n if (ch == line.next)\n count++;\n else if (!space(ch))\n return -1;\n }\n // Setext headers take precedence\n if (breaking && line.next == 45 && isSetextUnderline(line) > -1 && line.depth == cx.stack.length &&\n cx.parser.leafBlockParsers.indexOf(DefaultLeafBlocks.SetextHeading) > -1)\n return -1;\n return count < 3 ? -1 : 1;\n}\nfunction inList(cx, type) {\n for (let i = cx.stack.length - 1; i >= 0; i--)\n if (cx.stack[i].type == type)\n return true;\n return false;\n}\nfunction isBulletList(line, cx, breaking) {\n return (line.next == 45 || line.next == 43 || line.next == 42 /* '-+*' */) &&\n (line.pos == line.text.length - 1 || space(line.text.charCodeAt(line.pos + 1))) &&\n (!breaking || inList(cx, Type.BulletList) || line.skipSpace(line.pos + 2) < line.text.length) ? 1 : -1;\n}\nfunction isOrderedList(line, cx, breaking) {\n let pos = line.pos, next = line.next;\n for (;;) {\n if (next >= 48 && next <= 57 /* '0-9' */)\n pos++;\n else\n break;\n if (pos == line.text.length)\n return -1;\n next = line.text.charCodeAt(pos);\n }\n if (pos == line.pos || pos > line.pos + 9 ||\n (next != 46 && next != 41 /* '.)' */) ||\n (pos < line.text.length - 1 && !space(line.text.charCodeAt(pos + 1))) ||\n breaking && !inList(cx, Type.OrderedList) &&\n (line.skipSpace(pos + 1) == line.text.length || pos > line.pos + 1 || line.next != 49 /* '1' */))\n return -1;\n return pos + 1 - line.pos;\n}\nfunction isAtxHeading(line) {\n if (line.next != 35 /* '#' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == 35)\n pos++;\n if (pos < line.text.length && line.text.charCodeAt(pos) != 32)\n return -1;\n let size = pos - line.pos;\n return size > 6 ? -1 : size;\n}\nfunction isSetextUnderline(line) {\n if (line.next != 45 && line.next != 61 /* '-=' */ || line.indent >= line.baseIndent + 4)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n let end = pos;\n while (pos < line.text.length && space(line.text.charCodeAt(pos)))\n pos++;\n return pos == line.text.length ? end : -1;\n}\nconst EmptyLine = /^[ \\t]*$/, CommentEnd = /-->/, ProcessingEnd = /\\?>/;\nconst HTMLBlockStyle = [\n [/^<(?:script|pre|style)(?:\\s|>|$)/i, /<\\/(?:script|pre|style)>/i],\n [/^\\s*<!--/, CommentEnd],\n [/^\\s*<\\?/, ProcessingEnd],\n [/^\\s*<![A-Z]/, />/],\n [/^\\s*<!\\[CDATA\\[/, /\\]\\]>/],\n [/^\\s*<\\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|\\/?>|$)/i, EmptyLine],\n [/^\\s*(?:<\\/[a-z][\\w-]*\\s*>|<[a-z][\\w-]*(\\s+[a-z:_][\\w-.]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*>)\\s*$/i, EmptyLine]\n];\nfunction isHTMLBlock(line, _cx, breaking) {\n if (line.next != 60 /* '<' */)\n return -1;\n let rest = line.text.slice(line.pos);\n for (let i = 0, e = HTMLBlockStyle.length - (breaking ? 1 : 0); i < e; i++)\n if (HTMLBlockStyle[i][0].test(rest))\n return i;\n return -1;\n}\nfunction getListIndent(line, pos) {\n let indentAfter = line.countIndent(pos, line.pos, line.indent);\n let indented = line.countIndent(line.skipSpace(pos), pos, indentAfter);\n return indented >= indentAfter + 5 ? indentAfter + 1 : indented;\n}\nfunction addCodeText(marks, from, to) {\n let last = marks.length - 1;\n if (last >= 0 && marks[last].to == from && marks[last].type == Type.CodeText)\n marks[last].to = to;\n else\n marks.push(elt(Type.CodeText, from, to));\n}\n// Rules for parsing blocks. A return value of false means the rule\n// doesn't apply here, true means it does. When true is returned and\n// `p.line` has been updated, the rule is assumed to have consumed a\n// leaf block. Otherwise, it is assumed to have opened a context.\nconst DefaultBlockParsers = {\n LinkReference: undefined,\n IndentedCode(cx, line) {\n let base = line.baseIndent + 4;\n if (line.indent < base)\n return false;\n let start = line.findColumn(base);\n let from = cx.lineStart + start, to = cx.lineStart + line.text.length;\n let marks = [], pendingMarks = [];\n addCodeText(marks, from, to);\n while (cx.nextLine() && line.depth >= cx.stack.length) {\n if (line.pos == line.text.length) { // Empty\n addCodeText(pendingMarks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n pendingMarks.push(m);\n }\n else if (line.indent < base) {\n break;\n }\n else {\n if (pendingMarks.length) {\n for (let m of pendingMarks) {\n if (m.type == Type.CodeText)\n addCodeText(marks, m.from, m.to);\n else\n marks.push(m);\n }\n pendingMarks = [];\n }\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n to = cx.lineStart + line.text.length;\n let codeStart = cx.lineStart + line.findColumn(line.baseIndent + 4);\n if (codeStart < to)\n addCodeText(marks, codeStart, to);\n }\n }\n if (pendingMarks.length) {\n pendingMarks = pendingMarks.filter(m => m.type != Type.CodeText);\n if (pendingMarks.length)\n line.markers = pendingMarks.concat(line.markers);\n }\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(Type.CodeBlock, to - from), from);\n return true;\n },\n FencedCode(cx, line) {\n let fenceEnd = isFencedCode(line);\n if (fenceEnd < 0)\n return false;\n let from = cx.lineStart + line.pos, ch = line.next, len = fenceEnd - line.pos;\n let infoFrom = line.skipSpace(fenceEnd), infoTo = skipSpaceBack(line.text, line.text.length, infoFrom);\n let marks = [elt(Type.CodeMark, from, from + len)];\n if (infoFrom < infoTo)\n marks.push(elt(Type.CodeInfo, cx.lineStart + infoFrom, cx.lineStart + infoTo));\n for (let first = true; cx.nextLine() && line.depth >= cx.stack.length; first = false) {\n let i = line.pos;\n if (line.indent - line.baseIndent < 4)\n while (i < line.text.length && line.text.charCodeAt(i) == ch)\n i++;\n if (i - line.pos >= len && line.skipSpace(i) == line.text.length) {\n for (let m of line.markers)\n marks.push(m);\n marks.push(elt(Type.CodeMark, cx.lineStart + line.pos, cx.lineStart + i));\n cx.nextLine();\n break;\n }\n else {\n if (!first)\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n let textStart = cx.lineStart + line.basePos, textEnd = cx.lineStart + line.text.length;\n if (textStart < textEnd)\n addCodeText(marks, textStart, textEnd);\n }\n }\n cx.addNode(cx.buffer.writeElements(marks, -from)\n .finish(Type.FencedCode, cx.prevLineEnd() - from), from);\n return true;\n },\n Blockquote(cx, line) {\n let size = isBlockquote(line);\n if (size < 0)\n return false;\n cx.startContext(Type.Blockquote, line.pos);\n cx.addNode(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1);\n line.moveBase(line.pos + size);\n return null;\n },\n HorizontalRule(cx, line) {\n if (isHorizontalRule(line, cx, false) < 0)\n return false;\n let from = cx.lineStart + line.pos;\n cx.nextLine();\n cx.addNode(Type.HorizontalRule, from);\n return true;\n },\n BulletList(cx, line) {\n let size = isBulletList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.BulletList)\n cx.startContext(Type.BulletList, line.basePos, line.next);\n let newBase = getListIndent(line, line.pos + 1);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n OrderedList(cx, line) {\n let size = isOrderedList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.OrderedList)\n cx.startContext(Type.OrderedList, line.basePos, line.text.charCodeAt(line.pos + size - 1));\n let newBase = getListIndent(line, line.pos + size);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n ATXHeading(cx, line) {\n let size = isAtxHeading(line);\n if (size < 0)\n return false;\n let off = line.pos, from = cx.lineStart + off;\n let endOfSpace = skipSpaceBack(line.text, line.text.length, off), after = endOfSpace;\n while (after > off && line.text.charCodeAt(after - 1) == line.next)\n after--;\n if (after == endOfSpace || after == off || !space(line.text.charCodeAt(after - 1)))\n after = line.text.length;\n let buf = cx.buffer\n .write(Type.HeaderMark, 0, size)\n .writeElements(cx.parser.parseInline(line.text.slice(off + size + 1, after), from + size + 1), -from);\n if (after < line.text.length)\n buf.write(Type.HeaderMark, after - off, endOfSpace - off);\n let node = buf.finish(Type.ATXHeading1 - 1 + size, line.text.length - off);\n cx.nextLine();\n cx.addNode(node, from);\n return true;\n },\n HTMLBlock(cx, line) {\n let type = isHTMLBlock(line, cx, false);\n if (type < 0)\n return false;\n let from = cx.lineStart + line.pos, end = HTMLBlockStyle[type][1];\n let marks = [], trailing = end != EmptyLine;\n while (!end.test(line.text) && cx.nextLine()) {\n if (line.depth < cx.stack.length) {\n trailing = false;\n break;\n }\n for (let m of line.markers)\n marks.push(m);\n }\n if (trailing)\n cx.nextLine();\n let nodeType = end == CommentEnd ? Type.CommentBlock : end == ProcessingEnd ? Type.ProcessingInstructionBlock : Type.HTMLBlock;\n let to = cx.prevLineEnd();\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(nodeType, to - from), from);\n return true;\n },\n SetextHeading: undefined // Specifies relative precedence for block-continue function\n};\n// This implements a state machine that incrementally parses link references. At each\n// next line, it looks ahead to see if the line continues the reference or not. If it\n// doesn't and a valid link is available ending before that line, it finishes that.\n// Similarly, on `finish` (when the leaf is terminated by external circumstances), it\n// creates a link reference if there's a valid reference up to the current point.\nclass LinkReferenceParser {\n constructor(leaf) {\n this.stage = 0 /* RefStage.Start */;\n this.elts = [];\n this.pos = 0;\n this.start = leaf.start;\n this.advance(leaf.content);\n }\n nextLine(cx, line, leaf) {\n if (this.stage == -1 /* RefStage.Failed */)\n return false;\n let content = leaf.content + \"\\n\" + line.scrub();\n let finish = this.advance(content);\n if (finish > -1 && finish < content.length)\n return this.complete(cx, leaf, finish);\n return false;\n }\n finish(cx, leaf) {\n if ((this.stage == 2 /* RefStage.Link */ || this.stage == 3 /* RefStage.Title */) && skipSpace(leaf.content, this.pos) == leaf.content.length)\n return this.complete(cx, leaf, leaf.content.length);\n return false;\n }\n complete(cx, leaf, len) {\n cx.addLeafElement(leaf, elt(Type.LinkReference, this.start, this.start + len, this.elts));\n return true;\n }\n nextStage(elt) {\n if (elt) {\n this.pos = elt.to - this.start;\n this.elts.push(elt);\n this.stage++;\n return true;\n }\n if (elt === false)\n this.stage = -1 /* RefStage.Failed */;\n return false;\n }\n advance(content) {\n for (;;) {\n if (this.stage == -1 /* RefStage.Failed */) {\n return -1;\n }\n else if (this.stage == 0 /* RefStage.Start */) {\n if (!this.nextStage(parseLinkLabel(content, this.pos, this.start, true)))\n return -1;\n if (content.charCodeAt(this.pos) != 58 /* ':' */)\n return this.stage = -1 /* RefStage.Failed */;\n this.elts.push(elt(Type.LinkMark, this.pos + this.start, this.pos + this.start + 1));\n this.pos++;\n }\n else if (this.stage == 1 /* RefStage.Label */) {\n if (!this.nextStage(parseURL(content, skipSpace(content, this.pos), this.start)))\n return -1;\n }\n else if (this.stage == 2 /* RefStage.Link */) {\n let skip = skipSpace(content, this.pos), end = 0;\n if (skip > this.pos) {\n let title = parseLinkTitle(content, skip, this.start);\n if (title) {\n let titleEnd = lineEnd(content, title.to - this.start);\n if (titleEnd > 0) {\n this.nextStage(title);\n end = titleEnd;\n }\n }\n }\n if (!end)\n end = lineEnd(content, this.pos);\n return end > 0 && end < content.length ? end : -1;\n }\n else { // RefStage.Title\n return lineEnd(content, this.pos);\n }\n }\n }\n}\nfunction lineEnd(text, pos) {\n for (; pos < text.length; pos++) {\n let next = text.charCodeAt(pos);\n if (next == 10)\n break;\n if (!space(next))\n return -1;\n }\n return pos;\n}\nclass SetextHeadingParser {\n nextLine(cx, line, leaf) {\n let underline = line.depth < cx.stack.length ? -1 : isSetextUnderline(line);\n let next = line.next;\n if (underline < 0)\n return false;\n let underlineMark = elt(Type.HeaderMark, cx.lineStart + line.pos, cx.lineStart + underline);\n cx.nextLine();\n cx.addLeafElement(leaf, elt(next == 61 ? Type.SetextHeading1 : Type.SetextHeading2, leaf.start, cx.prevLineEnd(), [\n ...cx.parser.parseInline(leaf.content, leaf.start),\n underlineMark\n ]));\n return true;\n }\n finish() {\n return false;\n }\n}\nconst DefaultLeafBlocks = {\n LinkReference(_, leaf) { return leaf.content.charCodeAt(0) == 91 /* '[' */ ? new LinkReferenceParser(leaf) : null; },\n SetextHeading() { return new SetextHeadingParser; }\n};\nconst DefaultEndLeaf = [\n (_, line) => isAtxHeading(line) >= 0,\n (_, line) => isFencedCode(line) >= 0,\n (_, line) => isBlockquote(line) >= 0,\n (p, line) => isBulletList(line, p, true) >= 0,\n (p, line) => isOrderedList(line, p, true) >= 0,\n (p, line) => isHorizontalRule(line, p, true) >= 0,\n (p, line) => isHTMLBlock(line, p, true) >= 0\n];\nconst scanLineResult = { text: \"\", end: 0 };\n/**\nBlock-level parsing functions get access to this context object.\n*/\nclass BlockContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser configuration used.\n */\n parser, \n /**\n @internal\n */\n input, fragments, \n /**\n @internal\n */\n ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.line = new Line();\n this.atEnd = false;\n /**\n For reused nodes on gaps, we can't directly put the original\n node into the tree, since that may be bigger than its parent.\n When this happens, we create a dummy tree that is replaced by\n the proper node in `injectGaps` @internal\n */\n this.reusePlaceholders = new Map;\n this.stoppedAt = null;\n /**\n The range index that absoluteLineStart points into @internal\n */\n this.rangeI = 0;\n this.to = ranges[ranges.length - 1].to;\n this.lineStart = this.absoluteLineStart = this.absoluteLineEnd = ranges[0].from;\n this.block = CompositeBlock.create(Type.Document, 0, this.lineStart, 0, 0);\n this.stack = [this.block];\n this.fragments = fragments.length ? new FragmentCursor(fragments, input) : null;\n this.readLine();\n }\n get parsedPos() {\n return this.absoluteLineStart;\n }\n advance() {\n if (this.stoppedAt != null && this.absoluteLineStart > this.stoppedAt)\n return this.finish();\n let { line } = this;\n for (;;) {\n for (let markI = 0;;) {\n let next = line.depth < this.stack.length ? this.stack[this.stack.length - 1] : null;\n while (markI < line.markers.length && (!next || line.markers[markI].from < next.end)) {\n let mark = line.markers[markI++];\n this.addNode(mark.type, mark.from, mark.to);\n }\n if (!next)\n break;\n this.finishContext();\n }\n if (line.pos < line.text.length)\n break;\n // Empty line\n if (!this.nextLine())\n return this.finish();\n }\n if (this.fragments && this.reuseFragment(line.basePos))\n return null;\n start: for (;;) {\n for (let type of this.parser.blockParsers)\n if (type) {\n let result = type(this, line);\n if (result != false) {\n if (result == true)\n return null;\n line.forward();\n continue start;\n }\n }\n break;\n }\n let leaf = new LeafBlock(this.lineStart + line.pos, line.text.slice(line.pos));\n for (let parse of this.parser.leafBlockParsers)\n if (parse) {\n let parser = parse(this, leaf);\n if (parser)\n leaf.parsers.push(parser);\n }\n lines: while (this.nextLine()) {\n if (line.pos == line.text.length)\n break;\n if (line.indent < line.baseIndent + 4) {\n for (let stop of this.parser.endLeafBlock)\n if (stop(this, line, leaf))\n break lines;\n }\n for (let parser of leaf.parsers)\n if (parser.nextLine(this, line, leaf))\n return null;\n leaf.content += \"\\n\" + line.scrub();\n for (let m of line.markers)\n leaf.marks.push(m);\n }\n this.finishLeaf(leaf);\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n reuseFragment(start) {\n if (!this.fragments.moveTo(this.absoluteLineStart + start, this.absoluteLineStart) ||\n !this.fragments.matches(this.block.hash))\n return false;\n let taken = this.fragments.takeNodes(this);\n if (!taken)\n return false;\n this.absoluteLineStart += taken;\n this.lineStart = toRelative(this.absoluteLineStart, this.ranges);\n this.moveRangeI();\n if (this.absoluteLineStart < this.to) {\n this.lineStart++;\n this.absoluteLineStart++;\n this.readLine();\n }\n else {\n this.atEnd = true;\n this.readLine();\n }\n return true;\n }\n /**\n The number of parent blocks surrounding the current block.\n */\n get depth() {\n return this.stack.length;\n }\n /**\n Get the type of the parent block at the given depth. When no\n depth is passed, return the type of the innermost parent.\n */\n parentType(depth = this.depth - 1) {\n return this.parser.nodeSet.types[this.stack[depth].type];\n }\n /**\n Move to the next input line. This should only be called by\n (non-composite) [block parsers](#BlockParser.parse) that consume\n the line directly, or leaf block parser\n [`nextLine`](#LeafBlockParser.nextLine) methods when they\n consume the current line (and return true).\n */\n nextLine() {\n this.lineStart += this.line.text.length;\n if (this.absoluteLineEnd >= this.to) {\n this.absoluteLineStart = this.absoluteLineEnd;\n this.atEnd = true;\n this.readLine();\n return false;\n }\n else {\n this.lineStart++;\n this.absoluteLineStart = this.absoluteLineEnd + 1;\n this.moveRangeI();\n this.readLine();\n return true;\n }\n }\n /**\n Retrieve the text of the line after the current one, without\n actually moving the context's current line forward.\n */\n peekLine() {\n return this.scanLine(this.absoluteLineEnd + 1).text;\n }\n moveRangeI() {\n while (this.rangeI < this.ranges.length - 1 && this.absoluteLineStart >= this.ranges[this.rangeI].to) {\n this.rangeI++;\n this.absoluteLineStart = Math.max(this.absoluteLineStart, this.ranges[this.rangeI].from);\n }\n }\n /**\n @internal\n Collect the text for the next line.\n */\n scanLine(start) {\n let r = scanLineResult;\n r.end = start;\n if (start >= this.to) {\n r.text = \"\";\n }\n else {\n r.text = this.lineChunkAt(start);\n r.end += r.text.length;\n if (this.ranges.length > 1) {\n let textOffset = this.absoluteLineStart, rangeI = this.rangeI;\n while (this.ranges[rangeI].to < r.end) {\n rangeI++;\n let nextFrom = this.ranges[rangeI].from;\n let after = this.lineChunkAt(nextFrom);\n r.end = nextFrom + after.length;\n r.text = r.text.slice(0, this.ranges[rangeI - 1].to - textOffset) + after;\n textOffset = r.end - r.text.length;\n }\n }\n }\n return r;\n }\n /**\n @internal\n Populate this.line with the content of the next line. Skip\n leading characters covered by composite blocks.\n */\n readLine() {\n let { line } = this, { text, end } = this.scanLine(this.absoluteLineStart);\n this.absoluteLineEnd = end;\n line.reset(text);\n for (; line.depth < this.stack.length; line.depth++) {\n let cx = this.stack[line.depth], handler = this.parser.skipContextMarkup[cx.type];\n if (!handler)\n throw new Error(\"Unhandled block context \" + Type[cx.type]);\n let marks = this.line.markers.length;\n if (!handler(cx, this, line)) {\n if (this.line.markers.length > marks)\n cx.end = this.line.markers[this.line.markers.length - 1].to;\n break;\n }\n line.forward();\n }\n }\n lineChunkAt(pos) {\n let next = this.input.chunk(pos), text;\n if (!this.input.lineChunks) {\n let eol = next.indexOf(\"\\n\");\n text = eol < 0 ? next : next.slice(0, eol);\n }\n else {\n text = next == \"\\n\" ? \"\" : next;\n }\n return pos + text.length > this.to ? text.slice(0, this.to - pos) : text;\n }\n /**\n The end position of the previous line.\n */\n prevLineEnd() { return this.atEnd ? this.lineStart : this.lineStart - 1; }\n /**\n @internal\n */\n startContext(type, start, value = 0) {\n this.block = CompositeBlock.create(type, value, this.lineStart + start, this.block.hash, this.lineStart + this.line.text.length);\n this.stack.push(this.block);\n }\n /**\n Start a composite block. Should only be called from [block\n parser functions](#BlockParser.parse) that return null.\n */\n startComposite(type, start, value = 0) {\n this.startContext(this.parser.getNodeType(type), start, value);\n }\n /**\n @internal\n */\n addNode(block, from, to) {\n if (typeof block == \"number\")\n block = new Tree(this.parser.nodeSet.types[block], none, none, (to !== null && to !== void 0 ? to : this.prevLineEnd()) - from);\n this.block.addChild(block, from - this.block.from);\n }\n /**\n Add a block element. Can be called by [block\n parsers](#BlockParser.parse).\n */\n addElement(elt) {\n this.block.addChild(elt.toTree(this.parser.nodeSet), elt.from - this.block.from);\n }\n /**\n Add a block element from a [leaf parser](#LeafBlockParser). This\n makes sure any extra composite block markup (such as blockquote\n markers) inside the block are also added to the syntax tree.\n */\n addLeafElement(leaf, elt) {\n this.addNode(this.buffer\n .writeElements(injectMarks(elt.children, leaf.marks), -elt.from)\n .finish(elt.type, elt.to - elt.from), elt.from);\n }\n /**\n @internal\n */\n finishContext() {\n let cx = this.stack.pop();\n let top = this.stack[this.stack.length - 1];\n top.addChild(cx.toTree(this.parser.nodeSet), cx.from - top.from);\n this.block = top;\n }\n finish() {\n while (this.stack.length > 1)\n this.finishContext();\n return this.addGaps(this.block.toTree(this.parser.nodeSet, this.lineStart));\n }\n addGaps(tree) {\n return this.ranges.length > 1 ?\n injectGaps(this.ranges, 0, tree.topNode, this.ranges[0].from, this.reusePlaceholders) : tree;\n }\n /**\n @internal\n */\n finishLeaf(leaf) {\n for (let parser of leaf.parsers)\n if (parser.finish(this, leaf))\n return;\n let inline = injectMarks(this.parser.parseInline(leaf.content, leaf.start), leaf.marks);\n this.addNode(this.buffer\n .writeElements(inline, -leaf.start)\n .finish(Type.Paragraph, leaf.content.length), leaf.start);\n }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n /**\n @internal\n */\n get buffer() { return new Buffer(this.parser.nodeSet); }\n}\nfunction injectGaps(ranges, rangeI, tree, offset, dummies) {\n let rangeEnd = ranges[rangeI].to;\n let children = [], positions = [], start = tree.from + offset;\n function movePastNext(upto, inclusive) {\n while (inclusive ? upto >= rangeEnd : upto > rangeEnd) {\n let size = ranges[rangeI + 1].from - rangeEnd;\n offset += size;\n upto += size;\n rangeI++;\n rangeEnd = ranges[rangeI].to;\n }\n }\n for (let ch = tree.firstChild; ch; ch = ch.nextSibling) {\n movePastNext(ch.from + offset, true);\n let from = ch.from + offset, node, reuse = dummies.get(ch.tree);\n if (reuse) {\n node = reuse;\n }\n else if (ch.to + offset > rangeEnd) {\n node = injectGaps(ranges, rangeI, ch, offset, dummies);\n movePastNext(ch.to + offset, false);\n }\n else {\n node = ch.toTree();\n }\n children.push(node);\n positions.push(from - start);\n }\n movePastNext(tree.to + offset, false);\n return new Tree(tree.type, children, positions, tree.to + offset - start, tree.tree ? tree.tree.propValues : undefined);\n}\n/**\nA Markdown parser configuration.\n*/\nclass MarkdownParser extends Parser {\n /**\n @internal\n */\n constructor(\n /**\n The parser's syntax [node\n types](https://lezer.codemirror.net/docs/ref/#common.NodeSet).\n */\n nodeSet, \n /**\n @internal\n */\n blockParsers, \n /**\n @internal\n */\n leafBlockParsers, \n /**\n @internal\n */\n blockNames, \n /**\n @internal\n */\n endLeafBlock, \n /**\n @internal\n */\n skipContextMarkup, \n /**\n @internal\n */\n inlineParsers, \n /**\n @internal\n */\n inlineNames, \n /**\n @internal\n */\n wrappers) {\n super();\n this.nodeSet = nodeSet;\n this.blockParsers = blockParsers;\n this.leafBlockParsers = leafBlockParsers;\n this.blockNames = blockNames;\n this.endLeafBlock = endLeafBlock;\n this.skipContextMarkup = skipContextMarkup;\n this.inlineParsers = inlineParsers;\n this.inlineNames = inlineNames;\n this.wrappers = wrappers;\n /**\n @internal\n */\n this.nodeTypes = Object.create(null);\n for (let t of nodeSet.types)\n this.nodeTypes[t.name] = t.id;\n }\n createParse(input, fragments, ranges) {\n let parse = new BlockContext(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Reconfigure the parser.\n */\n configure(spec) {\n let config = resolveConfig(spec);\n if (!config)\n return this;\n let { nodeSet, skipContextMarkup } = this;\n let blockParsers = this.blockParsers.slice(), leafBlockParsers = this.leafBlockParsers.slice(), blockNames = this.blockNames.slice(), inlineParsers = this.inlineParsers.slice(), inlineNames = this.inlineNames.slice(), endLeafBlock = this.endLeafBlock.slice(), wrappers = this.wrappers;\n if (nonEmpty(config.defineNodes)) {\n skipContextMarkup = Object.assign({}, skipContextMarkup);\n let nodeTypes = nodeSet.types.slice(), styles;\n for (let s of config.defineNodes) {\n let { name, block, composite, style } = typeof s == \"string\" ? { name: s } : s;\n if (nodeTypes.some(t => t.name == name))\n continue;\n if (composite)\n skipContextMarkup[nodeTypes.length] =\n (bl, cx, line) => composite(cx, line, bl.value);\n let id = nodeTypes.length;\n let group = composite ? [\"Block\", \"BlockContext\"] : !block ? undefined\n : id >= Type.ATXHeading1 && id <= Type.SetextHeading2 ? [\"Block\", \"LeafBlock\", \"Heading\"] : [\"Block\", \"LeafBlock\"];\n nodeTypes.push(NodeType.define({\n id,\n name,\n props: group && [[NodeProp.group, group]]\n }));\n if (style) {\n if (!styles)\n styles = {};\n if (Array.isArray(style) || style instanceof Tag)\n styles[name] = style;\n else\n Object.assign(styles, style);\n }\n }\n nodeSet = new NodeSet(nodeTypes);\n if (styles)\n nodeSet = nodeSet.extend(styleTags(styles));\n }\n if (nonEmpty(config.props))\n nodeSet = nodeSet.extend(...config.props);\n if (nonEmpty(config.remove)) {\n for (let rm of config.remove) {\n let block = this.blockNames.indexOf(rm), inline = this.inlineNames.indexOf(rm);\n if (block > -1)\n blockParsers[block] = leafBlockParsers[block] = undefined;\n if (inline > -1)\n inlineParsers[inline] = undefined;\n }\n }\n if (nonEmpty(config.parseBlock)) {\n for (let spec of config.parseBlock) {\n let found = blockNames.indexOf(spec.name);\n if (found > -1) {\n blockParsers[found] = spec.parse;\n leafBlockParsers[found] = spec.leaf;\n }\n else {\n let pos = spec.before ? findName(blockNames, spec.before)\n : spec.after ? findName(blockNames, spec.after) + 1 : blockNames.length - 1;\n blockParsers.splice(pos, 0, spec.parse);\n leafBlockParsers.splice(pos, 0, spec.leaf);\n blockNames.splice(pos, 0, spec.name);\n }\n if (spec.endLeaf)\n endLeafBlock.push(spec.endLeaf);\n }\n }\n if (nonEmpty(config.parseInline)) {\n for (let spec of config.parseInline) {\n let found = inlineNames.indexOf(spec.name);\n if (found > -1) {\n inlineParsers[found] = spec.parse;\n }\n else {\n let pos = spec.before ? findName(inlineNames, spec.before)\n : spec.after ? findName(inlineNames, spec.after) + 1 : inlineNames.length - 1;\n inlineParsers.splice(pos, 0, spec.parse);\n inlineNames.splice(pos, 0, spec.name);\n }\n }\n }\n if (config.wrap)\n wrappers = wrappers.concat(config.wrap);\n return new MarkdownParser(nodeSet, blockParsers, leafBlockParsers, blockNames, endLeafBlock, skipContextMarkup, inlineParsers, inlineNames, wrappers);\n }\n /**\n @internal\n */\n getNodeType(name) {\n let found = this.nodeTypes[name];\n if (found == null)\n throw new RangeError(`Unknown node type '${name}'`);\n return found;\n }\n /**\n Parse the given piece of inline text at the given offset,\n returning an array of [`Element`](#Element) objects representing\n the inline content.\n */\n parseInline(text, offset) {\n let cx = new InlineContext(this, text, offset);\n outer: for (let pos = offset; pos < cx.end;) {\n let next = cx.char(pos);\n for (let token of this.inlineParsers)\n if (token) {\n let result = token(cx, next, pos);\n if (result >= 0) {\n pos = result;\n continue outer;\n }\n }\n pos++;\n }\n return cx.resolveMarkers(0);\n }\n}\nfunction nonEmpty(a) {\n return a != null && a.length > 0;\n}\nfunction resolveConfig(spec) {\n if (!Array.isArray(spec))\n return spec;\n if (spec.length == 0)\n return null;\n let conf = resolveConfig(spec[0]);\n if (spec.length == 1)\n return conf;\n let rest = resolveConfig(spec.slice(1));\n if (!rest || !conf)\n return conf || rest;\n let conc = (a, b) => (a || none).concat(b || none);\n let wrapA = conf.wrap, wrapB = rest.wrap;\n return {\n props: conc(conf.props, rest.props),\n defineNodes: conc(conf.defineNodes, rest.defineNodes),\n parseBlock: conc(conf.parseBlock, rest.parseBlock),\n parseInline: conc(conf.parseInline, rest.parseInline),\n remove: conc(conf.remove, rest.remove),\n wrap: !wrapA ? wrapB : !wrapB ? wrapA :\n (inner, input, fragments, ranges) => wrapA(wrapB(inner, input, fragments, ranges), input, fragments, ranges)\n };\n}\nfunction findName(names, name) {\n let found = names.indexOf(name);\n if (found < 0)\n throw new RangeError(`Position specified relative to unknown parser ${name}`);\n return found;\n}\nlet nodeTypes = [NodeType.none];\nfor (let i = 1, name; name = Type[i]; i++) {\n nodeTypes[i] = NodeType.define({\n id: i,\n name,\n props: i >= Type.Escape ? [] : [[NodeProp.group, i in DefaultSkipMarkup ? [\"Block\", \"BlockContext\"] : [\"Block\", \"LeafBlock\"]]],\n top: name == \"Document\"\n });\n}\nconst none = [];\nclass Buffer {\n constructor(nodeSet) {\n this.nodeSet = nodeSet;\n this.content = [];\n this.nodes = [];\n }\n write(type, from, to, children = 0) {\n this.content.push(type, from, to, 4 + children * 4);\n return this;\n }\n writeElements(elts, offset = 0) {\n for (let e of elts)\n e.writeTo(this, offset);\n return this;\n }\n finish(type, length) {\n return Tree.build({\n buffer: this.content,\n nodeSet: this.nodeSet,\n reused: this.nodes,\n topID: type,\n length\n });\n }\n}\n/**\nElements are used to compose syntax nodes during parsing.\n*/\nclass Element {\n /**\n @internal\n */\n constructor(\n /**\n The node's\n [id](https://lezer.codemirror.net/docs/ref/#common.NodeType.id).\n */\n type, \n /**\n The start of the node, as an offset from the start of the document.\n */\n from, \n /**\n The end of the node.\n */\n to, \n /**\n The node's child nodes @internal\n */\n children = none) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.children = children;\n }\n /**\n @internal\n */\n writeTo(buf, offset) {\n let startOff = buf.content.length;\n buf.writeElements(this.children, offset);\n buf.content.push(this.type, this.from + offset, this.to + offset, buf.content.length + 4 - startOff);\n }\n /**\n @internal\n */\n toTree(nodeSet) {\n return new Buffer(nodeSet).writeElements(this.children, -this.from).finish(this.type, this.to - this.from);\n }\n}\nclass TreeElement {\n constructor(tree, from) {\n this.tree = tree;\n this.from = from;\n }\n get to() { return this.from + this.tree.length; }\n get type() { return this.tree.type.id; }\n get children() { return none; }\n writeTo(buf, offset) {\n buf.nodes.push(this.tree);\n buf.content.push(buf.nodes.length - 1, this.from + offset, this.to + offset, -1);\n }\n toTree() { return this.tree; }\n}\nfunction elt(type, from, to, children) {\n return new Element(type, from, to, children);\n}\nconst EmphasisUnderscore = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst EmphasisAsterisk = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst LinkStart = {}, ImageStart = {};\nclass InlineDelimiter {\n constructor(type, from, to, side) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.side = side;\n }\n}\nconst Escapable = \"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\";\nlet Punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\u2010-\\u2027]/;\ntry {\n Punctuation = new RegExp(\"[\\\\p{S}|\\\\p{P}]\", \"u\");\n}\ncatch (_) { }\nconst DefaultInline = {\n Escape(cx, next, start) {\n if (next != 92 /* '\\\\' */ || start == cx.end - 1)\n return -1;\n let escaped = cx.char(start + 1);\n for (let i = 0; i < Escapable.length; i++)\n if (Escapable.charCodeAt(i) == escaped)\n return cx.append(elt(Type.Escape, start, start + 2));\n return -1;\n },\n Entity(cx, next, start) {\n if (next != 38 /* '&' */)\n return -1;\n let m = /^(?:#\\d+|#x[a-f\\d]+|\\w+);/i.exec(cx.slice(start + 1, start + 31));\n return m ? cx.append(elt(Type.Entity, start, start + 1 + m[0].length)) : -1;\n },\n InlineCode(cx, next, start) {\n if (next != 96 /* '`' */ || start && cx.char(start - 1) == 96)\n return -1;\n let pos = start + 1;\n while (pos < cx.end && cx.char(pos) == 96)\n pos++;\n let size = pos - start, curSize = 0;\n for (; pos < cx.end; pos++) {\n if (cx.char(pos) == 96) {\n curSize++;\n if (curSize == size && cx.char(pos + 1) != 96)\n return cx.append(elt(Type.InlineCode, start, pos + 1, [\n elt(Type.CodeMark, start, start + size),\n elt(Type.CodeMark, pos + 1 - size, pos + 1)\n ]));\n }\n else {\n curSize = 0;\n }\n }\n return -1;\n },\n HTMLTag(cx, next, start) {\n if (next != 60 /* '<' */ || start == cx.end - 1)\n return -1;\n let after = cx.slice(start + 1, cx.end);\n let url = /^(?:[a-z][-\\w+.]+:[^\\s>]+|[a-z\\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?(?:\\.[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?)*)>/i.exec(after);\n if (url) {\n return cx.append(elt(Type.Autolink, start, start + 1 + url[0].length, [\n elt(Type.LinkMark, start, start + 1),\n // url[0] includes the closing bracket, so exclude it from this slice\n elt(Type.URL, start + 1, start + url[0].length),\n elt(Type.LinkMark, start + url[0].length, start + 1 + url[0].length)\n ]));\n }\n let comment = /^!--[^>](?:-[^-]|[^-])*?-->/i.exec(after);\n if (comment)\n return cx.append(elt(Type.Comment, start, start + 1 + comment[0].length));\n let procInst = /^\\?[^]*?\\?>/.exec(after);\n if (procInst)\n return cx.append(elt(Type.ProcessingInstruction, start, start + 1 + procInst[0].length));\n let m = /^(?:![A-Z][^]*?>|!\\[CDATA\\[[^]*?\\]\\]>|\\/\\s*[a-zA-Z][\\w-]*\\s*>|\\s*[a-zA-Z][\\w-]*(\\s+[a-zA-Z:_][\\w-.:]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*(\\/\\s*)?>)/.exec(after);\n if (!m)\n return -1;\n return cx.append(elt(Type.HTMLTag, start, start + 1 + m[0].length));\n },\n Emphasis(cx, next, start) {\n if (next != 95 && next != 42)\n return -1;\n let pos = start + 1;\n while (cx.char(pos) == next)\n pos++;\n let before = cx.slice(start - 1, start), after = cx.slice(pos, pos + 1);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let leftFlanking = !sAfter && (!pAfter || sBefore || pBefore);\n let rightFlanking = !sBefore && (!pBefore || sAfter || pAfter);\n let canOpen = leftFlanking && (next == 42 || !rightFlanking || pBefore);\n let canClose = rightFlanking && (next == 42 || !leftFlanking || pAfter);\n return cx.append(new InlineDelimiter(next == 95 ? EmphasisUnderscore : EmphasisAsterisk, start, pos, (canOpen ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (canClose ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n },\n HardBreak(cx, next, start) {\n if (next == 92 /* '\\\\' */ && cx.char(start + 1) == 10 /* '\\n' */)\n return cx.append(elt(Type.HardBreak, start, start + 2));\n if (next == 32) {\n let pos = start + 1;\n while (cx.char(pos) == 32)\n pos++;\n if (cx.char(pos) == 10 && pos >= start + 2)\n return cx.append(elt(Type.HardBreak, start, pos + 1));\n }\n return -1;\n },\n Link(cx, next, start) {\n return next == 91 /* '[' */ ? cx.append(new InlineDelimiter(LinkStart, start, start + 1, 1 /* Mark.Open */)) : -1;\n },\n Image(cx, next, start) {\n return next == 33 /* '!' */ && cx.char(start + 1) == 91 /* '[' */\n ? cx.append(new InlineDelimiter(ImageStart, start, start + 2, 1 /* Mark.Open */)) : -1;\n },\n LinkEnd(cx, next, start) {\n if (next != 93 /* ']' */)\n return -1;\n // Scanning back to the next link/image start marker\n for (let i = cx.parts.length - 1; i >= 0; i--) {\n let part = cx.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart)) {\n // If this one has been set invalid (because it would produce\n // a nested link) or there's no valid link here ignore both.\n if (!part.side || cx.skipSpace(part.to) == start && !/[(\\[]/.test(cx.slice(start + 1, start + 2))) {\n cx.parts[i] = null;\n return -1;\n }\n // Finish the content and replace the entire range in\n // this.parts with the link/image node.\n let content = cx.takeContent(i);\n let link = cx.parts[i] = finishLink(cx, content, part.type == LinkStart ? Type.Link : Type.Image, part.from, start + 1);\n // Set any open-link markers before this link to invalid.\n if (part.type == LinkStart)\n for (let j = 0; j < i; j++) {\n let p = cx.parts[j];\n if (p instanceof InlineDelimiter && p.type == LinkStart)\n p.side = 0 /* Mark.None */;\n }\n return link.to;\n }\n }\n return -1;\n }\n};\nfunction finishLink(cx, content, type, start, startPos) {\n let { text } = cx, next = cx.char(startPos), endPos = startPos;\n content.unshift(elt(Type.LinkMark, start, start + (type == Type.Image ? 2 : 1)));\n content.push(elt(Type.LinkMark, startPos - 1, startPos));\n if (next == 40 /* '(' */) {\n let pos = cx.skipSpace(startPos + 1);\n let dest = parseURL(text, pos - cx.offset, cx.offset), title;\n if (dest) {\n pos = cx.skipSpace(dest.to);\n // The destination and title must be separated by whitespace\n if (pos != dest.to) {\n title = parseLinkTitle(text, pos - cx.offset, cx.offset);\n if (title)\n pos = cx.skipSpace(title.to);\n }\n }\n if (cx.char(pos) == 41 /* ')' */) {\n content.push(elt(Type.LinkMark, startPos, startPos + 1));\n endPos = pos + 1;\n if (dest)\n content.push(dest);\n if (title)\n content.push(title);\n content.push(elt(Type.LinkMark, pos, endPos));\n }\n }\n else if (next == 91 /* '[' */) {\n let label = parseLinkLabel(text, startPos - cx.offset, cx.offset, false);\n if (label) {\n content.push(label);\n endPos = label.to;\n }\n }\n return elt(type, start, endPos, content);\n}\n// These return `null` when falling off the end of the input, `false`\n// when parsing fails otherwise (for use in the incremental link\n// reference parser).\nfunction parseURL(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next == 60 /* '<' */) {\n for (let pos = start + 1; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (ch == 62 /* '>' */)\n return elt(Type.URL, start + offset, pos + 1 + offset);\n if (ch == 60 || ch == 10 /* '<\\n' */)\n return false;\n }\n return null;\n }\n else {\n let depth = 0, pos = start;\n for (let escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (space(ch)) {\n break;\n }\n else if (escaped) {\n escaped = false;\n }\n else if (ch == 40 /* '(' */) {\n depth++;\n }\n else if (ch == 41 /* ')' */) {\n if (!depth)\n break;\n depth--;\n }\n else if (ch == 92 /* '\\\\' */) {\n escaped = true;\n }\n }\n return pos > start ? elt(Type.URL, start + offset, pos + offset) : pos == text.length ? null : false;\n }\n}\nfunction parseLinkTitle(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next != 39 && next != 34 && next != 40 /* '\"\\'(' */)\n return false;\n let end = next == 40 ? 41 : next;\n for (let pos = start + 1, escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == end)\n return elt(Type.LinkTitle, start + offset, pos + 1 + offset);\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n return null;\n}\nfunction parseLinkLabel(text, start, offset, requireNonWS) {\n for (let escaped = false, pos = start + 1, end = Math.min(text.length, pos + 999); pos < end; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == 93 /* ']' */)\n return requireNonWS ? false : elt(Type.LinkLabel, start + offset, pos + 1 + offset);\n else {\n if (requireNonWS && !space(ch))\n requireNonWS = false;\n if (ch == 91 /* '[' */)\n return false;\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n }\n return null;\n}\n/**\nInline parsing functions get access to this context, and use it to\nread the content and emit syntax nodes.\n*/\nclass InlineContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser that is being used.\n */\n parser, \n /**\n The text of this inline section.\n */\n text, \n /**\n The starting offset of the section in the document.\n */\n offset) {\n this.parser = parser;\n this.text = text;\n this.offset = offset;\n /**\n @internal\n */\n this.parts = [];\n }\n /**\n Get the character code at the given (document-relative)\n position.\n */\n char(pos) { return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset); }\n /**\n The position of the end of this inline section.\n */\n get end() { return this.offset + this.text.length; }\n /**\n Get a substring of this inline section. Again uses\n document-relative positions.\n */\n slice(from, to) { return this.text.slice(from - this.offset, to - this.offset); }\n /**\n @internal\n */\n append(elt) {\n this.parts.push(elt);\n return elt.to;\n }\n /**\n Add a [delimiter](#DelimiterType) at this given position. `open`\n and `close` indicate whether this delimiter is opening, closing,\n or both. Returns the end of the delimiter, for convenient\n returning from [parse functions](#InlineParser.parse).\n */\n addDelimiter(type, from, to, open, close) {\n return this.append(new InlineDelimiter(type, from, to, (open ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (close ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n }\n /**\n Returns true when there is an unmatched link or image opening\n token before the current position.\n */\n get hasOpenLink() {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart))\n return true;\n }\n return false;\n }\n /**\n Add an inline element. Returns the end of the element.\n */\n addElement(elt) {\n return this.append(elt);\n }\n /**\n Resolve markers between this.parts.length and from, wrapping matched markers in the\n appropriate node and updating the content of this.parts. @internal\n */\n resolveMarkers(from) {\n // Scan forward, looking for closing tokens\n for (let i = from; i < this.parts.length; i++) {\n let close = this.parts[i];\n if (!(close instanceof InlineDelimiter && close.type.resolve && (close.side & 2 /* Mark.Close */)))\n continue;\n let emp = close.type == EmphasisUnderscore || close.type == EmphasisAsterisk;\n let closeSize = close.to - close.from;\n let open, j = i - 1;\n // Continue scanning for a matching opening token\n for (; j >= from; j--) {\n let part = this.parts[j];\n if (part instanceof InlineDelimiter && (part.side & 1 /* Mark.Open */) && part.type == close.type &&\n // Ignore emphasis delimiters where the character count doesn't match\n !(emp && ((close.side & 1 /* Mark.Open */) || (part.side & 2 /* Mark.Close */)) &&\n (part.to - part.from + closeSize) % 3 == 0 && ((part.to - part.from) % 3 || closeSize % 3))) {\n open = part;\n break;\n }\n }\n if (!open)\n continue;\n let type = close.type.resolve, content = [];\n let start = open.from, end = close.to;\n // Emphasis marker effect depends on the character count. Size consumed is minimum of the two\n // markers.\n if (emp) {\n let size = Math.min(2, open.to - open.from, closeSize);\n start = open.to - size;\n end = close.from + size;\n type = size == 1 ? \"Emphasis\" : \"StrongEmphasis\";\n }\n // Move the covered region into content, optionally adding marker nodes\n if (open.type.mark)\n content.push(this.elt(open.type.mark, start, open.to));\n for (let k = j + 1; k < i; k++) {\n if (this.parts[k] instanceof Element)\n content.push(this.parts[k]);\n this.parts[k] = null;\n }\n if (close.type.mark)\n content.push(this.elt(close.type.mark, close.from, end));\n let element = this.elt(type, start, end, content);\n // If there are leftover emphasis marker characters, shrink the close/open markers. Otherwise, clear them.\n this.parts[j] = emp && open.from != start ? new InlineDelimiter(open.type, open.from, start, open.side) : null;\n let keep = this.parts[i] = emp && close.to != end ? new InlineDelimiter(close.type, end, close.to, close.side) : null;\n // Insert the new element in this.parts\n if (keep)\n this.parts.splice(i, 0, element);\n else\n this.parts[i] = element;\n }\n // Collect the elements remaining in this.parts into an array.\n let result = [];\n for (let i = from; i < this.parts.length; i++) {\n let part = this.parts[i];\n if (part instanceof Element)\n result.push(part);\n }\n return result;\n }\n /**\n Find an opening delimiter of the given type. Returns `null` if\n no delimiter is found, or an index that can be passed to\n [`takeContent`](#InlineContext.takeContent) otherwise.\n */\n findOpeningDelimiter(type) {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && part.type == type && (part.side & 1 /* Mark.Open */))\n return i;\n }\n return null;\n }\n /**\n Remove all inline elements and delimiters starting from the\n given index (which you should get from\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter),\n resolve delimiters inside of them, and return them as an array\n of elements.\n */\n takeContent(startIndex) {\n let content = this.resolveMarkers(startIndex);\n this.parts.length = startIndex;\n return content;\n }\n /**\n Return the delimiter at the given index. Mostly useful to get\n additional info out of a delimiter index returned by\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter).\n Returns null if there is no delimiter at this index.\n */\n getDelimiterAt(index) {\n let part = this.parts[index];\n return part instanceof InlineDelimiter ? part : null;\n }\n /**\n Skip space after the given (document) position, returning either\n the position of the next non-space character or the end of the\n section.\n */\n skipSpace(from) { return skipSpace(this.text, from - this.offset) + this.offset; }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n}\n/**\nThe opening delimiter type used by the standard link parser.\n*/\nInlineContext.linkStart = LinkStart;\n/**\nOpening delimiter type used for standard images.\n*/\nInlineContext.imageStart = ImageStart;\nfunction injectMarks(elements, marks) {\n if (!marks.length)\n return elements;\n if (!elements.length)\n return marks;\n let elts = elements.slice(), eI = 0;\n for (let mark of marks) {\n while (eI < elts.length && elts[eI].to < mark.to)\n eI++;\n if (eI < elts.length && elts[eI].from < mark.from) {\n let e = elts[eI];\n if (e instanceof Element)\n elts[eI] = new Element(e.type, e.from, e.to, injectMarks(e.children, [mark]));\n }\n else {\n elts.splice(eI++, 0, mark);\n }\n }\n return elts;\n}\n// These are blocks that can span blank lines, and should thus only be\n// reused if their next sibling is also being reused.\nconst NotLast = [Type.CodeBlock, Type.ListItem, Type.OrderedList, Type.BulletList];\nclass FragmentCursor {\n constructor(fragments, input) {\n this.fragments = fragments;\n this.input = input;\n // Index into fragment array\n this.i = 0;\n // Active fragment\n this.fragment = null;\n this.fragmentEnd = -1;\n // Cursor into the current fragment, if any. When `moveTo` returns\n // true, this points at the first block after `pos`.\n this.cursor = null;\n if (fragments.length)\n this.fragment = fragments[this.i++];\n }\n nextFragment() {\n this.fragment = this.i < this.fragments.length ? this.fragments[this.i++] : null;\n this.cursor = null;\n this.fragmentEnd = -1;\n }\n moveTo(pos, lineStart) {\n while (this.fragment && this.fragment.to <= pos)\n this.nextFragment();\n if (!this.fragment || this.fragment.from > (pos ? pos - 1 : 0))\n return false;\n if (this.fragmentEnd < 0) {\n let end = this.fragment.to;\n while (end > 0 && this.input.read(end - 1, end) != \"\\n\")\n end--;\n this.fragmentEnd = end ? end - 1 : 0;\n }\n let c = this.cursor;\n if (!c) {\n c = this.cursor = this.fragment.tree.cursor();\n c.firstChild();\n }\n let rPos = pos + this.fragment.offset;\n while (c.to <= rPos)\n if (!c.parent())\n return false;\n for (;;) {\n if (c.from >= rPos)\n return this.fragment.from <= lineStart;\n if (!c.childAfter(rPos))\n return false;\n }\n }\n matches(hash) {\n let tree = this.cursor.tree;\n return tree && tree.prop(NodeProp.contextHash) == hash;\n }\n takeNodes(cx) {\n let cur = this.cursor, off = this.fragment.offset, fragEnd = this.fragmentEnd - (this.fragment.openEnd ? 1 : 0);\n let start = cx.absoluteLineStart, end = start, blockI = cx.block.children.length;\n let prevEnd = end, prevI = blockI;\n for (;;) {\n if (cur.to - off > fragEnd) {\n if (cur.type.isAnonymous && cur.firstChild())\n continue;\n break;\n }\n let pos = toRelative(cur.from - off, cx.ranges);\n if (cur.to - off <= cx.ranges[cx.rangeI].to) { // Fits in current range\n cx.addNode(cur.tree, pos);\n }\n else {\n let dummy = new Tree(cx.parser.nodeSet.types[Type.Paragraph], [], [], 0, cx.block.hashProp);\n cx.reusePlaceholders.set(dummy, cur.tree);\n cx.addNode(dummy, pos);\n }\n // Taken content must always end in a block, because incremental\n // parsing happens on block boundaries. Never stop directly\n // after an indented code block, since those can continue after\n // any number of blank lines.\n if (cur.type.is(\"Block\")) {\n if (NotLast.indexOf(cur.type.id) < 0) {\n end = cur.to - off;\n blockI = cx.block.children.length;\n }\n else {\n end = prevEnd;\n blockI = prevI;\n prevEnd = cur.to - off;\n prevI = cx.block.children.length;\n }\n }\n if (!cur.nextSibling())\n break;\n }\n while (cx.block.children.length > blockI) {\n cx.block.children.pop();\n cx.block.positions.pop();\n }\n return end - start;\n }\n}\n// Convert an input-stream-relative position to a\n// Markdown-doc-relative position by subtracting the size of all input\n// gaps before `abs`.\nfunction toRelative(abs, ranges) {\n let pos = abs;\n for (let i = 1; i < ranges.length; i++) {\n let gapFrom = ranges[i - 1].to, gapTo = ranges[i].from;\n if (gapFrom < abs)\n pos -= gapTo - gapFrom;\n }\n return pos;\n}\nconst markdownHighlighting = styleTags({\n \"Blockquote/...\": tags.quote,\n HorizontalRule: tags.contentSeparator,\n \"ATXHeading1/... SetextHeading1/...\": tags.heading1,\n \"ATXHeading2/... SetextHeading2/...\": tags.heading2,\n \"ATXHeading3/...\": tags.heading3,\n \"ATXHeading4/...\": tags.heading4,\n \"ATXHeading5/...\": tags.heading5,\n \"ATXHeading6/...\": tags.heading6,\n \"Comment CommentBlock\": tags.comment,\n Escape: tags.escape,\n Entity: tags.character,\n \"Emphasis/...\": tags.emphasis,\n \"StrongEmphasis/...\": tags.strong,\n \"Link/... Image/...\": tags.link,\n \"OrderedList/... BulletList/...\": tags.list,\n \"BlockQuote/...\": tags.quote,\n \"InlineCode CodeText\": tags.monospace,\n \"URL Autolink\": tags.url,\n \"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\": tags.processingInstruction,\n \"CodeInfo LinkLabel\": tags.labelName,\n LinkTitle: tags.string,\n Paragraph: tags.content\n});\n/**\nThe default CommonMark parser.\n*/\nconst parser = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);\n\nfunction leftOverSpace(node, from, to) {\n let ranges = [];\n for (let n = node.firstChild, pos = from;; n = n.nextSibling) {\n let nextPos = n ? n.from : to;\n if (nextPos > pos)\n ranges.push({ from: pos, to: nextPos });\n if (!n)\n break;\n pos = n.to;\n }\n return ranges;\n}\n/**\nCreate a Markdown extension to enable nested parsing on code\nblocks and/or embedded HTML.\n*/\nfunction parseCode(config) {\n let { codeParser, htmlParser } = config;\n let wrap = parseMixed((node, input) => {\n let id = node.type.id;\n if (codeParser && (id == Type.CodeBlock || id == Type.FencedCode)) {\n let info = \"\";\n if (id == Type.FencedCode) {\n let infoNode = node.node.getChild(Type.CodeInfo);\n if (infoNode)\n info = input.read(infoNode.from, infoNode.to);\n }\n let parser = codeParser(info);\n if (parser)\n return { parser, overlay: node => node.type.id == Type.CodeText };\n }\n else if (htmlParser && (id == Type.HTMLBlock || id == Type.HTMLTag || id == Type.CommentBlock)) {\n return { parser: htmlParser, overlay: leftOverSpace(node.node, node.from, node.to) };\n }\n return null;\n });\n return { wrap };\n}\n\nconst StrikethroughDelim = { resolve: \"Strikethrough\", mark: \"StrikethroughMark\" };\n/**\nAn extension that implements\n[GFM-style](https://github.github.com/gfm/#strikethrough-extension-)\nStrikethrough syntax using `~~` delimiters.\n*/\nconst Strikethrough = {\n defineNodes: [{\n name: \"Strikethrough\",\n style: { \"Strikethrough/...\": tags.strikethrough }\n }, {\n name: \"StrikethroughMark\",\n style: tags.processingInstruction\n }],\n parseInline: [{\n name: \"Strikethrough\",\n parse(cx, next, pos) {\n if (next != 126 /* '~' */ || cx.char(pos + 1) != 126 || cx.char(pos + 2) == 126)\n return -1;\n let before = cx.slice(pos - 1, pos), after = cx.slice(pos + 2, pos + 3);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n return cx.addDelimiter(StrikethroughDelim, pos, pos + 2, !sAfter && (!pAfter || sBefore || pBefore), !sBefore && (!pBefore || sAfter || pAfter));\n },\n after: \"Emphasis\"\n }]\n};\n// Parse a line as a table row and return the row count. When `elts`\n// is given, push syntax elements for the content onto it.\nfunction parseRow(cx, line, startI = 0, elts, offset = 0) {\n let count = 0, first = true, cellStart = -1, cellEnd = -1, esc = false;\n let parseCell = () => {\n elts.push(cx.elt(\"TableCell\", offset + cellStart, offset + cellEnd, cx.parser.parseInline(line.slice(cellStart, cellEnd), offset + cellStart)));\n };\n for (let i = startI; i < line.length; i++) {\n let next = line.charCodeAt(i);\n if (next == 124 /* '|' */ && !esc) {\n if (!first || cellStart > -1)\n count++;\n first = false;\n if (elts) {\n if (cellStart > -1)\n parseCell();\n elts.push(cx.elt(\"TableDelimiter\", i + offset, i + offset + 1));\n }\n cellStart = cellEnd = -1;\n }\n else if (esc || next != 32 && next != 9) {\n if (cellStart < 0)\n cellStart = i;\n cellEnd = i + 1;\n }\n esc = !esc && next == 92;\n }\n if (cellStart > -1) {\n count++;\n if (elts)\n parseCell();\n }\n return count;\n}\nfunction hasPipe(str, start) {\n for (let i = start; i < str.length; i++) {\n let next = str.charCodeAt(i);\n if (next == 124 /* '|' */)\n return true;\n if (next == 92 /* '\\\\' */)\n i++;\n }\n return false;\n}\nconst delimiterLine = /^\\|?(\\s*:?-+:?\\s*\\|)+(\\s*:?-+:?\\s*)?$/;\nclass TableParser {\n constructor() {\n // Null means we haven't seen the second line yet, false means this\n // isn't a table, and an array means this is a table and we've\n // parsed the given rows so far.\n this.rows = null;\n }\n nextLine(cx, line, leaf) {\n if (this.rows == null) { // Second line\n this.rows = false;\n let lineText;\n if ((line.next == 45 || line.next == 58 || line.next == 124 /* '-:|' */) &&\n delimiterLine.test(lineText = line.text.slice(line.pos))) {\n let firstRow = [], firstCount = parseRow(cx, leaf.content, 0, firstRow, leaf.start);\n if (firstCount == parseRow(cx, lineText, line.pos))\n this.rows = [cx.elt(\"TableHeader\", leaf.start, leaf.start + leaf.content.length, firstRow),\n cx.elt(\"TableDelimiter\", cx.lineStart + line.pos, cx.lineStart + line.text.length)];\n }\n }\n else if (this.rows) { // Line after the second\n let content = [];\n parseRow(cx, line.text, line.pos, content, cx.lineStart);\n this.rows.push(cx.elt(\"TableRow\", cx.lineStart + line.pos, cx.lineStart + line.text.length, content));\n }\n return false;\n }\n finish(cx, leaf) {\n if (!this.rows)\n return false;\n cx.addLeafElement(leaf, cx.elt(\"Table\", leaf.start, leaf.start + leaf.content.length, this.rows));\n return true;\n }\n}\n/**\nThis extension provides\n[GFM-style](https://github.github.com/gfm/#tables-extension-)\ntables, using syntax like this:\n\n```\n| head 1 | head 2 |\n| --- | --- |\n| cell 1 | cell 2 |\n```\n*/\nconst Table = {\n defineNodes: [\n { name: \"Table\", block: true },\n { name: \"TableHeader\", style: { \"TableHeader/...\": tags.heading } },\n \"TableRow\",\n { name: \"TableCell\", style: tags.content },\n { name: \"TableDelimiter\", style: tags.processingInstruction },\n ],\n parseBlock: [{\n name: \"Table\",\n leaf(_, leaf) { return hasPipe(leaf.content, 0) ? new TableParser : null; },\n endLeaf(cx, line, leaf) {\n if (leaf.parsers.some(p => p instanceof TableParser) || !hasPipe(line.text, line.basePos))\n return false;\n let next = cx.peekLine();\n return delimiterLine.test(next) && parseRow(cx, line.text, line.basePos) == parseRow(cx, next, line.basePos);\n },\n before: \"SetextHeading\"\n }]\n};\nclass TaskParser {\n nextLine() { return false; }\n finish(cx, leaf) {\n cx.addLeafElement(leaf, cx.elt(\"Task\", leaf.start, leaf.start + leaf.content.length, [\n cx.elt(\"TaskMarker\", leaf.start, leaf.start + 3),\n ...cx.parser.parseInline(leaf.content.slice(3), leaf.start + 3)\n ]));\n return true;\n }\n}\n/**\nExtension providing\n[GFM-style](https://github.github.com/gfm/#task-list-items-extension-)\ntask list items, where list items can be prefixed with `[ ]` or\n`[x]` to add a checkbox.\n*/\nconst TaskList = {\n defineNodes: [\n { name: \"Task\", block: true, style: tags.list },\n { name: \"TaskMarker\", style: tags.atom }\n ],\n parseBlock: [{\n name: \"TaskList\",\n leaf(cx, leaf) {\n return /^\\[[ xX]\\][ \\t]/.test(leaf.content) && cx.parentType().name == \"ListItem\" ? new TaskParser : null;\n },\n after: \"SetextHeading\"\n }]\n};\nconst autolinkRE = /(www\\.)|(https?:\\/\\/)|([\\w.+-]{1,100}@)|(mailto:|xmpp:)/gy;\nconst urlRE = /[\\w-]+(\\.[\\w-]+)+(\\/[^\\s<]*)?/gy;\nconst lastTwoDomainWords = /[\\w-]+\\.[\\w-]+($|\\/)/;\nconst emailRE = /[\\w.+-]+@[\\w-]+(\\.[\\w.-]+)+/gy;\nconst xmppResourceRE = /\\/[a-zA-Z\\d@.]+/gy;\nfunction count(str, from, to, ch) {\n let result = 0;\n for (let i = from; i < to; i++)\n if (str[i] == ch)\n result++;\n return result;\n}\nfunction autolinkURLEnd(text, from) {\n urlRE.lastIndex = from;\n let m = urlRE.exec(text);\n if (!m || lastTwoDomainWords.exec(m[0])[0].indexOf(\"_\") > -1)\n return -1;\n let end = from + m[0].length;\n for (;;) {\n let last = text[end - 1], m;\n if (/[?!.,:*_~]/.test(last) ||\n last == \")\" && count(text, from, end, \")\") > count(text, from, end, \"(\"))\n end--;\n else if (last == \";\" && (m = /&(?:#\\d+|#x[a-f\\d]+|\\w+);$/.exec(text.slice(from, end))))\n end = from + m.index;\n else\n break;\n }\n return end;\n}\nfunction autolinkEmailEnd(text, from) {\n emailRE.lastIndex = from;\n let m = emailRE.exec(text);\n if (!m)\n return -1;\n let last = m[0][m[0].length - 1];\n return last == \"_\" || last == \"-\" ? -1 : from + m[0].length - (last == \".\" ? 1 : 0);\n}\n/**\nExtension that implements autolinking for\n`www.`/`http://`/`https://`/`mailto:`/`xmpp:` URLs and email\naddresses.\n*/\nconst Autolink = {\n parseInline: [{\n name: \"Autolink\",\n parse(cx, next, absPos) {\n let pos = absPos - cx.offset;\n if (pos && /\\w/.test(cx.text[pos - 1]))\n return -1;\n autolinkRE.lastIndex = pos;\n let m = autolinkRE.exec(cx.text), end = -1;\n if (!m)\n return -1;\n if (m[1] || m[2]) { // www., http://\n end = autolinkURLEnd(cx.text, pos + m[0].length);\n if (end > -1 && cx.hasOpenLink) {\n let noBracket = /([^\\[\\]]|\\[[^\\]]*\\])*/.exec(cx.text.slice(pos, end));\n end = pos + noBracket[0].length;\n }\n }\n else if (m[3]) { // email address\n end = autolinkEmailEnd(cx.text, pos);\n }\n else { // mailto:/xmpp:\n end = autolinkEmailEnd(cx.text, pos + m[0].length);\n if (end > -1 && m[0] == \"xmpp:\") {\n xmppResourceRE.lastIndex = end;\n m = xmppResourceRE.exec(cx.text);\n if (m)\n end = m.index + m[0].length;\n }\n }\n if (end < 0)\n return -1;\n cx.addElement(cx.elt(\"URL\", absPos, end + cx.offset));\n return end + cx.offset;\n }\n }]\n};\n/**\nExtension bundle containing [`Table`](#Table),\n[`TaskList`](#TaskList), [`Strikethrough`](#Strikethrough), and\n[`Autolink`](#Autolink).\n*/\nconst GFM = [Table, TaskList, Strikethrough, Autolink];\nfunction parseSubSuper(ch, node, mark) {\n return (cx, next, pos) => {\n if (next != ch || cx.char(pos + 1) == ch)\n return -1;\n let elts = [cx.elt(mark, pos, pos + 1)];\n for (let i = pos + 1; i < cx.end; i++) {\n let next = cx.char(i);\n if (next == ch)\n return cx.addElement(cx.elt(node, pos, i + 1, elts.concat(cx.elt(mark, i, i + 1))));\n if (next == 92 /* '\\\\' */)\n elts.push(cx.elt(\"Escape\", i, i++ + 2));\n if (space(next))\n break;\n }\n return -1;\n };\n}\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsuperscript using `^` markers.\n*/\nconst Superscript = {\n defineNodes: [\n { name: \"Superscript\", style: tags.special(tags.content) },\n { name: \"SuperscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Superscript\",\n parse: parseSubSuper(94 /* '^' */, \"Superscript\", \"SuperscriptMark\")\n }]\n};\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsubscript using `~` markers.\n*/\nconst Subscript = {\n defineNodes: [\n { name: \"Subscript\", style: tags.special(tags.content) },\n { name: \"SubscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Subscript\",\n parse: parseSubSuper(126 /* '~' */, \"Subscript\", \"SubscriptMark\")\n }]\n};\n/**\nExtension that parses two colons with only letters, underscores,\nand numbers between them as `Emoji` nodes.\n*/\nconst Emoji = {\n defineNodes: [{ name: \"Emoji\", style: tags.character }],\n parseInline: [{\n name: \"Emoji\",\n parse(cx, next, pos) {\n let match;\n if (next != 58 /* ':' */ || !(match = /^[a-zA-Z_0-9]+:/.exec(cx.slice(pos + 1, cx.end))))\n return -1;\n return cx.addElement(cx.elt(\"Emoji\", pos, pos + 1 + match[0].length));\n }\n }]\n};\n\nexport { Autolink, BlockContext, Element, Emoji, GFM, InlineContext, LeafBlock, Line, MarkdownParser, Strikethrough, Subscript, Superscript, Table, TaskList, parseCode, parser };\n"],"names":["_CompositeBlock","create","type","value","from","parentHash","end","constructor","hash","children","positions","this","hashProp","NodeProp","contextHash","addChild","child","pos","prop","Tree","length","push","toTree","nodeSet","last","Math","max","types","balance","makeTree","__name","NodeType","none","CompositeBlock","Type","_LeafBlock","start","content","marks","parsers","LeafBlock","_Line","text","baseIndent","basePos","depth","markers","indent","next","forward","forwardInner","newPos","skipSpace","countIndent","charCodeAt","reset","pop","moveBase","to","moveBaseColumn","findColumn","addMarker","elt","i","goal","scrub","result","slice","Line","skipForList","bl","cx","line","block","stack","size","OrderedList","isOrderedList","isBulletList","BulletList","isHorizontalRule","DefaultSkipMarkup","Blockquote","QuoteMark","lineStart","space","ListItem","_cx","Document","ch","skipSpaceBack","isFencedCode","isBlockquote","breaking","count","isSetextUnderline","parser","leafBlockParsers","indexOf","DefaultLeafBlocks","SetextHeading","inList","isAtxHeading","EmptyLine","CommentEnd","ProcessingEnd","HTMLBlockStyle","isHTMLBlock","rest","e","test","getListIndent","indentAfter","indented","addCodeText","CodeText","DefaultBlockParsers","LinkReference","IndentedCode","base","pendingMarks","nextLine","m","codeStart","filter","concat","addNode","buffer","writeElements","finish","CodeBlock","FencedCode","fenceEnd","len","infoFrom","infoTo","CodeMark","CodeInfo","first","textStart","textEnd","prevLineEnd","startContext","HorizontalRule","newBase","ListMark","ATXHeading","off","endOfSpace","after","buf","write","HeaderMark","parseInline","node","ATXHeading1","HTMLBlock","trailing","nodeType","CommentBlock","ProcessingInstructionBlock","_LinkReferenceParser","leaf","stage","elts","advance","complete","addLeafElement","nextStage","parseLinkLabel","LinkMark","skip","title","parseLinkTitle","titleEnd","lineEnd","parseURL","LinkReferenceParser","_SetextHeadingParser","underline","underlineMark","SetextHeading1","SetextHeading2","SetextHeadingParser","_","DefaultEndLeaf","p","scanLineResult","_BlockContext","input","fragments","ranges","atEnd","reusePlaceholders","Map","stoppedAt","rangeI","absoluteLineStart","absoluteLineEnd","FragmentCursor","readLine","parsedPos","markI","mark","finishContext","reuseFragment","blockParsers","parse","lines","stop","endLeafBlock","finishLeaf","stopAt","RangeError","moveTo","matches","taken","takeNodes","toRelative","moveRangeI","parentType","peekLine","scanLine","r","lineChunkAt","textOffset","nextFrom","handler","skipContextMarkup","Error","chunk","lineChunks","eol","startComposite","getNodeType","addElement","injectMarks","top","addGaps","tree","injectGaps","topNode","inline","Paragraph","TreeElement","Buffer","BlockContext","offset","dummies","rangeEnd","movePastNext","upto","inclusive","firstChild","nextSibling","reuse","get","propValues","_MarkdownParser","Parser","blockNames","inlineParsers","inlineNames","wrappers","super","nodeTypes","Object","t","name","id","createParse","w","configure","spec","config","resolveConfig","nonEmpty","defineNodes","assign","styles","s","composite","style","some","group","define","props","Array","isArray","Tag","NodeSet","extend","styleTags","remove","rm","parseBlock","found","before","findName","splice","endLeaf","wrap","InlineContext","outer","char","token","resolveMarkers","MarkdownParser","a","conf","conc","b","wrapA","wrapB","inner","names","Escape","_Buffer","nodes","writeTo","build","reused","topID","_Element","startOff","Element","_TreeElement","EmphasisUnderscore","resolve","EmphasisAsterisk","LinkStart","ImageStart","_InlineDelimiter","side","InlineDelimiter","Escapable","Punctuation","RegExp","DefaultInline","escaped","append","Entity","exec","InlineCode","curSize","HTMLTag","url","Autolink","URL","comment","Comment","procInst","ProcessingInstruction","Emphasis","pBefore","pAfter","sBefore","sAfter","leftFlanking","rightFlanking","canOpen","canClose","HardBreak","Link","Image","LinkEnd","parts","part","takeContent","link","finishLink","j","startPos","endPos","unshift","dest","label","LinkTitle","requireNonWS","min","LinkLabel","_InlineContext","addDelimiter","open","close","hasOpenLink","emp","closeSize","k","element","findOpeningDelimiter","startIndex","getDelimiterAt","index","elements","eI","linkStart","imageStart","NotLast","_FragmentCursor","fragment","fragmentEnd","cursor","nextFragment","read","c","rPos","parent","childAfter","cur","fragEnd","openEnd","blockI","prevEnd","prevI","isAnonymous","dummy","set","is","abs","gapFrom","gapTo","markdownHighlighting","tags","quote","contentSeparator","heading1","heading2","heading3","heading4","heading5","heading6","escape","character","emphasis","strong","list","monospace","processingInstruction","labelName","string","keys","map","n","special"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- var t=Object.defineProperty,e=(e,s)=>t(e,"name",{value:s,configurable:!0});import{P as s,N as i,a as r,D as h,b as n,T as o,I as a}from"./highlight-LE-BkJRm.js";const l=class _Stack{constructor(t,e,s,i,r,h,n,o,a,l=0,c){this.p=t,this.stack=e,this.state=s,this.reducePos=i,this.pos=r,this.score=h,this.buffer=n,this.bufferBase=o,this.curContext=a,this.lookAhead=l,this.parent=c}toString(){return`[${this.stack.filter((t,e)=>e%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(t,e,s=0){let i=t.parser.context;return new _Stack(t,[],e,s,s,0,[],0,i?new f(i,i.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(t,e){this.stack.push(this.state,e,this.bufferBase+this.buffer.length),this.state=t}reduce(t){var e;let s=t>>19,i=65535&t,{parser:r}=this.p,h=this.reducePos<this.pos-25;h&&this.setLookAhead(this.pos);let n=r.dynamicPrecedence(i);if(n&&(this.score+=n),0==s)return this.pushState(r.getGoto(this.state,i,!0),this.reducePos),i<r.minRepeatTerm&&this.storeNode(i,this.reducePos,this.reducePos,h?8:4,!0),void this.reduceContext(i,this.reducePos);let o=this.stack.length-3*(s-1)-(262144&t?6:0),a=o?this.stack[o-2]:this.p.ranges[0].from,l=this.reducePos-a;l>=2e3&&!(null===(e=this.p.parser.nodeSet.types[i])||void 0===e?void 0:e.isAnonymous)&&(a==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=l):this.p.lastBigReductionSize<l&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=a,this.p.lastBigReductionSize=l));let c=o?this.stack[o-1]:0,u=this.bufferBase+this.buffer.length-c;if(i<r.minRepeatTerm||131072&t){let t=r.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(i,a,t,u+4,!0)}if(262144&t)this.state=this.stack[o];else{let t=this.stack[o-3];this.state=r.getGoto(t,i,!0)}for(;this.stack.length>o;)this.stack.pop();this.reduceContext(i,a)}storeNode(t,e,s,i=4,r=!1){if(0==t&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let t=this,i=this.buffer.length;if(0==i&&t.parent&&(i=t.bufferBase-t.parent.bufferBase,t=t.parent),i>0&&0==t.buffer[i-4]&&t.buffer[i-1]>-1){if(e==s)return;if(t.buffer[i-2]>=e)return void(t.buffer[i-2]=s)}}if(r&&this.pos!=s){let r=this.buffer.length;if(r>0&&(0!=this.buffer[r-4]||this.buffer[r-1]<0)){let t=!1;for(let e=r;e>0&&this.buffer[e-2]>s;e-=4)if(this.buffer[e-1]>=0){t=!0;break}if(t)for(;r>0&&this.buffer[r-2]>s;)this.buffer[r]=this.buffer[r-4],this.buffer[r+1]=this.buffer[r-3],this.buffer[r+2]=this.buffer[r-2],this.buffer[r+3]=this.buffer[r-1],r-=4,i>4&&(i-=4)}this.buffer[r]=t,this.buffer[r+1]=e,this.buffer[r+2]=s,this.buffer[r+3]=i}else this.buffer.push(t,e,s,i)}shift(t,e,s,i){if(131072&t)this.pushState(65535&t,this.pos);else if(262144&t)this.pos=i,this.shiftContext(e,s),e<=this.p.parser.maxNode&&this.buffer.push(e,s,i,4);else{let r=t,{parser:h}=this.p;(i>this.pos||e<=h.maxNode)&&(this.pos=i,h.stateFlag(r,1)||(this.reducePos=i)),this.pushState(r,s),this.shiftContext(e,s),e<=h.maxNode&&this.buffer.push(e,s,i,4)}}apply(t,e,s,i){65536&t?this.reduce(t):this.shift(t,e,s,i)}useNode(t,e){let s=this.p.reused.length-1;(s<0||this.p.reused[s]!=t)&&(this.p.reused.push(t),s++);let i=this.pos;this.reducePos=this.pos=i+t.length,this.pushState(e,i),this.buffer.push(s,i,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,t,this,this.p.stream.reset(this.pos-t.length)))}split(){let t=this,e=t.buffer.length;for(;e>0&&t.buffer[e-2]>t.reducePos;)e-=4;let s=t.buffer.slice(e),i=t.bufferBase+e;for(;t&&i==t.bufferBase;)t=t.parent;return new _Stack(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,s,i,this.curContext,this.lookAhead,t)}recoverByDelete(t,e){let s=t<=this.p.parser.maxNode;s&&this.storeNode(t,this.pos,e,4),this.storeNode(0,this.pos,e,s?8:4),this.pos=this.reducePos=e,this.score-=190}canShift(t){for(let e=new d(this);;){let s=this.p.parser.stateSlot(e.state,4)||this.p.parser.hasAction(e.state,t);if(0==s)return!1;if(!(65536&s))return!0;e.reduce(s)}}recoverByInsert(t){if(this.stack.length>=300)return[];let e=this.p.parser.nextStates(this.state);if(e.length>8||this.stack.length>=120){let s=[];for(let i,r=0;r<e.length;r+=2)(i=e[r+1])!=this.state&&this.p.parser.hasAction(i,t)&&s.push(e[r],i);if(this.stack.length<120)for(let t=0;s.length<8&&t<e.length;t+=2){let i=e[t+1];s.some((t,e)=>1&e&&t==i)||s.push(e[t],i)}e=s}let s=[];for(let i=0;i<e.length&&s.length<4;i+=2){let t=e[i+1];if(t==this.state)continue;let r=this.split();r.pushState(t,this.pos),r.storeNode(0,r.pos,r.pos,4,!0),r.shiftContext(e[i],this.pos),r.reducePos=this.pos,r.score-=200,s.push(r)}return s}forceReduce(){let{parser:t}=this.p,e=t.stateSlot(this.state,5);if(!(65536&e))return!1;if(!t.validAction(this.state,e)){let s=e>>19,i=65535&e,r=this.stack.length-3*s;if(r<0||t.getGoto(this.stack[r],i,!1)<0){let t=this.findForcedReduction();if(null==t)return!1;e=t}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(e),!0}findForcedReduction(){let{parser:t}=this.p,s=[],i=/* @__PURE__ */e((e,r)=>{if(!s.includes(e))return s.push(e),t.allActions(e,e=>{if(393216&e);else if(65536&e){let s=(e>>19)-r;if(s>1){let i=65535&e,r=this.stack.length-3*s;if(r>=0&&t.getGoto(this.stack[r],i,!1)>=0)return s<<19|65536|i}}else{let t=i(e,r+1);if(null!=t)return t}})},"explore");return i(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(3!=this.stack.length)return!1;let{parser:t}=this.p;return 65535==t.data[t.stateSlot(this.state,1)]&&!t.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(t){if(this.state!=t.state||this.stack.length!=t.stack.length)return!1;for(let e=0;e<this.stack.length;e+=3)if(this.stack[e]!=t.stack[e])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(t){return this.p.parser.dialect.flags[t]}shiftContext(t,e){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,t,this,this.p.stream.reset(e)))}reduceContext(t,e){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,t,this,this.p.stream.reset(e)))}emitContext(){let t=this.buffer.length-1;(t<0||-3!=this.buffer[t])&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let t=this.buffer.length-1;(t<0||-4!=this.buffer[t])&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(t){if(t!=this.curContext.context){let e=new f(this.curContext.tracker,t);e.hash!=this.curContext.hash&&this.emitContext(),this.curContext=e}}setLookAhead(t){t>this.lookAhead&&(this.emitLookAhead(),this.lookAhead=t)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}};e(l,"Stack");let c=l;const u=class _StackContext{constructor(t,e){this.tracker=t,this.context=e,this.hash=t.strict?t.hash(e):0}};e(u,"StackContext");let f=u;const p=class _SimulatedStack{constructor(t){this.start=t,this.state=t.state,this.stack=t.stack,this.base=this.stack.length}reduce(t){let e=65535&t,s=t>>19;0==s?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=3*(s-1);let i=this.start.p.parser.getGoto(this.stack[this.base-3],e,!0);this.state=i}};e(p,"SimulatedStack");let d=p;const k=class _StackBufferCursor{constructor(t,e,s){this.stack=t,this.pos=e,this.index=s,this.buffer=t.buffer,0==this.index&&this.maybeNext()}static create(t,e=t.bufferBase+t.buffer.length){return new _StackBufferCursor(t,e,e-t.bufferBase)}maybeNext(){let t=this.stack.parent;null!=t&&(this.index=this.stack.bufferBase-t.bufferBase,this.stack=t,this.buffer=t.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,0==this.index&&this.maybeNext()}fork(){return new _StackBufferCursor(this.stack,this.pos,this.index)}};e(k,"StackBufferCursor");let g=k;function m(t,e=Uint16Array){if("string"!=typeof t)return t;let s=null;for(let i=0,r=0;i<t.length;){let h=0;for(;;){let e=t.charCodeAt(i++),s=!1;if(126==e){h=65535;break}e>=92&&e--,e>=34&&e--;let r=e-32;if(r>=46&&(r-=46,s=!0),h+=r,s)break;h*=46}s?s[r++]=h:s=new e(h)}return s}e(m,"decodeArray");const x=class _CachedToken{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}};e(x,"CachedToken");let b=x;const S=new b,v=class _InputStream{constructor(t,e){this.input=t,this.ranges=e,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=S,this.rangeIndex=0,this.pos=this.chunkPos=e[0].from,this.range=e[0],this.end=e[e.length-1].to,this.readNext()}resolveOffset(t,e){let s=this.range,i=this.rangeIndex,r=this.pos+t;for(;r<s.from;){if(!i)return null;let t=this.ranges[--i];r-=s.from-t.to,s=t}for(;e<0?r>s.to:r>=s.to;){if(i==this.ranges.length-1)return null;let t=this.ranges[++i];r+=t.from-s.to,s=t}return r}clipPos(t){if(t>=this.range.from&&t<this.range.to)return t;for(let e of this.ranges)if(e.to>t)return Math.max(t,e.from);return this.end}peek(t){let e,s,i=this.chunkOff+t;if(i>=0&&i<this.chunk.length)e=this.pos+t,s=this.chunk.charCodeAt(i);else{let i=this.resolveOffset(t,1);if(null==i)return-1;if(e=i,e>=this.chunk2Pos&&e<this.chunk2Pos+this.chunk2.length)s=this.chunk2.charCodeAt(e-this.chunk2Pos);else{let t=this.rangeIndex,i=this.range;for(;i.to<=e;)i=this.ranges[++t];this.chunk2=this.input.chunk(this.chunk2Pos=e),e+this.chunk2.length>i.to&&(this.chunk2=this.chunk2.slice(0,i.to-e)),s=this.chunk2.charCodeAt(0)}}return e>=this.token.lookAhead&&(this.token.lookAhead=e+1),s}acceptToken(t,e=0){let s=e?this.resolveOffset(e,-1):this.pos;if(null==s||s<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=t,this.token.end=s}acceptTokenTo(t,e){this.token.value=t,this.token.end=e}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:t,chunkPos:e}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=t,this.chunk2Pos=e,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let t=this.input.chunk(this.pos),e=this.pos+t.length;this.chunk=e>this.range.to?t.slice(0,this.range.to-this.pos):t,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(t=1){for(this.chunkOff+=t;this.pos+t>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();t-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=t,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(t,e){if(e?(this.token=e,e.start=t,e.lookAhead=t+1,e.value=e.extended=-1):this.token=S,this.pos!=t){if(this.pos=t,t==this.end)return this.setDone(),this;for(;t<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;t>=this.range.to;)this.range=this.ranges[++this.rangeIndex];t>=this.chunkPos&&t<this.chunkPos+this.chunk.length?this.chunkOff=t-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(t,e){if(t>=this.chunkPos&&e<=this.chunkPos+this.chunk.length)return this.chunk.slice(t-this.chunkPos,e-this.chunkPos);if(t>=this.chunk2Pos&&e<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(t-this.chunk2Pos,e-this.chunk2Pos);if(t>=this.range.from&&e<=this.range.to)return this.input.read(t,e);let s="";for(let i of this.ranges){if(i.from>=e)break;i.to>t&&(s+=this.input.read(Math.max(i.from,t),Math.min(i.to,e)))}return s}};e(v,"InputStream");let P=v;const C=class _TokenGroup{constructor(t,e){this.data=t,this.id=e}token(t,e){let{parser:s}=e.p;N(this.data,t,e,this.id,s.data,s.tokenPrecTable)}};e(C,"TokenGroup");let A=C;A.prototype.contextual=A.prototype.fallback=A.prototype.extend=!1;const T=class _LocalTokenGroup{constructor(t,e,s){this.precTable=e,this.elseToken=s,this.data="string"==typeof t?m(t):t}token(t,e){let s=t.pos,i=0;for(;;){let s=t.next<0,r=t.resolveOffset(1,1);if(N(this.data,t,e,0,this.data,this.precTable),t.token.value>-1)break;if(null==this.elseToken)return;if(s||i++,null==r)break;t.reset(r,t.token)}i&&(t.reset(s,t.token),t.acceptToken(this.elseToken,i))}};e(T,"LocalTokenGroup");let y=T;y.prototype.contextual=A.prototype.fallback=A.prototype.extend=!1;const w=class _ExternalTokenizer{constructor(t,e={}){this.token=t,this.contextual=!!e.contextual,this.fallback=!!e.fallback,this.extend=!!e.extend}};e(w,"ExternalTokenizer");let R=w;function N(t,e,s,i,r,h){let n=0,o=1<<i,{dialect:a}=s.p.parser;t:for(;0!=(o&t[n]);){let s=t[n+1];for(let u=n+3;u<s;u+=2)if((t[u+1]&o)>0){let s=t[u];if(a.allows(s)&&(-1==e.token.value||e.token.value==s||B(s,e.token.value,r,h))){e.acceptToken(s);break}}let i=e.next,l=0,c=t[n+2];if(!(e.next<0&&c>l&&65535==t[s+3*c-3])){for(;l<c;){let r=l+c>>1,h=s+r+(r<<1),o=t[h],a=t[h+1]||65536;if(i<o)c=r;else{if(!(i>=a)){n=t[h+2],e.advance();continue t}l=r+1}}break}n=t[s+3*c-1]}}function z(t,e,s){for(let i,r=e;65535!=(i=t[r]);r++)if(i==s)return r-e;return-1}function B(t,e,s,i){let r=z(s,i,e);return r<0||z(s,i,t)<r}e(N,"readToken"),e(z,"findOffset"),e(B,"overrides");const I="undefined"!=typeof process&&process.env&&/\bparse\b/.test(process.env.LOG);let D=null;function O(t,e,s){let i=t.cursor(a.IncludeAnonymous);for(i.moveTo(e);;)if(!(s<0?i.childBefore(e):i.childAfter(e)))for(;;){if((s<0?i.to<e:i.from>e)&&!i.type.isError)return s<0?Math.max(0,Math.min(i.to-1,e-25)):Math.min(t.length,Math.max(i.from+1,e+25));if(s<0?i.prevSibling():i.nextSibling())break;if(!i.parent())return s<0?0:t.length}}e(O,"cutAt");const F=class _FragmentCursor{constructor(t,e){this.fragments=t,this.nodeSet=e,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let t=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(t){for(this.safeFrom=t.openStart?O(t.tree,t.from+t.offset,1)-t.offset:t.from,this.safeTo=t.openEnd?O(t.tree,t.to+t.offset,-1)-t.offset:t.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(t.tree),this.start.push(-t.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(t){if(t<this.nextStart)return null;for(;this.fragment&&this.safeTo<=t;)this.nextFragment();if(!this.fragment)return null;for(;;){let e=this.trees.length-1;if(e<0)return this.nextFragment(),null;let s=this.trees[e],i=this.index[e];if(i==s.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let r=s.children[i],h=this.start[e]+s.positions[i];if(h>t)return this.nextStart=h,null;if(r instanceof o){if(h==t){if(h<this.safeFrom)return null;let t=h+r.length;if(t<=this.safeTo){let e=r.prop(n.lookAhead);if(!e||t+e<this.fragment.to)return r}}this.index[e]++,h+r.length>=Math.max(this.safeFrom,t)&&(this.trees.push(r),this.start.push(h),this.index.push(0))}else this.index[e]++,this.nextStart=h+r.length}}};e(F,"FragmentCursor");let L=F;const _=class _TokenCache{constructor(t,e){this.stream=e,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=t.tokenizers.map(t=>new b)}getActions(t){let e=0,s=null,{parser:i}=t.p,{tokenizers:r}=i,h=i.stateSlot(t.state,3),n=t.curContext?t.curContext.hash:0,o=0;for(let a=0;a<r.length;a++){if(!(1<<a&h))continue;let i=r[a],l=this.tokens[a];if((!s||i.fallback)&&((i.contextual||l.start!=t.pos||l.mask!=h||l.context!=n)&&(this.updateCachedToken(l,i,t),l.mask=h,l.context=n),l.lookAhead>l.end+25&&(o=Math.max(l.lookAhead,o)),0!=l.value)){let r=e;if(l.extended>-1&&(e=this.addActions(t,l.extended,l.end,e)),e=this.addActions(t,l.value,l.end,e),!i.extend&&(s=l,e>r))break}}for(;this.actions.length>e;)this.actions.pop();return o&&t.setLookAhead(o),s||t.pos!=this.stream.end||(s=new b,s.value=t.p.parser.eofTerm,s.start=s.end=t.pos,e=this.addActions(t,s.value,s.end,e)),this.mainToken=s,this.actions}getMainToken(t){if(this.mainToken)return this.mainToken;let e=new b,{pos:s,p:i}=t;return e.start=s,e.end=Math.min(s+1,i.stream.end),e.value=s==i.stream.end?i.parser.eofTerm:0,e}updateCachedToken(t,e,s){let i=this.stream.clipPos(s.pos);if(e.token(this.stream.reset(i,t),s),t.value>-1){let{parser:e}=s.p;for(let i=0;i<e.specialized.length;i++)if(e.specialized[i]==t.value){let r=e.specializers[i](this.stream.read(t.start,t.end),s);if(r>=0&&s.p.parser.dialect.allows(r>>1)){1&r?t.extended=r>>1:t.value=r>>1;break}}}else t.value=0,t.end=this.stream.clipPos(i+1)}putAction(t,e,s,i){for(let r=0;r<i;r+=3)if(this.actions[r]==t)return i;return this.actions[i++]=t,this.actions[i++]=e,this.actions[i++]=s,i}addActions(t,e,s,i){let{state:r}=t,{parser:h}=t.p,{data:n}=h;for(let o=0;o<2;o++)for(let t=h.stateSlot(r,o?2:1);;t+=3){if(65535==n[t]){if(1!=n[t+1]){0==i&&2==n[t+1]&&(i=this.putAction(Q(n,t+2),e,s,i));break}t=Q(n,t+2)}n[t]==e&&(i=this.putAction(Q(n,t+1),e,s,i))}return i}};e(_,"TokenCache");let E=_;const M=class _Parse{constructor(t,e,s,i){this.parser=t,this.input=e,this.ranges=i,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new P(e,i),this.tokens=new E(t,this.stream),this.topTerm=t.top[1];let{from:r}=i[0];this.stacks=[c.start(this,t.top[0],r)],this.fragments=s.length&&this.stream.end-r>4*t.bufferLength?new L(s,t.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let t,e,s=this.stacks,i=this.minStackPos,r=this.stacks=[];if(this.bigReductionCount>300&&1==s.length){let[t]=s;for(;t.forceReduce()&&t.stack.length&&t.stack[t.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let h=0;h<s.length;h++){let n=s[h];for(;;){if(this.tokens.mainToken=null,n.pos>i)r.push(n);else{if(this.advanceStack(n,r,s))continue;{t||(t=[],e=[]),t.push(n);let s=this.tokens.getMainToken(n);e.push(s.value,s.end)}}break}}if(!r.length){let e=t&&V(t);if(e)return I&&console.log("Finish with "+this.stackID(e)),this.stackToTree(e);if(this.parser.strict)throw I&&t&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+i);this.recovering||(this.recovering=5)}if(this.recovering&&t){let s=null!=this.stoppedAt&&t[0].pos>this.stoppedAt?t[0]:this.runRecovery(t,e,r);if(s)return I&&console.log("Force-finish "+this.stackID(s)),this.stackToTree(s.forceAll())}if(this.recovering){let t=1==this.recovering?1:3*this.recovering;if(r.length>t)for(r.sort((t,e)=>e.score-t.score);r.length>t;)r.pop();r.some(t=>t.reducePos>i)&&this.recovering--}else if(r.length>1){t:for(let t=0;t<r.length-1;t++){let e=r[t];for(let s=t+1;s<r.length;s++){let i=r[s];if(e.sameState(i)||e.buffer.length>500&&i.buffer.length>500){if(!((e.score-i.score||e.buffer.length-i.buffer.length)>0)){r.splice(t--,1);continue t}r.splice(s--,1)}}}r.length>12&&r.splice(12,r.length-12)}this.minStackPos=r[0].pos;for(let h=1;h<r.length;h++)r[h].pos<this.minStackPos&&(this.minStackPos=r[h].pos);return null}stopAt(t){if(null!=this.stoppedAt&&this.stoppedAt<t)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=t}advanceStack(t,e,s){let i=t.pos,{parser:r}=this,h=I?this.stackID(t)+" -> ":"";if(null!=this.stoppedAt&&i>this.stoppedAt)return t.forceReduce()?t:null;if(this.fragments){let e=t.curContext&&t.curContext.tracker.strict,s=e?t.curContext.hash:0;for(let a=this.fragments.nodeAt(i);a;){let i=this.parser.nodeSet.types[a.type.id]==a.type?r.getGoto(t.state,a.type.id):-1;if(i>-1&&a.length&&(!e||(a.prop(n.contextHash)||0)==s))return t.useNode(a,i),I&&console.log(h+this.stackID(t)+` (via reuse of ${r.getName(a.type.id)})`),!0;if(!(a instanceof o)||0==a.children.length||a.positions[0]>0)break;let l=a.children[0];if(!(l instanceof o&&0==a.positions[0]))break;a=l}}let a=r.stateSlot(t.state,4);if(a>0)return t.reduce(a),I&&console.log(h+this.stackID(t)+` (via always-reduce ${r.getName(65535&a)})`),!0;if(t.stack.length>=8400)for(;t.stack.length>6e3&&t.forceReduce(););let l=this.tokens.getActions(t);for(let n=0;n<l.length;){let o=l[n++],a=l[n++],c=l[n++],u=n==l.length||!s,f=u?t:t.split(),p=this.tokens.mainToken;if(f.apply(o,a,p?p.start:f.pos,c),I&&console.log(h+this.stackID(f)+` (via ${65536&o?`reduce of ${r.getName(65535&o)}`:"shift"} for ${r.getName(a)} @ ${i}${f==t?"":", split"})`),u)return!0;f.pos>i?e.push(f):s.push(f)}return!1}advanceFully(t,e){let s=t.pos;for(;;){if(!this.advanceStack(t,null,null))return!1;if(t.pos>s)return G(t,e),!0}}runRecovery(t,e,s){let i=null,r=!1;for(let h=0;h<t.length;h++){let n=t[h],o=e[h<<1],a=e[1+(h<<1)],l=I?this.stackID(n)+" -> ":"";if(n.deadEnd){if(r)continue;if(r=!0,n.restart(),I&&console.log(l+this.stackID(n)+" (restarted)"),this.advanceFully(n,s))continue}let c=n.split(),u=l;for(let t=0;t<10&&c.forceReduce();t++){if(I&&console.log(u+this.stackID(c)+" (via force-reduce)"),this.advanceFully(c,s))break;I&&(u=this.stackID(c)+" -> ")}for(let t of n.recoverByInsert(o))I&&console.log(l+this.stackID(t)+" (via recover-insert)"),this.advanceFully(t,s);this.stream.end>n.pos?(a==n.pos&&(a++,o=0),n.recoverByDelete(o,a),I&&console.log(l+this.stackID(n)+` (via recover-delete ${this.parser.getName(o)})`),G(n,s)):(!i||i.score<n.score)&&(i=n)}return i}stackToTree(t){return t.close(),o.build({buffer:g.create(t),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:t.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(t){let e=(D||(D=/* @__PURE__ */new WeakMap)).get(t);return e||D.set(t,e=String.fromCodePoint(this.nextStackID++)),e+t}};e(M,"Parse");let $=M;function G(t,e){for(let s=0;s<e.length;s++){let i=e[s];if(i.pos==t.pos&&i.sameState(t))return void(e[s].score<t.score&&(e[s]=t))}e.push(t)}e(G,"pushStackDedup");const j=class _Dialect{constructor(t,e,s){this.source=t,this.flags=e,this.disabled=s}allows(t){return!this.disabled||0==this.disabled[t]}};e(j,"Dialect");let U=j;const W=/* @__PURE__ */e(t=>t,"id"),H=class _ContextTracker{constructor(t){this.start=t.start,this.shift=t.shift||W,this.reduce=t.reduce||W,this.reuse=t.reuse||W,this.hash=t.hash||(()=>0),this.strict=!1!==t.strict}};e(H,"ContextTracker");let q=H;const J=class _LRParser extends s{constructor(t){if(super(),this.wrappers=[],14!=t.version)throw new RangeError(`Parser version (${t.version}) doesn't match runtime version (14)`);let s=t.nodeNames.split(" ");this.minRepeatTerm=s.length;for(let e=0;e<t.repeatNodeCount;e++)s.push("");let o=Object.keys(t.topRules).map(e=>t.topRules[e][1]),a=[];for(let e=0;e<s.length;e++)a.push([]);function l(t,e,s){a[t].push([e,e.deserialize(String(s))])}if(e(l,"setProp"),t.nodeProps)for(let e of t.nodeProps){let t=e[0];"string"==typeof t&&(t=n[t]);for(let s=1;s<e.length;){let i=e[s++];if(i>=0)l(i,t,e[s++]);else{let r=e[s+-i];for(let h=-i;h>0;h--)l(e[s++],t,r);s++}}}this.nodeSet=new i(s.map((e,s)=>r.define({name:s>=this.minRepeatTerm?void 0:e,id:s,props:a[s],top:o.indexOf(s)>-1,error:0==s,skipped:t.skippedNodes&&t.skippedNodes.indexOf(s)>-1}))),t.propSources&&(this.nodeSet=this.nodeSet.extend(...t.propSources)),this.strict=!1,this.bufferLength=h;let c=m(t.tokenData);this.context=t.context,this.specializerSpecs=t.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let e=0;e<this.specializerSpecs.length;e++)this.specialized[e]=this.specializerSpecs[e].term;this.specializers=this.specializerSpecs.map(X),this.states=m(t.states,Uint32Array),this.data=m(t.stateData),this.goto=m(t.goto),this.maxTerm=t.maxTerm,this.tokenizers=t.tokenizers.map(t=>"number"==typeof t?new A(c,t):t),this.topRules=t.topRules,this.dialects=t.dialects||{},this.dynamicPrecedences=t.dynamicPrecedences||null,this.tokenPrecTable=t.tokenPrec,this.termNames=t.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(t,e,s){let i=new $(this,t,e,s);for(let r of this.wrappers)i=r(i,t,e,s);return i}getGoto(t,e,s=!1){let i=this.goto;if(e>=i[0])return-1;for(let r=i[e+1];;){let e=i[r++],h=1&e,n=i[r++];if(h&&s)return n;for(let s=r+(e>>1);r<s;r++)if(i[r]==t)return n;if(h)return-1}}hasAction(t,e){let s=this.data;for(let i=0;i<2;i++)for(let r,h=this.stateSlot(t,i?2:1);;h+=3){if(65535==(r=s[h])){if(1!=s[h+1]){if(2==s[h+1])return Q(s,h+2);break}r=s[h=Q(s,h+2)]}if(r==e||0==r)return Q(s,h+1)}return 0}stateSlot(t,e){return this.states[6*t+e]}stateFlag(t,e){return(this.stateSlot(t,0)&e)>0}validAction(t,e){return!!this.allActions(t,t=>t==e||null)}allActions(t,e){let s=this.stateSlot(t,4),i=s?e(s):void 0;for(let r=this.stateSlot(t,1);null==i;r+=3){if(65535==this.data[r]){if(1!=this.data[r+1])break;r=Q(this.data,r+2)}i=e(Q(this.data,r+1))}return i}nextStates(t){let e=[];for(let s=this.stateSlot(t,1);;s+=3){if(65535==this.data[s]){if(1!=this.data[s+1])break;s=Q(this.data,s+2)}if(!(1&this.data[s+2])){let t=this.data[s+1];e.some((e,s)=>1&s&&e==t)||e.push(this.data[s],t)}}return e}configure(t){let e=Object.assign(Object.create(_LRParser.prototype),this);if(t.props&&(e.nodeSet=this.nodeSet.extend(...t.props)),t.top){let s=this.topRules[t.top];if(!s)throw new RangeError(`Invalid top rule name ${t.top}`);e.top=s}return t.tokenizers&&(e.tokenizers=this.tokenizers.map(e=>{let s=t.tokenizers.find(t=>t.from==e);return s?s.to:e})),t.specializers&&(e.specializers=this.specializers.slice(),e.specializerSpecs=this.specializerSpecs.map((s,i)=>{let r=t.specializers.find(t=>t.from==s.external);if(!r)return s;let h=Object.assign(Object.assign({},s),{external:r.to});return e.specializers[i]=X(h),h})),t.contextTracker&&(e.context=t.contextTracker),t.dialect&&(e.dialect=this.parseDialect(t.dialect)),null!=t.strict&&(e.strict=t.strict),t.wrap&&(e.wrappers=e.wrappers.concat(t.wrap)),null!=t.bufferLength&&(e.bufferLength=t.bufferLength),e}hasWrappers(){return this.wrappers.length>0}getName(t){return this.termNames?this.termNames[t]:String(t<=this.maxNode&&this.nodeSet.types[t].name||t)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(t){let e=this.dynamicPrecedences;return null==e?0:e[t]||0}parseDialect(t){let e=Object.keys(this.dialects),s=e.map(()=>!1);if(t)for(let r of t.split(" ")){let t=e.indexOf(r);t>=0&&(s[t]=!0)}let i=null;for(let r=0;r<e.length;r++)if(!s[r])for(let t,s=this.dialects[e[r]];65535!=(t=this.data[s++]);)(i||(i=new Uint8Array(this.maxTerm+1)))[t]=1;return new U(t,s,i)}static deserialize(t){return new _LRParser(t)}};e(J,"LRParser");let K=J;function Q(t,e){return t[e]|t[e+1]<<16}function V(t){let e=null;for(let s of t){let t=s.p.stoppedAt;(s.pos==s.p.stream.end||null!=t&&s.pos>t)&&s.p.parser.stateFlag(s.state,2)&&(!e||e.score<s.score)&&(e=s)}return e}function X(t){if(t.external){let e=t.extend?1:0;return(s,i)=>t.external(s,i)<<1|e}return t.get}e(Q,"pair"),e(V,"findFinished"),e(X,"getSpecializer");export{q as C,R as E,K as L,y as a};
2
- //# sourceMappingURL=index-Cbl-BNqq.js.map