diff --git a/_posts/2024-07-20-micropython-1.md b/_posts/2024-07-20-micropython-1.md
new file mode 100644
index 0000000..f2b9141
--- /dev/null
+++ b/_posts/2024-07-20-micropython-1.md
@@ -0,0 +1,92 @@
+---
+title: MicroPython
+layout: post
+excerpt: Embedded Programming is fun again!
+
+image: /assets/blog/micropython/xkcd.png
+thumbnail: /assets/blog/micropython/thumbnail.png
+assets: /assets/blog/micropython
+alt: A crudely edited version of XKCD 353, the one about python, but with a greek letter mu stuck in front of "python".
+
+head: |
+    <script src="/assets/blog/micropython/micropython.min.mjs" type="module"></script>
+---
+
+<figure style="width:max(300px, 100%);">
+<img src="{{page.assets}}/xkcd.png"/>
+<figcaption>
+<small><a href = "https://xkcd.com/353/">Original</a></small>
+</figcaption>
+</figure>
+
+My first exposures to programming as a kid were through [processing](https://processing.org/) and arduino. 
+
+With Arduino, I understood that it's really just C with some libraries and a toolchain and started to read the datasheets of things like the [ATmega328][atmega328_datasheet]. This is super fun because the atmega328 is a relatively simple computer and you can just about read through the datasheeet. 
+
+The atmega328 has all sorts of hardware that you can configure, like the timers that you can set up to count up/down, to trigger interupts, toggle pins etc. I had loads of fun with this as a nerdy kid. 
+
+However the compile and upload time is kinda long, C that hits registers directly is both ugly and hard to debug and when you start to work with bigger systems like the ESP32 and RP2040 that have WiFi and multiple cores and stuff this all starts to get a bit less fun, at least for me. 
+
+But because the likes of the ESP32 and the RP2040 are so much more powerful **they can run a python interpreter and it's surprisingly fast and really fun!**
+
+Everyone loves to hate on python for being slow, and obviously don't write your tight loops in it (or do, I can't tell you what to do). But even on a resource constrained microprocessor you can have a fun time!
+
+So anyway, here is a compendium of things I've being doing with [micropython][micropython]. Some of this is so that I don't forget how to do it later so there's a little more detail than might be warranted. 
+
+[micropython]: https://micropython.org/
+[atmega328_datasheet]: https://ww1.microchip.com/downloads/en/DeviceDoc/40001906A.pdf
+
+## Get yourself a dev board
+
+<figure style="width:max(300px, 100%);">
+<img src="{{page.assets}}/four_picos.jpg"/>
+</figure>
+
+The Raspberry Pi Pico is really nice, if you went to EMFcamp you can use [the badge][badge], and ESP32 boards work really well too! The easiest way to start is to flash a prebuilt firmware (for RP2040 boards that means putting the board in boot mode and then dragging and dropping a .uf2 file onto a virtual file system that appears.)
+
+[badge]: https://tildagon.badge.emfcamp.org/
+
+## Run some code!
+
+mpremote is a really handy little tool for interacting with a micropython board. My first scripts to play with this looked like this
+```sh
+mpremote cp main.py :main.py
+mpremote run main.py
+```
+You can also just run code 
+
+```python
+{% flexible_include assets/blog/micropython/example_micropython.py %}
+```
+
+
+## Webassembly port 
+
+People are staring to use webassembly to create simulators for physical hardware that run in the browser, this can make the dev loop super fast. [More details here](https://github.com/micropython/micropython/blob/master/ports/webassembly/README.md)
+
+For me this looks like:
+```sh
+cd /ports/webassembly
+make min FROZEN_MANIFEST=/path/to/font_sources/manifest.py
+cp ...wasm and ....min.mjs to your webserver directory
+```
+
+Then in the js console you can do:
+```
+const mp = await loadMicroPython();
+mp.runPython("import fonts; print(fonts.gunship30)")
+```
+
+Note that I've got access to my compiled in code here. 
+
+<section class = "micropython-simulator">
+<div id="editor"></div>
+<button id=run title="Run code (Ctrl-Enter)" aria-title="Run code (Ctrl-Enter)">Run</button>
+<canvas height="240" width="240" class = screen></canvas>
+<pre id="micropython-stdout"></pre>
+</section>
+
+<script src="{{page.assets}}/cm6.bundle.min.js"></script>
+<script src="{{page.assets}}/simulator.js" type = "module"></script>
+
+<usbc-power-supply-simulator></usbc-power-supply-simulator>
\ No newline at end of file
diff --git a/assets/blog/micropython/cm6.bundle.min.js b/assets/blog/micropython/cm6.bundle.min.js
new file mode 100644
index 0000000..e256ddc
--- /dev/null
+++ b/assets/blog/micropython/cm6.bundle.min.js
@@ -0,0 +1 @@
+var cm6=function(t){"use strict";class e{constructor(){}lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),n.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){let i=[];return this.decompose(t,e,i,0),n.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),n=new o(this),s=new o(t);for(let t=e,r=e;;){if(n.next(t),s.next(t),t=0,n.lineBreak!=s.lineBreak||n.done!=s.done||n.value!=s.value)return!1;if(r+=n.value.length,n.done||r>=i)return!0}}iter(t=1){return new o(this,t)}iterRange(t,e=this.length){return new l(this,t,e)}iterLines(t,e){let i;if(null==t)i=this.iter();else{null==e&&(e=this.lines+1);let n=this.line(t).from;i=this.iterRange(n,Math.max(n,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new a(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}static of(t){if(0==t.length)throw new RangeError("A document must have at least one line");return 1!=t.length||t[0]?t.length<=32?new i(t):n.from(i.split(t,[])):e.empty}}class i extends e{constructor(t,e=function(t){let e=-1;for(let i of t)e+=i.length+1;return e}(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,n){for(let s=0;;s++){let r=this.text[s],o=n+r.length;if((e?i:o)>=t)return new h(n,o,i,r);n=o+1,i++}}decompose(t,e,n,o){let l=t<=0&&e>=this.length?this:new i(r(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(1&o){let t=n.pop(),e=s(l.text,t.text.slice(),0,l.length);if(e.length<=32)n.push(new i(e,t.length+l.length));else{let t=e.length>>1;n.push(new i(e.slice(0,t)),new i(e.slice(t)))}}else n.push(l)}replace(t,e,o){if(!(o instanceof i))return super.replace(t,e,o);let l=s(this.text,s(o.text,r(this.text,0,t)),e),a=this.length+o.length-(e-t);return l.length<=32?new i(l,a):n.from(i.split(l,[]),a)}sliceString(t,e=this.length,i="\n"){let n="";for(let s=0,r=0;s<=e&&r<this.text.length;r++){let o=this.text[r],l=s+o.length;s>t&&r&&(n+=i),t<l&&e>s&&(n+=o.slice(Math.max(0,t-s),e-s)),s=l+1}return n}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let n=[],s=-1;for(let r of t)n.push(r),s+=r.length+1,32==n.length&&(e.push(new i(n,s)),n=[],s=-1);return s>-1&&e.push(new i(n,s)),e}}class n extends e{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let e of t)this.lines+=e.lines}lineInner(t,e,i,n){for(let s=0;;s++){let r=this.children[s],o=n+r.length,l=i+r.lines-1;if((e?l:o)>=t)return r.lineInner(t,e,i,n);n=o+1,i=l+1}}decompose(t,e,i,n){for(let s=0,r=0;r<=e&&s<this.children.length;s++){let o=this.children[s],l=r+o.length;if(t<=l&&e>=r){let s=n&((r<=t?1:0)|(l>=e?2:0));r>=t&&l<=e&&!s?i.push(o):o.decompose(t-r,e-r,i,s)}r=l+1}}replace(t,e,i){if(i.lines<this.lines)for(let s=0,r=0;s<this.children.length;s++){let o=this.children[s],l=r+o.length;if(t>=r&&e<=l){let a=o.replace(t-r,e-r,i),h=this.lines-o.lines+a.lines;if(a.lines<h>>4&&a.lines>h>>6){let r=this.children.slice();return r[s]=a,new n(r,this.length-(e-t)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i="\n"){let n="";for(let s=0,r=0;s<this.children.length&&r<=e;s++){let o=this.children[s],l=r+o.length;r>t&&s&&(n+=i),t<l&&e>r&&(n+=o.sliceString(t-r,e-r,i)),r=l+1}return n}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let n=this.children[s],a=t.children[r];if(n!=a)return i+n.scanIdentical(a,e);i+=n.length+1}}static from(t,e=t.reduce(((t,e)=>t+e.length+1),-1)){let s=0;for(let e of t)s+=e.lines;if(s<32){let n=[];for(let e of t)e.flatten(n);return new i(n,e)}let r=Math.max(32,s>>5),o=r<<1,l=r>>1,a=[],h=0,c=-1,u=[];function f(t){let e;if(t.lines>o&&t instanceof n)for(let e of t.children)f(e);else t.lines>l&&(h>l||!h)?(O(),a.push(t)):t instanceof i&&h&&(e=u[u.length-1])instanceof i&&t.lines+e.lines<=32?(h+=t.lines,c+=t.length+1,u[u.length-1]=new i(e.text.concat(t.text),e.length+1+t.length)):(h+t.lines>r&&O(),h+=t.lines,c+=t.length+1,u.push(t))}function O(){0!=h&&(a.push(1==u.length?u[0]:n.from(u,c)),c=-1,h=u.length=0)}for(let e of t)f(e);return O(),1==a.length?a[0]:new n(a,e)}}function s(t,e,i=0,n=1e9){for(let s=0,r=0,o=!0;r<t.length&&s<=n;r++){let l=t[r],a=s+l.length;a>=i&&(a>n&&(l=l.slice(0,n-s)),s<i&&(l=l.slice(i-s)),o?(e[e.length-1]+=l,o=!1):e.push(l)),s=a+1}return e}function r(t,e,i){return s(t,[""],e,i)}e.empty=new i([""],0);class o{constructor(t,e=1){this.dir=e,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[t],this.offsets=[e>0?1:(t instanceof i?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,s=this.nodes[n],r=this.offsets[n],o=r>>1,l=s instanceof i?s.text.length:s.children.length;if(o==(e>0?l:0)){if(0==n)return this.done=!0,this.value="",this;e>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((1&r)==(e>0?0:1)){if(this.offsets[n]+=e,0==t)return this.lineBreak=!0,this.value="\n",this;t--}else if(s instanceof i){let i=s.text[o+(e<0?-1:0)];if(this.offsets[n]+=e,i.length>Math.max(0,t))return this.value=0==t?i:e>0?i.slice(t):i.slice(0,i.length-t),this;t-=i.length}else{let r=s.children[o+(e<0?-1:0)];t>r.length?(t-=r.length,this.offsets[n]+=e):(e<0&&this.offsets[n]--,this.nodes.push(r),this.offsets.push(e>0?1:(r instanceof i?r.text.length:r.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}}class l{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new o(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:n}=this.cursor.next(t);return this.pos+=(n.length+t)*e,this.value=n.length<=i?n:e<0?n.slice(n.length-i):n.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&""!=this.value}}class a{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:n}=this.inner.next(t);return e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}}"undefined"!=typeof Symbol&&(e.prototype[Symbol.iterator]=function(){return this.iter()},o.prototype[Symbol.iterator]=l.prototype[Symbol.iterator]=a.prototype[Symbol.iterator]=function(){return this});class h{constructor(t,e,i,n){this.from=t,this.to=e,this.number=i,this.text=n}get length(){return this.to-this.from}}let c="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map((t=>t?parseInt(t,36):1));for(let t=1;t<c.length;t++)c[t]+=c[t-1];function u(t){for(let e=1;e<c.length;e+=2)if(c[e]>t)return c[e-1]<=t;return!1}function f(t){return t>=127462&&t<=127487}function O(t,e,i=!0,n=!0){return(i?d:p)(t,e,n)}function d(t,e,i){if(e==t.length)return e;e&&m(t.charCodeAt(e))&&g(t.charCodeAt(e-1))&&e--;let n=Q(t,e);for(e+=S(n);e<t.length;){let s=Q(t,e);if(8205==n||8205==s||i&&u(s))e+=S(s),n=s;else{if(!f(s))break;{let i=0,n=e-2;for(;n>=0&&f(Q(t,n));)i++,n-=2;if(i%2==0)break;e+=2}}}return e}function p(t,e,i){for(;e>0;){let n=d(t,e-2,i);if(n<e)return n;e--}return 0}function m(t){return t>=56320&&t<57344}function g(t){return t>=55296&&t<56320}function Q(t,e){let i=t.charCodeAt(e);if(!g(i)||e+1==t.length)return i;let n=t.charCodeAt(e+1);return m(n)?n-56320+(i-55296<<10)+65536:i}function b(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}function S(t){return t<65536?1:2}const y=/\r\n?|\n/;var w=function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t}(w||(w={}));class v{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;e<this.sections.length;e+=2)t+=this.sections[e];return t}get newLength(){let t=0;for(let e=0;e<this.sections.length;e+=2){let i=this.sections[e+1];t+=i<0?this.sections[e]:i}return t}get empty(){return 0==this.sections.length||2==this.sections.length&&this.sections[1]<0}iterGaps(t){for(let e=0,i=0,n=0;e<this.sections.length;){let s=this.sections[e++],r=this.sections[e++];r<0?(t(i,n,s),n+=s):n+=r,i+=s}}iterChangedRanges(t,e=!1){T(this,t,e)}get invertedDesc(){let t=[];for(let e=0;e<this.sections.length;){let i=this.sections[e++],n=this.sections[e++];n<0?t.push(i,n):t.push(n,i)}return new v(t)}composeDesc(t){return this.empty?t:t.empty?this:C(this,t)}mapDesc(t,e=!1){return t.empty?this:P(this,t,e)}mapPos(t,e=-1,i=w.Simple){let n=0,s=0;for(let r=0;r<this.sections.length;){let o=this.sections[r++],l=this.sections[r++],a=n+o;if(l<0){if(a>t)return s+(t-n);s+=o}else{if(i!=w.Simple&&a>=t&&(i==w.TrackDel&&n<t&&a>t||i==w.TrackBefore&&n<t||i==w.TrackAfter&&a>t))return null;if(a>t||a==t&&e<0&&!o)return t==n||e<0?s:s+l;s+=l}n=a}if(t>n)throw new RangeError(`Position ${t} is out of range for changeset of length ${n}`);return s}touchesRange(t,e=t){for(let i=0,n=0;i<this.sections.length&&n<=e;){let s=n+this.sections[i++];if(this.sections[i++]>=0&&n<=e&&s>=t)return!(n<t&&s>e)||"cover";n=s}return!1}toString(){let t="";for(let e=0;e<this.sections.length;){let i=this.sections[e++],n=this.sections[e++];t+=(t?" ":"")+i+(n>=0?":"+n:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some((t=>"number"!=typeof t)))throw new RangeError("Invalid JSON representation of ChangeDesc");return new v(t)}static create(t){return new v(t)}}class x extends v{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return T(this,((e,i,n,s,r)=>t=t.replace(n,n+(i-e),r)),!1),t}mapDesc(t,e=!1){return P(this,t,e,!0)}invert(t){let i=this.sections.slice(),n=[];for(let s=0,r=0;s<i.length;s+=2){let o=i[s],l=i[s+1];if(l>=0){i[s]=l,i[s+1]=o;let a=s>>1;for(;n.length<a;)n.push(e.empty);n.push(o?t.slice(r,r+o):e.empty)}r+=o}return new x(i,n)}compose(t){return this.empty?t:t.empty?this:C(this,t,!0)}map(t,e=!1){return t.empty?this:P(this,t,e,!0)}iterChanges(t,e=!1){T(this,t,e)}get desc(){return v.create(this.sections)}filter(t){let e=[],i=[],n=[],s=new Z(this);t:for(let r=0,o=0;;){let l=r==t.length?1e9:t[r++];for(;o<l||o==l&&0==s.len;){if(s.done)break t;let t=Math.min(s.len,l-o);k(n,t,-1);let r=-1==s.ins?-1:0==s.off?s.ins:0;k(e,t,r),r>0&&$(i,e,s.text),s.forward(t),o+=t}let a=t[r++];for(;o<a;){if(s.done)break t;let t=Math.min(s.len,a-o);k(e,t,-1),k(n,t,-1==s.ins?-1:0==s.off?s.ins:0),s.forward(t),o+=t}}return{changes:new x(e,i),filtered:v.create(n)}}toJSON(){let t=[];for(let e=0;e<this.sections.length;e+=2){let i=this.sections[e],n=this.sections[e+1];n<0?t.push(i):0==n?t.push([i]):t.push([i].concat(this.inserted[e>>1].toJSON()))}return t}static of(t,i,n){let s=[],r=[],o=0,l=null;function a(t=!1){if(!t&&!s.length)return;o<i&&k(s,i-o,-1);let e=new x(s,r);l=l?l.compose(e.map(l)):e,s=[],r=[],o=0}return function t(h){if(Array.isArray(h))for(let e of h)t(e);else if(h instanceof x){if(h.length!=i)throw new RangeError(`Mismatched change set length (got ${h.length}, expected ${i})`);a(),l=l?l.compose(h.map(l)):h}else{let{from:t,to:l=t,insert:c}=h;if(t>l||t<0||l>i)throw new RangeError(`Invalid change range ${t} to ${l} (in doc of length ${i})`);let u=c?"string"==typeof c?e.of(c.split(n||y)):c:e.empty,f=u.length;if(t==l&&0==f)return;t<o&&a(),t>o&&k(s,t-o,-1),k(s,l-t,f),$(r,s,u),o=l}}(t),a(!l),l}static empty(t){return new x(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let i=[],n=[];for(let s=0;s<t.length;s++){let r=t[s];if("number"==typeof r)i.push(r,-1);else{if(!Array.isArray(r)||"number"!=typeof r[0]||r.some(((t,e)=>e&&"string"!=typeof t)))throw new RangeError("Invalid JSON representation of ChangeSet");if(1==r.length)i.push(r[0],0);else{for(;n.length<s;)n.push(e.empty);n[s]=e.of(r.slice(1)),i.push(r[0],n[s].length)}}}return new x(i,n)}static createSet(t,e){return new x(t,e)}}function k(t,e,i,n=!1){if(0==e&&i<=0)return;let s=t.length-2;s>=0&&i<=0&&i==t[s+1]?t[s]+=e:0==e&&0==t[s]?t[s+1]+=i:n?(t[s]+=e,t[s+1]+=i):t.push(e,i)}function $(t,i,n){if(0==n.length)return;let s=i.length-2>>1;if(s<t.length)t[t.length-1]=t[t.length-1].append(n);else{for(;t.length<s;)t.push(e.empty);t.push(n)}}function T(t,i,n){let s=t.inserted;for(let r=0,o=0,l=0;l<t.sections.length;){let a=t.sections[l++],h=t.sections[l++];if(h<0)r+=a,o+=a;else{let c=r,u=o,f=e.empty;for(;c+=a,u+=h,h&&s&&(f=f.append(s[l-2>>1])),!(n||l==t.sections.length||t.sections[l+1]<0);)a=t.sections[l++],h=t.sections[l++];i(r,c,o,u,f),r=c,o=u}}}function P(t,e,i,n=!1){let s=[],r=n?[]:null,o=new Z(t),l=new Z(e);for(let t=-1;;)if(-1==o.ins&&-1==l.ins){let t=Math.min(o.len,l.len);k(s,t,-1),o.forward(t),l.forward(t)}else if(l.ins>=0&&(o.ins<0||t==o.i||0==o.off&&(l.len<o.len||l.len==o.len&&!i))){let e=l.len;for(k(s,l.ins,-1);e;){let i=Math.min(o.len,e);o.ins>=0&&t<o.i&&o.len<=i&&(k(s,0,o.ins),r&&$(r,s,o.text),t=o.i),o.forward(i),e-=i}l.next()}else{if(!(o.ins>=0)){if(o.done&&l.done)return r?x.createSet(s,r):v.create(s);throw new Error("Mismatched change set lengths")}{let e=0,i=o.len;for(;i;)if(-1==l.ins){let t=Math.min(i,l.len);e+=t,i-=t,l.forward(t)}else{if(!(0==l.ins&&l.len<i))break;i-=l.len,l.next()}k(s,e,t<o.i?o.ins:0),r&&t<o.i&&$(r,s,o.text),t=o.i,o.forward(o.len-i)}}}function C(t,e,i=!1){let n=[],s=i?[]:null,r=new Z(t),o=new Z(e);for(let t=!1;;){if(r.done&&o.done)return s?x.createSet(n,s):v.create(n);if(0==r.ins)k(n,r.len,0,t),r.next();else if(0!=o.len||o.done){if(r.done||o.done)throw new Error("Mismatched change set lengths");{let e=Math.min(r.len2,o.len),i=n.length;if(-1==r.ins){let i=-1==o.ins?-1:o.off?0:o.ins;k(n,e,i,t),s&&i&&$(s,n,o.text)}else-1==o.ins?(k(n,r.off?0:r.len,e,t),s&&$(s,n,r.textBit(e))):(k(n,r.off?0:r.len,o.off?0:o.ins,t),s&&!o.off&&$(s,n,o.text));t=(r.ins>e||o.ins>=0&&o.len>e)&&(t||n.length>i),r.forward2(e),o.forward(e)}}else k(n,0,o.ins,t),s&&$(s,n,o.text),o.next()}}class Z{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i<t.length?(this.len=t[this.i++],this.ins=t[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return-2==this.ins}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length?e.empty:t[i]}textBit(t){let{inserted:i}=this.set,n=this.i-2>>1;return n>=i.length&&!t?e.empty:i[n].slice(this.off,null==t?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){-1==this.ins?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}}class A{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return 16&this.flags?this.to:this.from}get head(){return 16&this.flags?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return 4&this.flags?-1:8&this.flags?1:0}get bidiLevel(){let t=3&this.flags;return 3==t?null:t}get goalColumn(){let t=this.flags>>5;return 33554431==t?void 0:t}map(t,e=-1){let i,n;return this.empty?i=n=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),n=t.mapPos(this.to,-1)),i==this.from&&n==this.to?this:new A(i,n,this.flags)}extend(t,e=t){if(t<=this.anchor&&e>=this.anchor)return R.range(t,e);let i=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return R.range(this.anchor,i)}eq(t){return this.anchor==t.anchor&&this.head==t.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||"number"!=typeof t.anchor||"number"!=typeof t.head)throw new RangeError("Invalid JSON representation for SelectionRange");return R.range(t.anchor,t.head)}static create(t,e,i){return new A(t,e,i)}}class R{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:R.create(this.ranges.map((i=>i.map(t,e))),this.mainIndex)}eq(t){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let e=0;e<this.ranges.length;e++)if(!this.ranges[e].eq(t.ranges[e]))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return 1==this.ranges.length?this:new R([this.main],0)}addRange(t,e=!0){return R.create([t].concat(this.ranges),e?0:this.mainIndex+1)}replaceRange(t,e=this.mainIndex){let i=this.ranges.slice();return i[e]=t,R.create(i,this.mainIndex)}toJSON(){return{ranges:this.ranges.map((t=>t.toJSON())),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||"number"!=typeof t.main||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new R(t.ranges.map((t=>A.fromJSON(t))),t.main)}static single(t,e=t){return new R([R.range(t,e)],0)}static create(t,e=0){if(0==t.length)throw new RangeError("A selection needs at least one range");for(let i=0,n=0;n<t.length;n++){let s=t[n];if(s.empty?s.from<=i:s.from<i)return R.normalized(t.slice(),e);i=s.to}return new R(t,e)}static cursor(t,e=0,i,n){return A.create(t,t,(0==e?0:e<0?4:8)|(null==i?3:Math.min(2,i))|(null!=n?n:33554431)<<5)}static range(t,e,i){let n=(null!=i?i:33554431)<<5;return e<t?A.create(e,t,24|n):A.create(t,e,n|(e>t?4:0))}static normalized(t,e=0){let i=t[e];t.sort(((t,e)=>t.from-e.from)),e=t.indexOf(i);for(let i=1;i<t.length;i++){let n=t[i],s=t[i-1];if(n.empty?n.from<=s.to:n.from<s.to){let r=s.from,o=Math.max(n.to,s.to);i<=e&&e--,t.splice(--i,2,n.anchor>n.head?R.range(o,r):R.range(r,o))}}return new R(t,e)}}function X(t,e){for(let i of t.ranges)if(i.to>e)throw new RangeError("Selection points outside of document")}let U=0;class q{constructor(t,e,i,n,s){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=n,this.id=U++,this.default=t([]),this.extensions="function"==typeof s?s(this):s}static define(t={}){return new q(t.combine||(t=>t),t.compareInput||((t,e)=>t===e),t.compare||(t.combine?(t,e)=>t===e:V),!!t.static,t.enables)}of(t){return new _([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new _(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new _(t,this,2,e)}from(t,e){return e||(e=t=>t),this.compute([t],(i=>e(i.field(t))))}}function V(t,e){return t==e||t.length==e.length&&t.every(((t,i)=>t===e[i]))}class _{constructor(t,e,i,n){this.dependencies=t,this.facet=e,this.type=i,this.value=n,this.id=U++}dynamicSlot(t){var e;let i=this.value,n=this.facet.compareInput,s=this.id,r=t[s]>>1,o=2==this.type,l=!1,a=!1,h=[];for(let i of this.dependencies)"doc"==i?l=!0:"selection"==i?a=!0:0==(1&(null!==(e=t[i.id])&&void 0!==e?e:1))&&h.push(t[i.id]);return{create:t=>(t.values[r]=i(t),1),update(t,e){if(l&&e.docChanged||a&&(e.docChanged||e.selection)||D(t,h)){let e=i(t);if(o?!M(e,t.values[r],n):!n(e,t.values[r]))return t.values[r]=e,1}return 0},reconfigure:(t,e)=>{let l,a=e.config.address[s];if(null!=a){let s=tt(e,a);if(this.dependencies.every((i=>i instanceof q?e.facet(i)===t.facet(i):!(i instanceof E)||e.field(i,!1)==t.field(i,!1)))||(o?M(l=i(t),s,n):n(l=i(t),s)))return t.values[r]=s,0}else l=i(t);return t.values[r]=l,1}}}}function M(t,e,i){if(t.length!=e.length)return!1;for(let n=0;n<t.length;n++)if(!i(t[n],e[n]))return!1;return!0}function D(t,e){let i=!1;for(let n of e)1&K(t,n)&&(i=!0);return i}function j(t,e,i){let n=i.map((e=>t[e.id])),s=i.map((t=>t.type)),r=n.filter((t=>!(1&t))),o=t[e.id]>>1;function l(t){let i=[];for(let e=0;e<n.length;e++){let r=tt(t,n[e]);if(2==s[e])for(let t of r)i.push(t);else i.push(r)}return e.combine(i)}return{create(t){for(let e of n)K(t,e);return t.values[o]=l(t),1},update(t,i){if(!D(t,r))return 0;let n=l(t);return e.compare(n,t.values[o])?0:(t.values[o]=n,1)},reconfigure(t,s){let r=D(t,n),a=s.config.facets[e.id],h=s.facet(e);if(a&&!r&&V(i,a))return t.values[o]=h,0;let c=l(t);return e.compare(c,h)?(t.values[o]=h,0):(t.values[o]=c,1)}}}const W=q.define({static:!0});class E{constructor(t,e,i,n,s){this.id=t,this.createF=e,this.updateF=i,this.compareF=n,this.spec=s,this.provides=void 0}static define(t){let e=new E(U++,t.create,t.update,t.compare||((t,e)=>t===e),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(W).find((t=>t.field==this));return((null==e?void 0:e.create)||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:t=>(t.values[e]=this.create(t),1),update:(t,i)=>{let n=t.values[e],s=this.updateF(n,i);return this.compareF(n,s)?0:(t.values[e]=s,1)},reconfigure:(t,i)=>null!=i.config.address[this.id]?(t.values[e]=i.field(this),0):(t.values[e]=this.create(t),1)}}init(t){return[this,W.of({field:this,create:t})]}get extension(){return this}}const G=4,B=3,z=2,N=1;function I(t){return e=>new Y(e,t)}const L={highest:I(0),high:I(N),default:I(z),low:I(B),lowest:I(G)};class Y{constructor(t,e){this.inner=t,this.prec=e}}class F{of(t){return new H(this,t)}reconfigure(t){return F.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}}class H{constructor(t,e){this.compartment=t,this.inner=e}}class J{constructor(t,e,i,n,s,r){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=n,this.staticValues=s,this.facets=r,this.statusTemplate=[];this.statusTemplate.length<i.length;)this.statusTemplate.push(0)}staticFacet(t){let e=this.address[t.id];return null==e?t.default:this.staticValues[e>>1]}static resolve(t,e,i){let n=[],s=Object.create(null),r=new Map;for(let i of function(t,e,i){let n=[[],[],[],[],[]],s=new Map;function r(t,o){let l=s.get(t);if(null!=l){if(l<=o)return;let e=n[l].indexOf(t);e>-1&&n[l].splice(e,1),t instanceof H&&i.delete(t.compartment)}if(s.set(t,o),Array.isArray(t))for(let e of t)r(e,o);else if(t instanceof H){if(i.has(t.compartment))throw new RangeError("Duplicate use of compartment in extensions");let n=e.get(t.compartment)||t.inner;i.set(t.compartment,n),r(n,o)}else if(t instanceof Y)r(t.inner,t.prec);else if(t instanceof E)n[o].push(t),t.provides&&r(t.provides,o);else if(t instanceof _)n[o].push(t),t.facet.extensions&&r(t.facet.extensions,z);else{let e=t.extension;if(!e)throw new Error(`Unrecognized extension value in extension set (${t}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(e,o)}}return r(t,z),n.reduce(((t,e)=>t.concat(e)))}(t,e,r))i instanceof E?n.push(i):(s[i.facet.id]||(s[i.facet.id]=[])).push(i);let o=Object.create(null),l=[],a=[];for(let t of n)o[t.id]=a.length<<1,a.push((e=>t.slot(e)));let h=null==i?void 0:i.config.facets;for(let t in s){let e=s[t],n=e[0].facet,r=h&&h[t]||[];if(e.every((t=>0==t.type)))if(o[n.id]=l.length<<1|1,V(r,e))l.push(i.facet(n));else{let t=n.combine(e.map((t=>t.value)));l.push(i&&n.compare(t,i.facet(n))?i.facet(n):t)}else{for(let t of e)0==t.type?(o[t.id]=l.length<<1|1,l.push(t.value)):(o[t.id]=a.length<<1,a.push((e=>t.dynamicSlot(e))));o[n.id]=a.length<<1,a.push((t=>j(t,n,e)))}}let c=a.map((t=>t(o)));return new J(t,r,c,o,l,s)}}function K(t,e){if(1&e)return 2;let i=e>>1,n=t.status[i];if(4==n)throw new Error("Cyclic dependency between fields and/or facets");if(2&n)return n;t.status[i]=4;let s=t.computeSlot(t,t.config.dynamicSlots[i]);return t.status[i]=2|s}function tt(t,e){return 1&e?t.config.staticValues[e>>1]:t.values[e>>1]}const et=q.define(),it=q.define({combine:t=>t.some((t=>t)),static:!0}),nt=q.define({combine:t=>t.length?t[0]:void 0,static:!0}),st=q.define(),rt=q.define(),ot=q.define(),lt=q.define({combine:t=>!!t.length&&t[0]});class at{constructor(t,e){this.type=t,this.value=e}static define(){return new ht}}class ht{of(t){return new at(this,t)}}class ct{constructor(t){this.map=t}of(t){return new ut(this,t)}}class ut{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return void 0===e?void 0:e==this.value?this:new ut(this.type,e)}is(t){return this.type==t}static define(t={}){return new ct(t.map||(t=>t))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let n of t){let t=n.map(e);t&&i.push(t)}return i}}ut.reconfigure=ut.define(),ut.appendConfig=ut.define();class ft{constructor(t,e,i,n,s,r){this.startState=t,this.changes=e,this.selection=i,this.effects=n,this.annotations=s,this.scrollIntoView=r,this._doc=null,this._state=null,i&&X(i,e.newLength),s.some((t=>t.type==ft.time))||(this.annotations=s.concat(ft.time.of(Date.now())))}static create(t,e,i,n,s,r){return new ft(t,e,i,n,s,r)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(ft.userEvent);return!(!e||!(e==t||e.length>t.length&&e.slice(0,t.length)==t&&"."==e[t.length]))}}function Ot(t,e){let i=[];for(let n=0,s=0;;){let r,o;if(n<t.length&&(s==e.length||e[s]>=t[n]))r=t[n++],o=t[n++];else{if(!(s<e.length))return i;r=e[s++],o=e[s++]}!i.length||i[i.length-1]<r?i.push(r,o):i[i.length-1]<o&&(i[i.length-1]=o)}}function dt(t,e,i){var n;let s,r,o;return i?(s=e.changes,r=x.empty(e.changes.length),o=t.changes.compose(e.changes)):(s=e.changes.map(t.changes),r=t.changes.mapDesc(e.changes,!0),o=t.changes.compose(s)),{changes:o,selection:e.selection?e.selection.map(r):null===(n=t.selection)||void 0===n?void 0:n.map(s),effects:ut.mapEffects(t.effects,s).concat(ut.mapEffects(e.effects,r)),annotations:t.annotations.length?t.annotations.concat(e.annotations):e.annotations,scrollIntoView:t.scrollIntoView||e.scrollIntoView}}function pt(t,e,i){let n=e.selection,s=Qt(e.annotations);return e.userEvent&&(s=s.concat(ft.userEvent.of(e.userEvent))),{changes:e.changes instanceof x?e.changes:x.of(e.changes||[],i,t.facet(nt)),selection:n&&(n instanceof R?n:R.single(n.anchor,n.head)),effects:Qt(e.effects),annotations:s,scrollIntoView:!!e.scrollIntoView}}function mt(t,e,i){let n=pt(t,e.length?e[0]:{},t.doc.length);e.length&&!1===e[0].filter&&(i=!1);for(let s=1;s<e.length;s++){!1===e[s].filter&&(i=!1);let r=!!e[s].sequential;n=dt(n,pt(t,e[s],r?n.changes.newLength:t.doc.length),r)}let s=ft.create(t,n.changes,n.selection,n.effects,n.annotations,n.scrollIntoView);return function(t){let e=t.startState,i=e.facet(ot),n=t;for(let s=i.length-1;s>=0;s--){let r=i[s](t);r&&Object.keys(r).length&&(n=dt(n,pt(e,r,t.changes.newLength),!0))}return n==t?t:ft.create(e,t.changes,t.selection,n.effects,n.annotations,n.scrollIntoView)}(i?function(t){let e=t.startState,i=!0;for(let n of e.facet(st)){let e=n(t);if(!1===e){i=!1;break}Array.isArray(e)&&(i=!0===i?e:Ot(i,e))}if(!0!==i){let n,s;if(!1===i)s=t.changes.invertedDesc,n=x.empty(e.doc.length);else{let e=t.changes.filter(i);n=e.changes,s=e.filtered.mapDesc(e.changes).invertedDesc}t=ft.create(e,n,t.selection&&t.selection.map(s),ut.mapEffects(t.effects,s),t.annotations,t.scrollIntoView)}let n=e.facet(rt);for(let i=n.length-1;i>=0;i--){let s=n[i](t);t=s instanceof ft?s:Array.isArray(s)&&1==s.length&&s[0]instanceof ft?s[0]:mt(e,Qt(s),!1)}return t}(s):s)}ft.time=at.define(),ft.userEvent=at.define(),ft.addToHistory=at.define(),ft.remote=at.define();const gt=[];function Qt(t){return null==t?gt:Array.isArray(t)?t:[t]}var bt=function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t}(bt||(bt={}));const St=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let yt;try{yt=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(t){}function wt(t){return e=>{if(!/\S/.test(e))return bt.Space;if(function(t){if(yt)return yt.test(t);for(let e=0;e<t.length;e++){let i=t[e];if(/\w/.test(i)||i>"€"&&(i.toUpperCase()!=i.toLowerCase()||St.test(i)))return!0}return!1}(e))return bt.Word;for(let i=0;i<t.length;i++)if(e.indexOf(t[i])>-1)return bt.Word;return bt.Other}}class vt{constructor(t,e,i,n,s,r){this.config=t,this.doc=e,this.selection=i,this.values=n,this.status=t.statusTemplate.slice(),this.computeSlot=s,r&&(r._state=this);for(let t=0;t<this.config.dynamicSlots.length;t++)K(this,t<<1);this.computeSlot=null}field(t,e=!0){let i=this.config.address[t.id];if(null!=i)return K(this,i),tt(this,i);if(e)throw new RangeError("Field is not present in this state")}update(...t){return mt(this,t,!0)}applyTransaction(t){let e,i=this.config,{base:n,compartments:s}=i;for(let e of t.effects)e.is(F.reconfigure)?(i&&(s=new Map,i.compartments.forEach(((t,e)=>s.set(e,t))),i=null),s.set(e.value.compartment,e.value.extension)):e.is(ut.reconfigure)?(i=null,n=e.value):e.is(ut.appendConfig)&&(i=null,n=Qt(n).concat(e.value));if(i)e=t.startState.values.slice();else{i=J.resolve(n,s,this),e=new vt(i,this.doc,this.selection,i.dynamicSlots.map((()=>null)),((t,e)=>e.reconfigure(t,this)),null).values}new vt(i,t.newDoc,t.newSelection,e,((e,i)=>i.update(e,t)),t)}replaceSelection(t){return"string"==typeof t&&(t=this.toText(t)),this.changeByRange((e=>({changes:{from:e.from,to:e.to,insert:t},range:R.cursor(e.from+t.length)})))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),n=this.changes(i.changes),s=[i.range],r=Qt(i.effects);for(let i=1;i<e.ranges.length;i++){let o=t(e.ranges[i]),l=this.changes(o.changes),a=l.map(n);for(let t=0;t<i;t++)s[t]=s[t].map(a);let h=n.mapDesc(l,!0);s.push(o.range.map(h)),n=n.compose(a),r=ut.mapEffects(r,a).concat(ut.mapEffects(Qt(o.effects),h))}return{changes:n,selection:R.create(s,e.mainIndex),effects:r}}changes(t=[]){return t instanceof x?t:x.of(t,this.doc.length,this.facet(vt.lineSeparator))}toText(t){return e.of(t.split(this.facet(vt.lineSeparator)||y))}sliceDoc(t=0,e=this.doc.length){return this.doc.sliceString(t,e,this.lineBreak)}facet(t){let e=this.config.address[t.id];return null==e?t.default:(K(this,e),tt(this,e))}toJSON(t){let e={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(t)for(let i in t){let n=t[i];n instanceof E&&null!=this.config.address[n.id]&&(e[i]=n.spec.toJSON(this.field(t[i]),this))}return e}static fromJSON(t,e={},i){if(!t||"string"!=typeof t.doc)throw new RangeError("Invalid JSON representation for EditorState");let n=[];if(i)for(let e in i)if(Object.prototype.hasOwnProperty.call(t,e)){let s=i[e],r=t[e];n.push(s.init((t=>s.spec.fromJSON(r,t))))}return vt.create({doc:t.doc,selection:R.fromJSON(t.selection),extensions:e.extensions?n.concat([e.extensions]):n})}static create(t={}){let i=J.resolve(t.extensions||[],new Map),n=t.doc instanceof e?t.doc:e.of((t.doc||"").split(i.staticFacet(vt.lineSeparator)||y)),s=t.selection?t.selection instanceof R?t.selection:R.single(t.selection.anchor,t.selection.head):R.single(0);return X(s,n.length),i.staticFacet(it)||(s=s.asSingle()),new vt(i,n,s,i.dynamicSlots.map((()=>null)),((t,e)=>e.create(t)),null)}get tabSize(){return this.facet(vt.tabSize)}get lineBreak(){return this.facet(vt.lineSeparator)||"\n"}get readOnly(){return this.facet(lt)}phrase(t,...e){for(let e of this.facet(vt.phrases))if(Object.prototype.hasOwnProperty.call(e,t)){t=e[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,((t,i)=>{if("$"==i)return"$";let n=+(i||1);return!n||n>e.length?t:e[n-1]}))),t}languageDataAt(t,e,i=-1){let n=[];for(let s of this.facet(et))for(let r of s(this,e,i))Object.prototype.hasOwnProperty.call(r,t)&&n.push(r[t]);return n}charCategorizer(t){return wt(this.languageDataAt("wordChars",t).join(""))}wordAt(t){let{text:e,from:i,length:n}=this.doc.lineAt(t),s=this.charCategorizer(t),r=t-i,o=t-i;for(;r>0;){let t=O(e,r,!1);if(s(e.slice(t,r))!=bt.Word)break;r=t}for(;o<n;){let t=O(e,o);if(s(e.slice(o,t))!=bt.Word)break;o=t}return r==o?null:R.range(r+i,o+i)}}function xt(t,e,i={}){let n={};for(let e of t)for(let t of Object.keys(e)){let s=e[t],r=n[t];if(void 0===r)n[t]=s;else if(r===s||void 0===s);else{if(!Object.hasOwnProperty.call(i,t))throw new Error("Config merge conflict for field "+t);n[t]=i[t](r,s)}}for(let t in e)void 0===n[t]&&(n[t]=e[t]);return n}vt.allowMultipleSelections=it,vt.tabSize=q.define({combine:t=>t.length?t[0]:4}),vt.lineSeparator=nt,vt.readOnly=lt,vt.phrases=q.define({compare(t,e){let i=Object.keys(t),n=Object.keys(e);return i.length==n.length&&i.every((i=>t[i]==e[i]))}}),vt.languageData=et,vt.changeFilter=st,vt.transactionFilter=rt,vt.transactionExtender=ot,F.reconfigure=ut.define();class kt{eq(t){return this==t}range(t,e=t){return $t.create(t,e,this)}}kt.prototype.startSide=kt.prototype.endSide=0,kt.prototype.point=!1,kt.prototype.mapMode=w.TrackDel;let $t=class{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new $t(t,e,i)}};function Tt(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class Pt{constructor(t,e,i,n){this.from=t,this.to=e,this.value=i,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,n=0){let s=i?this.to:this.from;for(let r=n,o=s.length;;){if(r==o)return r;let n=r+o>>1,l=s[n]-t||(i?this.value[n].endSide:this.value[n].startSide)-e;if(n==r)return l>=0?r:o;l>=0?o=n:r=n+1}}between(t,e,i,n){for(let s=this.findIndex(e,-1e9,!0),r=this.findIndex(i,1e9,!1,s);s<r;s++)if(!1===n(this.from[s]+t,this.to[s]+t,this.value[s]))return!1}map(t,e){let i=[],n=[],s=[],r=-1,o=-1;for(let l=0;l<this.value.length;l++){let a,h,c=this.value[l],u=this.from[l]+t,f=this.to[l]+t;if(u==f){let t=e.mapPos(u,c.startSide,c.mapMode);if(null==t)continue;if(a=h=t,c.startSide!=c.endSide&&(h=e.mapPos(u,c.endSide),h<a))continue}else if(a=e.mapPos(u,c.startSide),h=e.mapPos(f,c.endSide),a>h||a==h&&c.startSide>0&&c.endSide<=0)continue;(h-a||c.endSide-c.startSide)<0||(r<0&&(r=a),c.point&&(o=Math.max(o,h-a)),i.push(c),n.push(a-r),s.push(h-r))}return{mapped:i.length?new Pt(n,s,i,o):null,pos:r}}}class Ct{constructor(t,e,i,n){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=n}static create(t,e,i,n){return new Ct(t,e,i,n)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:n=0,filterTo:s=this.length}=t,r=t.filter;if(0==e.length&&!r)return this;if(i&&(e=e.slice().sort(Tt)),this.isEmpty)return e.length?Ct.of(e):this;let o=new Rt(this,null,-1).goto(0),l=0,a=[],h=new Zt;for(;o.value||l<e.length;)if(l<e.length&&(o.from-e[l].from||o.startSide-e[l].value.startSide)>=0){let t=e[l++];h.addInner(t.from,t.to,t.value)||a.push(t)}else 1==o.rangeIndex&&o.chunkIndex<this.chunk.length&&(l==e.length||this.chunkEnd(o.chunkIndex)<e[l].from)&&(!r||n>this.chunkEnd(o.chunkIndex)||s<this.chunkPos[o.chunkIndex])&&h.addChunk(this.chunkPos[o.chunkIndex],this.chunk[o.chunkIndex])?o.nextChunk():((!r||n>o.to||s<o.from||r(o.from,o.to,o.value))&&(h.addInner(o.from,o.to,o.value)||a.push($t.create(o.from,o.to,o.value))),o.next());return h.finishInner(this.nextLayer.isEmpty&&!a.length?Ct.empty:this.nextLayer.update({add:a,filter:r,filterFrom:n,filterTo:s}))}map(t){if(t.empty||this.isEmpty)return this;let e=[],i=[],n=-1;for(let s=0;s<this.chunk.length;s++){let r=this.chunkPos[s],o=this.chunk[s],l=t.touchesRange(r,r+o.length);if(!1===l)n=Math.max(n,o.maxPoint),e.push(o),i.push(t.mapPos(r));else if(!0===l){let{mapped:s,pos:l}=o.map(r,t);s&&(n=Math.max(n,s.maxPoint),e.push(s),i.push(l))}}let s=this.nextLayer.map(t);return 0==e.length?s:new Ct(i,e,s||Ct.empty,n)}between(t,e,i){if(!this.isEmpty){for(let n=0;n<this.chunk.length;n++){let s=this.chunkPos[n],r=this.chunk[n];if(e>=s&&t<=s+r.length&&!1===r.between(s,t-s,e-s,i))return}this.nextLayer.between(t,e,i)}}iter(t=0){return Xt.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return Xt.from(t).goto(e)}static compare(t,e,i,n,s=-1){let r=t.filter((t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=s)),o=e.filter((t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=s)),l=At(r,o,i),a=new qt(r,l,s),h=new qt(o,l,s);i.iterGaps(((t,e,i)=>Vt(a,t,h,e,i,n))),i.empty&&0==i.length&&Vt(a,0,h,0,0,n)}static eq(t,e,i=0,n){null==n&&(n=999999999);let s=t.filter((t=>!t.isEmpty&&e.indexOf(t)<0)),r=e.filter((e=>!e.isEmpty&&t.indexOf(e)<0));if(s.length!=r.length)return!1;if(!s.length)return!0;let o=At(s,r),l=new qt(s,o,0).goto(i),a=new qt(r,o,0).goto(i);for(;;){if(l.to!=a.to||!_t(l.active,a.active)||l.point&&(!a.point||!l.point.eq(a.point)))return!1;if(l.to>n)return!0;l.next(),a.next()}}static spans(t,e,i,n,s=-1){let r=new qt(t,null,s).goto(e),o=e,l=r.openStart;for(;;){let t=Math.min(r.to,i);if(r.point){let i=r.activeForPoint(r.to),s=r.pointFrom<e?i.length+1:Math.min(i.length,l);n.point(o,t,r.point,i,s,r.pointRank),l=Math.min(r.openEnd(t),i.length)}else t>o&&(n.span(o,t,r.active,l),l=r.openEnd(t));if(r.to>i)return l+(r.point&&r.to>i?1:0);o=r.to,r.next()}}static of(t,e=!1){let i=new Zt;for(let n of t instanceof $t?[t]:e?function(t){if(t.length>1)for(let e=t[0],i=1;i<t.length;i++){let n=t[i];if(Tt(e,n)>0)return t.slice().sort(Tt);e=n}return t}(t):t)i.add(n.from,n.to,n.value);return i.finish()}}Ct.empty=new Ct([],[],null,-1),Ct.empty.nextLayer=Ct.empty;class Zt{constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}finishChunk(t){this.chunks.push(new Pt(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new Zt)).add(t,e,i)}addInner(t,e,i){let n=t-this.lastTo||i.startSide-this.last.endSide;if(n<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return!(n<0)&&(250==this.from.length&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(Ct.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),0==this.chunks.length)return t;let e=Ct.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}}function At(t,e,i){let n=new Map;for(let e of t)for(let t=0;t<e.chunk.length;t++)e.chunk[t].maxPoint<=0&&n.set(e.chunk[t],e.chunkPos[t]);let s=new Set;for(let t of e)for(let e=0;e<t.chunk.length;e++){let r=n.get(t.chunk[e]);null==r||(i?i.mapPos(r):r)!=t.chunkPos[e]||(null==i?void 0:i.touchesRange(r,r+t.chunk[e].length))||s.add(t.chunk[e])}return s}class Rt{constructor(t,e,i,n=0){this.layer=t,this.skip=e,this.minPoint=i,this.rank=n}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(t,e=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(t,e,!1),this}gotoInner(t,e,i){for(;this.chunkIndex<this.layer.chunk.length;){let e=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(e)||this.layer.chunkEnd(this.chunkIndex)<t||e.maxPoint<this.minPoint))break;this.chunkIndex++,i=!1}if(this.chunkIndex<this.layer.chunk.length){let n=this.layer.chunk[this.chunkIndex].findIndex(t-this.layer.chunkPos[this.chunkIndex],e,!0);(!i||this.rangeIndex<n)&&this.setRangeIndex(n)}this.next()}forward(t,e){(this.to-t||this.endSide-e)<0&&this.gotoInner(t,e,!0)}next(){for(;;){if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}{let t=this.layer.chunkPos[this.chunkIndex],e=this.layer.chunk[this.chunkIndex],i=t+e.from[this.rangeIndex];if(this.from=i,this.to=t+e.to[this.rangeIndex],this.value=e.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=t}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(t){return this.from-t.from||this.startSide-t.startSide||this.rank-t.rank||this.to-t.to||this.endSide-t.endSide}}class Xt{constructor(t){this.heap=t}static from(t,e=null,i=-1){let n=[];for(let s=0;s<t.length;s++)for(let r=t[s];!r.isEmpty;r=r.nextLayer)r.maxPoint>=i&&n.push(new Rt(r,e,i,s));return 1==n.length?n[0]:new Xt(n)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let t=this.heap.length>>1;t>=0;t--)Ut(this.heap,t);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let t=this.heap.length>>1;t>=0;t--)Ut(this.heap,t);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(0==this.heap.length)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Ut(this.heap,0)}}}function Ut(t,e){for(let i=t[e];;){let n=1+(e<<1);if(n>=t.length)break;let s=t[n];if(n+1<t.length&&s.compare(t[n+1])>=0&&(s=t[n+1],n++),i.compare(s)<0)break;t[n]=i,t[e]=s,e=n}}class qt{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Xt.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Mt(this.active,t),Mt(this.activeTo,t),Mt(this.activeRank,t),this.minActive=jt(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:n,rank:s}=this.cursor;for(;e<this.activeRank.length&&this.activeRank[e]<=s;)e++;Dt(this.active,e,i),Dt(this.activeTo,e,n),Dt(this.activeRank,e,s),t&&Dt(t,e,this.cursor.from),this.minActive=jt(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let n=this.minActive;if(n>-1&&(this.activeTo[n]-this.cursor.from||this.active[n].endSide-this.cursor.startSide)<0){if(this.activeTo[n]>t){this.to=this.activeTo[n],this.endSide=this.active[n].endSide;break}this.removeActive(n),i&&Mt(i,n)}else{if(!this.cursor.value){this.to=this.endSide=1e9;break}if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}{let t=this.cursor.value;if(t.point){if(!(e&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)){this.point=t,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=t.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}this.cursor.next()}else this.addActive(i),this.cursor.next()}}}if(i){this.openStart=0;for(let e=i.length-1;e>=0&&i[e]<t;e--)this.openStart++}}activeForPoint(t){if(!this.active.length)return this.active;let e=[];for(let i=this.active.length-1;i>=0&&!(this.activeRank[i]<this.pointRank);i--)(this.activeTo[i]>t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}}function Vt(t,e,i,n,s,r){t.goto(e),i.goto(n);let o=n+s,l=n,a=n-e;for(;;){let e=t.to+a-i.to||t.endSide-i.endSide,n=e<0?t.to+a:i.to,s=Math.min(n,o);if(t.point||i.point?t.point&&i.point&&(t.point==i.point||t.point.eq(i.point))&&_t(t.activeForPoint(t.to+a),i.activeForPoint(i.to))||r.comparePoint(l,s,t.point,i.point):s>l&&!_t(t.active,i.active)&&r.compareRange(l,s,t.active,i.active),n>o)break;l=n,e<=0&&t.next(),e>=0&&i.next()}}function _t(t,e){if(t.length!=e.length)return!1;for(let i=0;i<t.length;i++)if(t[i]!=e[i]&&!t[i].eq(e[i]))return!1;return!0}function Mt(t,e){for(let i=e,n=t.length-1;i<n;i++)t[i]=t[i+1];t.pop()}function Dt(t,e,i){for(let i=t.length-1;i>=e;i--)t[i+1]=t[i];t[e]=i}function jt(t,e){let i=-1,n=1e9;for(let s=0;s<e.length;s++)(e[s]-n||t[s].endSide-t[i].endSide)<0&&(i=s,n=e[s]);return i}function Wt(t,e,i=t.length){let n=0;for(let s=0;s<i;)9==t.charCodeAt(s)?(n+=e-n%e,s++):(n++,s=O(t,s));return n}function Et(t,e,i,n){for(let n=0,s=0;;){if(s>=e)return n;if(n==t.length)break;s+=9==t.charCodeAt(n)?i-s%i:1,n=O(t,n)}return!0===n?-1:t.length}const Gt="undefined"==typeof Symbol?"__ͼ":Symbol.for("ͼ"),Bt="undefined"==typeof Symbol?"__styleSet"+Math.floor(1e8*Math.random()):Symbol("styleSet"),zt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:{};class Nt{constructor(t,e){this.rules=[];let{finish:i}=e||{};function n(t){return/^@/.test(t)?[t]:t.split(/,\s*/)}function s(t,e,r,o){let l=[],a=/^@(\w+)\b/.exec(t[0]),h=a&&"keyframes"==a[1];if(a&&null==e)return r.push(t[0]+";");for(let i in e){let o=e[i];if(/&/.test(i))s(i.split(/,\s*/).map((e=>t.map((t=>e.replace(/&/,t))))).reduce(((t,e)=>t.concat(e))),o,r);else if(o&&"object"==typeof o){if(!a)throw new RangeError("The value of a property ("+i+") should be a primitive value.");s(n(i),o,l,h)}else null!=o&&l.push(i.replace(/_.*/,"").replace(/[A-Z]/g,(t=>"-"+t.toLowerCase()))+": "+o+";")}(l.length||h)&&r.push((!i||a||o?t:t.map(i)).join(", ")+" {"+l.join(" ")+"}")}for(let e in t)s(n(e),t[e],this.rules)}getRules(){return this.rules.join("\n")}static newName(){let t=zt[Gt]||1;return zt[Gt]=t+1,"ͼ"+t.toString(36)}static mount(t,e){(t[Bt]||new Lt(t)).mount(Array.isArray(e)?e:[e])}}let It=null;class Lt{constructor(t){if(!t.head&&t.adoptedStyleSheets&&"undefined"!=typeof CSSStyleSheet){if(It)return t.adoptedStyleSheets=[It.sheet].concat(t.adoptedStyleSheets),t[Bt]=It;this.sheet=new CSSStyleSheet,t.adoptedStyleSheets=[this.sheet].concat(t.adoptedStyleSheets),It=this}else{this.styleTag=(t.ownerDocument||t).createElement("style");let e=t.head||t;e.insertBefore(this.styleTag,e.firstChild)}this.modules=[],t[Bt]=this}mount(t){let e=this.sheet,i=0,n=0;for(let s=0;s<t.length;s++){let r=t[s],o=this.modules.indexOf(r);if(o<n&&o>-1&&(this.modules.splice(o,1),n--,o=-1),-1==o){if(this.modules.splice(n++,0,r),e)for(let t=0;t<r.rules.length;t++)e.insertRule(r.rules[t],i++)}else{for(;n<o;)i+=this.modules[n++].rules.length;i+=r.rules.length,n++}}if(!e){let t="";for(let e=0;e<this.modules.length;e++)t+=this.modules[e].getRules()+"\n";this.styleTag.textContent=t}}}var Yt={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Ft={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Ht="undefined"!=typeof navigator&&/Chrome\/(\d+)/.exec(navigator.userAgent);"undefined"!=typeof navigator&&/Gecko\/\d+/.test(navigator.userAgent);for(var Jt="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),Kt="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),te=Jt||Ht&&+Ht[1]<57,ee=0;ee<10;ee++)Yt[48+ee]=Yt[96+ee]=String(ee);for(ee=1;ee<=24;ee++)Yt[ee+111]="F"+ee;for(ee=65;ee<=90;ee++)Yt[ee]=String.fromCharCode(ee+32),Ft[ee]=String.fromCharCode(ee);for(var ie in Yt)Ft.hasOwnProperty(ie)||(Ft[ie]=Yt[ie]);function ne(t){let e;return e=11==t.nodeType?t.getSelection?t:t.ownerDocument:t,e.getSelection()}function se(t,e){return!!e&&(t==e||t.contains(1!=e.nodeType?e.parentNode:e))}function re(t,e){if(!e.anchorNode)return!1;try{return se(t,e.anchorNode)}catch(t){return!1}}function oe(t){return 3==t.nodeType?Qe(t,0,t.nodeValue.length).getClientRects():1==t.nodeType?t.getClientRects():[]}function le(t,e,i,n){return!!i&&(he(t,e,i,n,-1)||he(t,e,i,n,1))}function ae(t){for(var e=0;;e++)if(!(t=t.previousSibling))return e}function he(t,e,i,n,s){for(;;){if(t==i&&e==n)return!0;if(e==(s<0?0:ce(t))){if("DIV"==t.nodeName)return!1;let i=t.parentNode;if(!i||1!=i.nodeType)return!1;e=ae(t)+(s<0?0:1),t=i}else{if(1!=t.nodeType)return!1;if(1==(t=t.childNodes[e+(s<0?-1:0)]).nodeType&&"false"==t.contentEditable)return!1;e=s<0?ce(t):0}}}function ce(t){return 3==t.nodeType?t.nodeValue.length:t.childNodes.length}const ue={left:0,right:0,top:0,bottom:0};function fe(t,e){let i=e?t.left:t.right;return{left:i,right:i,top:t.top,bottom:t.bottom}}function Oe(t){return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}class de{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){this.set(t.anchorNode,t.anchorOffset,t.focusNode,t.focusOffset)}set(t,e,i,n){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=n}}let pe,me=null;function ge(t){if(t.setActive)return t.setActive();if(me)return t.focus(me);let e=[];for(let i=t;i&&(e.push(i,i.scrollTop,i.scrollLeft),i!=i.ownerDocument);i=i.parentNode);if(t.focus(null==me?{get preventScroll(){return me={preventScroll:!0},!0}}:void 0),!me){me=!1;for(let t=0;t<e.length;){let i=e[t++],n=e[t++],s=e[t++];i.scrollTop!=n&&(i.scrollTop=n),i.scrollLeft!=s&&(i.scrollLeft=s)}}}function Qe(t,e,i=e){let n=pe||(pe=document.createRange());return n.setEnd(t,i),n.setStart(t,e),n}function be(t,e,i){let n={key:e,code:e,keyCode:i,which:i,cancelable:!0},s=new KeyboardEvent("keydown",n);s.synthetic=!0,t.dispatchEvent(s);let r=new KeyboardEvent("keyup",n);return r.synthetic=!0,t.dispatchEvent(r),s.defaultPrevented||r.defaultPrevented}function Se(t){for(;t.attributes.length;)t.removeAttributeNode(t.attributes[0])}class ye{constructor(t,e,i=!0){this.node=t,this.offset=e,this.precise=i}static before(t,e){return new ye(t.parentNode,ae(t),e)}static after(t,e){return new ye(t.parentNode,ae(t)+1,e)}}const we=[];class ve{constructor(){this.parent=null,this.dom=null,this.dirty=2}get editorView(){if(!this.parent)throw new Error("Accessing view in orphan content view");return this.parent.editorView}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t){let e=this.posAtStart;for(let i of this.children){if(i==t)return e;e+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}coordsAt(t,e){return null}sync(t){if(2&this.dirty){let e,i=this.dom,n=null;for(let s of this.children){if(s.dirty){if(!s.dom&&(e=n?n.nextSibling:i.firstChild)){let t=ve.get(e);(!t||!t.parent&&t.canReuseDOM(s))&&s.reuseDOM(e)}s.sync(t),s.dirty=0}if(e=n?n.nextSibling:i.firstChild,t&&!t.written&&t.node==i&&e!=s.dom&&(t.written=!0),s.dom.parentNode==i)for(;e&&e!=s.dom;)e=xe(e);else i.insertBefore(s.dom,e);n=s.dom}for(e=n?n.nextSibling:i.firstChild,e&&t&&t.node==i&&(t.written=!0);e;)e=xe(e)}else if(1&this.dirty)for(let e of this.children)e.dirty&&(e.sync(t),e.dirty=0)}reuseDOM(t){}localPosFromDOM(t,e){let i;if(t==this.dom)i=this.dom.childNodes[e];else{let n=0==ce(t)?0:0==e?-1:1;for(;;){let e=t.parentNode;if(e==this.dom)break;0==n&&e.firstChild!=e.lastChild&&(n=t==e.firstChild?-1:1),t=e}i=n<0?t:t.nextSibling}if(i==this.dom.firstChild)return 0;for(;i&&!ve.get(i);)i=i.nextSibling;if(!i)return this.length;for(let t=0,e=0;;t++){let n=this.children[t];if(n.dom==i)return e;e+=n.length+n.breakAfter}}domBoundsAround(t,e,i=0){let n=-1,s=-1,r=-1,o=-1;for(let l=0,a=i,h=i;l<this.children.length;l++){let i=this.children[l],c=a+i.length;if(a<t&&c>e)return i.domBoundsAround(t,e,a);if(c>=t&&-1==n&&(n=l,s=a),a>e&&i.dom.parentNode==this.dom){r=l,o=h;break}h=c,a=c+i.breakAfter}return{from:s,to:o<0?i+this.length:o,startDOM:(n?this.children[n-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:r<this.children.length&&r>=0?this.children[r].dom:null}}markDirty(t=!1){this.dirty|=2,this.markParentsDirty(t)}markParentsDirty(t){for(let e=this.parent;e;e=e.parent){if(t&&(e.dirty|=2),1&e.dirty)return;e.dirty|=1,t=!1}}setParent(t){this.parent!=t&&(this.parent=t,this.dirty&&this.markParentsDirty(!0))}setDOM(t){this.dom&&(this.dom.cmView=null),this.dom=t,t.cmView=this}get rootView(){for(let t=this;;){let e=t.parent;if(!e)return t;t=e}}replaceChildren(t,e,i=we){this.markDirty();for(let i=t;i<e;i++){let t=this.children[i];t.parent==this&&t.destroy()}this.children.splice(t,e-t,...i);for(let t=0;t<i.length;t++)i[t].setParent(this)}ignoreMutation(t){return!1}ignoreEvent(t){return!1}childCursor(t=this.length){return new ke(this.children,t,this.children.length)}childPos(t,e=1){return this.childCursor().findPos(t,e)}toString(){let t=this.constructor.name.replace("View","");return t+(this.children.length?"("+this.children.join()+")":this.length?"["+("Text"==t?this.text:this.length)+"]":"")+(this.breakAfter?"#":"")}static get(t){return t.cmView}get isEditable(){return!0}merge(t,e,i,n,s,r){return!1}become(t){return!1}canReuseDOM(t){return t.constructor==this.constructor}getSide(){return 0}destroy(){this.parent=null}}function xe(t){let e=t.nextSibling;return t.parentNode.removeChild(t),e}ve.prototype.breakAfter=0;class ke{constructor(t,e,i){this.children=t,this.pos=e,this.i=i,this.off=0}findPos(t,e=1){for(;;){if(t>this.pos||t==this.pos&&(e>0||0==this.i||this.children[this.i-1].breakAfter))return this.off=t-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}}function $e(t,e,i,n,s,r,o,l,a){let{children:h}=t,c=h.length?h[e]:null,u=r.length?r[r.length-1]:null,f=u?u.breakAfter:o;if(!(e==n&&c&&!o&&!f&&r.length<2&&c.merge(i,s,r.length?u:null,0==i,l,a))){if(n<h.length){let t=h[n];t&&s<t.length?(e==n&&(t=t.split(s),s=0),!f&&u&&t.merge(0,s,u,!0,0,a)?r[r.length-1]=t:(s&&t.merge(0,s,null,!1,0,a),r.push(t))):(null==t?void 0:t.breakAfter)&&(u?u.breakAfter=1:o=1),n++}for(c&&(c.breakAfter=o,i>0&&(!o&&r.length&&c.merge(i,c.length,r[0],!1,l,0)?c.breakAfter=r.shift().breakAfter:(i<c.length||c.children.length&&0==c.children[c.children.length-1].length)&&c.merge(i,c.length,null,!1,l,0),e++));e<n&&r.length;)if(h[n-1].become(r[r.length-1]))n--,r.pop(),a=r.length?0:l;else{if(!h[e].become(r[0]))break;e++,r.shift(),l=r.length?0:a}!r.length&&e&&n<h.length&&!h[e-1].breakAfter&&h[n].merge(0,0,h[e-1],!1,l,a)&&e--,(e<n||r.length)&&t.replaceChildren(e,n,r)}}function Te(t,e,i,n,s,r){let o=t.childCursor(),{i:l,off:a}=o.findPos(i,1),{i:h,off:c}=o.findPos(e,-1),u=e-i;for(let t of n)u+=t.length;t.length+=u,$e(t,h,c,l,a,n,0,s,r)}let Pe="undefined"!=typeof navigator?navigator:{userAgent:"",vendor:"",platform:""},Ce="undefined"!=typeof document?document:{documentElement:{style:{}}};const Ze=/Edge\/(\d+)/.exec(Pe.userAgent),Ae=/MSIE \d/.test(Pe.userAgent),Re=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Pe.userAgent),Xe=!!(Ae||Re||Ze),Ue=!Xe&&/gecko\/(\d+)/i.test(Pe.userAgent),qe=!Xe&&/Chrome\/(\d+)/.exec(Pe.userAgent),Ve="webkitFontSmoothing"in Ce.documentElement.style,_e=!Xe&&/Apple Computer/.test(Pe.vendor),Me=_e&&(/Mobile\/\w+/.test(Pe.userAgent)||Pe.maxTouchPoints>2);var De={mac:Me||/Mac/.test(Pe.platform),windows:/Win/.test(Pe.platform),linux:/Linux|X11/.test(Pe.platform),ie:Xe,ie_version:Ae?Ce.documentMode||6:Re?+Re[1]:Ze?+Ze[1]:0,gecko:Ue,gecko_version:Ue?+(/Firefox\/(\d+)/.exec(Pe.userAgent)||[0,0])[1]:0,chrome:!!qe,chrome_version:qe?+qe[1]:0,ios:Me,android:/Android\b/.test(Pe.userAgent),webkit:Ve,safari:_e,webkit_version:Ve?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:null!=Ce.documentElement.style.tabSize?"tab-size":"-moz-tab-size"};class je extends ve{constructor(t){super(),this.text=t}get length(){return this.text.length}createDOM(t){this.setDOM(t||document.createTextNode(this.text))}sync(t){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(t&&t.node==this.dom&&(t.written=!0),this.dom.nodeValue=this.text)}reuseDOM(t){3==t.nodeType&&this.createDOM(t)}merge(t,e,i){return(!i||i instanceof je&&!(this.length-(e-t)+i.length>256))&&(this.text=this.text.slice(0,t)+(i?i.text:"")+this.text.slice(e),this.markDirty(),!0)}split(t){let e=new je(this.text.slice(t));return this.text=this.text.slice(0,t),this.markDirty(),e}localPosFromDOM(t,e){return t==this.dom?e:e?this.text.length:0}domAtPos(t){return new ye(this.dom,t)}domBoundsAround(t,e,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(t,e){return Ee(this.dom,t,e)}}class We extends ve{constructor(t,e=[],i=0){super(),this.mark=t,this.children=e,this.length=i;for(let t of e)t.setParent(this)}setAttrs(t){if(Se(t),this.mark.class&&(t.className=this.mark.class),this.mark.attrs)for(let e in this.mark.attrs)t.setAttribute(e,this.mark.attrs[e]);return t}reuseDOM(t){t.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(t),this.dirty|=6)}sync(t){this.dom?4&this.dirty&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(t)}merge(t,e,i,n,s,r){return(!i||!(!(i instanceof We&&i.mark.eq(this.mark))||t&&s<=0||e<this.length&&r<=0))&&(Te(this,t,e,i?i.children:[],s-1,r-1),this.markDirty(),!0)}split(t){let e=[],i=0,n=-1,s=0;for(let r of this.children){let o=i+r.length;o>t&&e.push(i<t?r.split(t-i):r),n<0&&i>=t&&(n=s),i=o,s++}let r=this.length-t;return this.length=t,n>-1&&(this.children.length=n,this.markDirty()),new We(this.mark,e,r)}domAtPos(t){return Le(this,t)}coordsAt(t,e){return Fe(this,t,e)}}function Ee(t,e,i){let n=t.nodeValue.length;e>n&&(e=n);let s=e,r=e,o=0;0==e&&i<0||e==n&&i>=0?De.chrome||De.gecko||(e?(s--,o=1):r<n&&(r++,o=-1)):i<0?s--:r<n&&r++;let l=Qe(t,s,r).getClientRects();if(!l.length)return ue;let a=l[(o?o<0:i>=0)?0:l.length-1];return De.safari&&!o&&0==a.width&&(a=Array.prototype.find.call(l,(t=>t.width))||a),o?fe(a,o<0):a||null}class Ge extends ve{constructor(t,e,i){super(),this.widget=t,this.length=e,this.side=i,this.prevWidget=null}static create(t,e,i){return new(t.customView||Ge)(t,e,i)}split(t){let e=Ge.create(this.widget,this.length-t,this.side);return this.length-=t,e}sync(){this.dom&&this.widget.updateDOM(this.dom)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(this.editorView)),this.dom.contentEditable="false")}getSide(){return this.side}merge(t,e,i,n,s,r){return!(i&&(!(i instanceof Ge&&this.widget.compare(i.widget))||t>0&&s<=0||e<this.length&&r<=0))&&(this.length=t+(i?i.length:0)+(this.length-e),!0)}become(t){return t.length==this.length&&t instanceof Ge&&t.side==this.side&&this.widget.constructor==t.widget.constructor&&(this.widget.eq(t.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=t.widget,!0)}ignoreMutation(){return!0}ignoreEvent(t){return this.widget.ignoreEvent(t)}get overrideDOMText(){if(0==this.length)return e.empty;let t=this;for(;t.parent;)t=t.parent;let i=t.editorView,n=i&&i.state.doc,s=this.posAtStart;return n?n.slice(s,s+this.length):e.empty}domAtPos(t){return 0==t?ye.before(this.dom):ye.after(this.dom,t==this.length)}domBoundsAround(){return null}coordsAt(t,e){let i=this.dom.getClientRects(),n=null;if(!i.length)return ue;for(let e=t>0?i.length-1:0;n=i[e],!(t>0?0==e:e==i.length-1||n.top<n.bottom);e+=t>0?-1:1);return this.length?n:fe(n,this.side>0)}get isEditable(){return!1}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class Be extends Ge{domAtPos(t){let{topView:e,text:i}=this.widget;return e?ze(t,0,e,i,((t,e)=>t.domAtPos(e)),(t=>new ye(i,Math.min(t,i.nodeValue.length)))):new ye(i,Math.min(t,i.nodeValue.length))}sync(){this.setDOM(this.widget.toDOM())}localPosFromDOM(t,e){let{topView:i,text:n}=this.widget;return i?Ne(t,e,i,n):Math.min(e,this.length)}ignoreMutation(){return!1}get overrideDOMText(){return null}coordsAt(t,e){let{topView:i,text:n}=this.widget;return i?ze(t,e,i,n,((t,e,i)=>t.coordsAt(e,i)),((t,e)=>Ee(n,t,e))):Ee(n,t,e)}destroy(){var t;super.destroy(),null===(t=this.widget.topView)||void 0===t||t.destroy()}get isEditable(){return!0}canReuseDOM(){return!0}}function ze(t,e,i,n,s,r){if(i instanceof We){for(let o=i.dom.firstChild;o;o=o.nextSibling){let i=ve.get(o);if(!i)return r(t,e);let l=se(o,n),a=i.length+(l?n.nodeValue.length:0);if(t<a||t==a&&i.getSide()<=0)return l?ze(t,e,i,n,s,r):s(i,t,e);t-=a}return s(i,i.length,-1)}return i.dom==n?r(t,e):s(i,t,e)}function Ne(t,e,i,n){if(i instanceof We)for(let s of i.children){let i=0,r=se(s.dom,n);if(se(s.dom,t))return i+(r?Ne(t,e,s,n):s.localPosFromDOM(t,e));i+=r?n.nodeValue.length:s.length}else if(i.dom==n)return Math.min(e,n.nodeValue.length);return i.localPosFromDOM(t,e)}class Ie extends ve{constructor(t){super(),this.side=t}get length(){return 0}merge(){return!1}become(t){return t instanceof Ie&&t.side==this.side}split(){return new Ie(this.side)}sync(){if(!this.dom){let t=document.createElement("img");t.className="cm-widgetBuffer",t.setAttribute("aria-hidden","true"),this.setDOM(t)}}getSide(){return this.side}domAtPos(t){return ye.before(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(t){let e=this.dom.getBoundingClientRect(),i=function(t,e){let i=t.parent,n=i?i.children.indexOf(t):-1;for(;i&&n>=0;)if(e<0?n>0:n<i.children.length){let t=i.children[n+e];if(t instanceof je){let i=t.coordsAt(e<0?t.length:0,e);if(i)return i}n+=e}else{if(!(i instanceof We&&i.parent)){let t=i.dom.lastChild;if(t&&"BR"==t.nodeName)return t.getClientRects()[0];break}n=i.parent.children.indexOf(i)+(e<0?0:1),i=i.parent}return}(this,this.side>0?-1:1);return i&&i.top<e.bottom&&i.bottom>e.top?{left:e.left,right:e.right,top:i.top,bottom:i.bottom}:e}get overrideDOMText(){return e.empty}}function Le(t,e){let i=t.dom,{children:n}=t,s=0;for(let t=0;s<n.length;s++){let r=n[s],o=t+r.length;if(!(o==t&&r.getSide()<=0)){if(e>t&&e<o&&r.dom.parentNode==i)return r.domAtPos(e-t);if(e<=t)break;t=o}}for(let t=s;t>0;t--){let e=n[t-1];if(e.dom.parentNode==i)return e.domAtPos(e.length)}for(let t=s;t<n.length;t++){let e=n[t];if(e.dom.parentNode==i)return e.domAtPos(0)}return new ye(i,0)}function Ye(t,e,i){let n,{children:s}=t;i>0&&e instanceof We&&s.length&&(n=s[s.length-1])instanceof We&&n.mark.eq(e.mark)?Ye(n,e.children[0],i-1):(s.push(e),e.setParent(t)),t.length+=e.length}function Fe(t,e,i){let n=null,s=-1,r=null,o=-1;!function t(e,i){for(let l=0,a=0;l<e.children.length&&a<=i;l++){let h=e.children[l],c=a+h.length;c>=i&&(h.children.length?t(h,i-a):!r&&(c>i||a==c&&h.getSide()>0)?(r=h,o=i-a):(a<i||a==c&&h.getSide()<0)&&(n=h,s=i-a)),a=c}}(t,e);let l=(i<0?n:r)||n||r;return l?l.coordsAt(Math.max(0,l==n?s:o),i):function(t){let e=t.dom.lastChild;if(!e)return t.dom.getBoundingClientRect();let i=oe(e);return i[i.length-1]||null}(t)}function He(t,e){for(let i in t)"class"==i&&e.class?e.class+=" "+t.class:"style"==i&&e.style?e.style+=";"+t.style:e[i]=t[i];return e}function Je(t,e){if(t==e)return!0;if(!t||!e)return!1;let i=Object.keys(t),n=Object.keys(e);if(i.length!=n.length)return!1;for(let s of i)if(-1==n.indexOf(s)||t[s]!==e[s])return!1;return!0}function Ke(t,e,i){let n=null;if(e)for(let s in e)i&&s in i||t.removeAttribute(n=s);if(i)for(let s in i)e&&e[s]==i[s]||t.setAttribute(n=s,i[s]);return!!n}je.prototype.children=Ge.prototype.children=Ie.prototype.children=we;class ti{eq(t){return!1}updateDOM(t){return!1}compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}get estimatedHeight(){return-1}ignoreEvent(t){return!0}get customView(){return null}destroy(t){}}var ei=function(t){return t[t.Text=0]="Text",t[t.WidgetBefore=1]="WidgetBefore",t[t.WidgetAfter=2]="WidgetAfter",t[t.WidgetRange=3]="WidgetRange",t}(ei||(ei={}));class ii extends kt{constructor(t,e,i,n){super(),this.startSide=t,this.endSide=e,this.widget=i,this.spec=n}get heightRelevant(){return!1}static mark(t){return new ni(t)}static widget(t){let e=t.side||0,i=!!t.block;return e+=i?e>0?3e8:-4e8:e>0?1e8:-1e8,new ri(t,e,e,i,t.widget||null,!1)}static replace(t){let e,i,n=!!t.block;if(t.isBlockGap)e=-5e8,i=4e8;else{let{start:s,end:r}=oi(t,n);e=(s?n?-3e8:-1:5e8)-1,i=1+(r?n?2e8:1:-6e8)}return new ri(t,e,i,n,t.widget||null,!0)}static line(t){return new si(t)}static set(t,e=!1){return Ct.of(t,e)}hasHeight(){return!!this.widget&&this.widget.estimatedHeight>-1}}ii.none=Ct.empty;class ni extends ii{constructor(t){let{start:e,end:i}=oi(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.class=t.class||"",this.attrs=t.attributes||null}eq(t){return this==t||t instanceof ni&&this.tagName==t.tagName&&this.class==t.class&&Je(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}}ni.prototype.point=!1;class si extends ii{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof si&&Je(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}}si.prototype.mapMode=w.TrackBefore,si.prototype.point=!0;class ri extends ii{constructor(t,e,i,n,s,r){super(e,i,s,t),this.block=n,this.isReplace=r,this.mapMode=n?e<=0?w.TrackBefore:w.TrackAfter:w.TrackDel}get type(){return this.startSide<this.endSide?ei.WidgetRange:this.startSide<=0?ei.WidgetBefore:ei.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&this.widget.estimatedHeight>=5}eq(t){return t instanceof ri&&(e=this.widget,i=t.widget,e==i||!!(e&&i&&e.compare(i)))&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide;var e,i}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}}function oi(t,e=!1){let{inclusiveStart:i,inclusiveEnd:n}=t;return null==i&&(i=t.inclusive),null==n&&(n=t.inclusive),{start:null!=i?i:e,end:null!=n?n:e}}function li(t,e,i,n=0){let s=i.length-1;s>=0&&i[s]+n>=t?i[s]=Math.max(i[s],e):i.push(t,e)}ri.prototype.point=!0;class ai extends ve{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(t,e,i,n,s,r){if(i){if(!(i instanceof ai))return!1;this.dom||i.transferDOM(this)}return n&&this.setDeco(i?i.attrs:null),Te(this,t,e,i?i.children:[],s,r),!0}split(t){let e=new ai;if(e.breakAfter=this.breakAfter,0==this.length)return e;let{i:i,off:n}=this.childPos(t);n&&(e.append(this.children[i].split(n),0),this.children[i].merge(n,this.children[i].length,null,!1,0,0),i++);for(let t=i;t<this.children.length;t++)e.append(this.children[t],0);for(;i>0&&0==this.children[i-1].length;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=t,e}transferDOM(t){this.dom&&(this.markDirty(),t.setDOM(this.dom),t.prevAttrs=void 0===this.prevAttrs?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(t){Je(this.attrs,t)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=t)}append(t,e){Ye(this,t,e)}addLineDeco(t){let e=t.spec.attributes,i=t.spec.class;e&&(this.attrs=He(e,this.attrs||{})),i&&(this.attrs=He({class:i},this.attrs||{}))}domAtPos(t){return Le(this,t)}reuseDOM(t){"DIV"==t.nodeName&&(this.setDOM(t),this.dirty|=6)}sync(t){var e;this.dom?4&this.dirty&&(Se(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),void 0!==this.prevAttrs&&(Ke(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(t);let i=this.dom.lastChild;for(;i&&ve.get(i)instanceof We;)i=i.lastChild;if(!(i&&this.length&&("BR"==i.nodeName||0!=(null===(e=ve.get(i))||void 0===e?void 0:e.isEditable)||De.ios&&this.children.some((t=>t instanceof je))))){let t=document.createElement("BR");t.cmIgnore=!0,this.dom.appendChild(t)}}measureTextSize(){if(0==this.children.length||this.length>20)return null;let t=0;for(let e of this.children){if(!(e instanceof je)||/[^ -~]/.test(e.text))return null;let i=oe(e.dom);if(1!=i.length)return null;t+=i[0].width}return t?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:t/this.length}:null}coordsAt(t,e){return Fe(this,t,e)}become(t){return!1}get type(){return ei.Text}static find(t,e){for(let i=0,n=0;i<t.children.length;i++){let s=t.children[i],r=n+s.length;if(r>=e){if(s instanceof ai)return s;if(r>e)break}n=r+s.breakAfter}return null}}class hi extends ve{constructor(t,e,i){super(),this.widget=t,this.length=e,this.type=i,this.breakAfter=0,this.prevWidget=null}merge(t,e,i,n,s,r){return!(i&&(!(i instanceof hi&&this.widget.compare(i.widget))||t>0&&s<=0||e<this.length&&r<=0))&&(this.length=t+(i?i.length:0)+(this.length-e),!0)}domAtPos(t){return 0==t?ye.before(this.dom):ye.after(this.dom,t==this.length)}split(t){let e=this.length-t;this.length=t;let i=new hi(this.widget,e,this.type);return i.breakAfter=this.breakAfter,i}get children(){return we}sync(){this.dom&&this.widget.updateDOM(this.dom)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(this.editorView)),this.dom.contentEditable="false")}get overrideDOMText(){return this.parent?this.parent.view.state.doc.slice(this.posAtStart,this.posAtEnd):e.empty}domBoundsAround(){return null}become(t){return t instanceof hi&&t.type==this.type&&t.widget.constructor==this.widget.constructor&&(t.widget.eq(this.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=t.widget,this.length=t.length,this.breakAfter=t.breakAfter,!0)}ignoreMutation(){return!0}ignoreEvent(t){return this.widget.ignoreEvent(t)}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class ci{constructor(t,e,i,n){this.doc=t,this.pos=e,this.end=i,this.disallowBlockEffectsFor=n,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=t.iter(),this.skip=e}posCovered(){if(0==this.content.length)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let t=this.content[this.content.length-1];return!(t.breakAfter||t instanceof hi&&t.type==ei.WidgetBefore)}getLine(){return this.curLine||(this.content.push(this.curLine=new ai),this.atCursorPos=!0),this.curLine}flushBuffer(t){this.pendingBuffer&&(this.curLine.append(ui(new Ie(-1),t),t.length),this.pendingBuffer=0)}addBlockWidget(t){this.flushBuffer([]),this.curLine=null,this.content.push(t)}finish(t){t?this.pendingBuffer=0:this.flushBuffer([]),this.posCovered()||this.getLine()}buildText(t,e,i){for(;t>0;){if(this.textOff==this.text.length){let{value:e,lineBreak:i,done:n}=this.cursor.next(this.skip);if(this.skip=0,n)throw new Error("Ran out of text content when drawing inline views");if(i){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer([]),this.curLine=null,t--;continue}this.text=e,this.textOff=0}let n=Math.min(this.text.length-this.textOff,t,512);this.flushBuffer(e.slice(e.length-i)),this.getLine().append(ui(new je(this.text.slice(this.textOff,this.textOff+n)),e),i),this.atCursorPos=!0,this.textOff+=n,t-=n,i=0}}span(t,e,i,n){this.buildText(e-t,i,n),this.pos=e,this.openStart<0&&(this.openStart=n)}point(t,e,i,n,s,r){if(this.disallowBlockEffectsFor[r]&&i instanceof ri){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(e>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let o=e-t;if(i instanceof ri)if(i.block){let{type:t}=i;t!=ei.WidgetAfter||this.posCovered()||this.getLine(),this.addBlockWidget(new hi(i.widget||new fi("div"),o,t))}else{let r=Ge.create(i.widget||new fi("span"),o,o?0:i.startSide),l=this.atCursorPos&&!r.isEditable&&s<=n.length&&(t<e||i.startSide>0),a=!r.isEditable&&(t<e||i.startSide<=0),h=this.getLine();2!=this.pendingBuffer||l||(this.pendingBuffer=0),this.flushBuffer(n),l&&(h.append(ui(new Ie(1),n),s),s=n.length+Math.max(0,s-n.length)),h.append(ui(r,n),s),this.atCursorPos=a,this.pendingBuffer=a?t<e?1:2:0}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);o&&(this.textOff+o<=this.text.length?this.textOff+=o:(this.skip+=o-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=e),this.openStart<0&&(this.openStart=s)}static build(t,e,i,n,s){let r=new ci(t,e,i,s);return r.openEnd=Ct.spans(n,e,i,r),r.openStart<0&&(r.openStart=r.openEnd),r.finish(r.openEnd),r}}function ui(t,e){for(let i of e)t=new We(i,[t],t.length);return t}class fi extends ti{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}}const Oi=q.define(),di=q.define(),pi=q.define(),mi=q.define(),gi=q.define(),Qi=q.define(),bi=q.define({combine:t=>t.some((t=>t))}),Si=q.define({combine:t=>t.some((t=>t))});class yi{constructor(t,e="nearest",i="nearest",n=5,s=5){this.range=t,this.y=e,this.x=i,this.yMargin=n,this.xMargin=s}map(t){return t.empty?this:new yi(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin)}}const wi=ut.define({map:(t,e)=>t.map(e)});function vi(t,e,i){let n=t.facet(mi);n.length?n[0](e):window.onerror?window.onerror(String(e),i,void 0,void 0,e):i?console.error(i+":",e):console.error(e)}const xi=q.define({combine:t=>!t.length||t[0]});let ki=0;const $i=q.define();class Ti{constructor(t,e,i,n){this.id=t,this.create=e,this.domEventHandlers=i,this.extension=n(this)}static define(t,e){const{eventHandlers:i,provide:n,decorations:s}=e||{};return new Ti(ki++,t,i,(t=>{let e=[$i.of(t)];return s&&e.push(Ai.of((e=>{let i=e.plugin(t);return i?s(i):ii.none}))),n&&e.push(n(t)),e}))}static fromClass(t,e){return Ti.define((e=>new t(e)),e)}}class Pi{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}update(t){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(e){if(vi(t.state,e,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(t){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(t)}catch(e){vi(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(null===(e=this.value)||void 0===e?void 0:e.destroy)try{this.value.destroy()}catch(e){vi(t.state,e,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const Ci=q.define(),Zi=q.define(),Ai=q.define(),Ri=q.define(),Xi=q.define(),Ui=q.define();class qi{constructor(t,e,i,n){this.fromA=t,this.toA=e,this.fromB=i,this.toB=n}join(t){return new qi(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let n=t[e-1];if(!(n.fromA>i.toA)){if(n.toA<i.fromA)break;i=i.join(n),t.splice(e-1,1)}}return t.splice(e,0,i),t}static extendWithRanges(t,e){if(0==e.length)return t;let i=[];for(let n=0,s=0,r=0,o=0;;n++){let l=n==t.length?null:t[n],a=r-o,h=l?l.fromB:1e9;for(;s<e.length&&e[s]<h;){let t=e[s],n=e[s+1],r=Math.max(o,t),l=Math.min(h,n);if(r<=l&&new qi(r+a,l+a,r,l).addToSet(i),n>h)break;s+=2}if(!l)return i;new qi(l.fromA,l.toA,l.fromB,l.toB).addToSet(i),r=l.toA,o=l.toB}}}class Vi{constructor(t,e,i){this.view=t,this.state=e,this.transactions=i,this.flags=0,this.startState=t.state,this.changes=x.empty(this.startState.doc.length);for(let t of i)this.changes=this.changes.compose(t.changes);let n=[];this.changes.iterChangedRanges(((t,e,i,s)=>n.push(new qi(t,e,i,s)))),this.changedRanges=n;let s=t.hasFocus;s!=t.inputState.notifiedFocused&&(t.inputState.notifiedFocused=s,this.flags|=1)}static create(t,e,i){return new Vi(t,e,i)}get viewportChanged(){return(4&this.flags)>0}get heightChanged(){return(2&this.flags)>0}get geometryChanged(){return this.docChanged||(10&this.flags)>0}get focusChanged(){return(1&this.flags)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some((t=>t.selection))}get empty(){return 0==this.flags&&0==this.transactions.length}}var _i=function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t}(_i||(_i={}));const Mi=_i.LTR,Di=_i.RTL;function ji(t){let e=[];for(let i=0;i<t.length;i++)e.push(1<<+t[i]);return e}const Wi=ji("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),Ei=ji("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),Gi=Object.create(null),Bi=[];for(let t of["()","[]","{}"]){let e=t.charCodeAt(0),i=t.charCodeAt(1);Gi[e]=i,Gi[i]=-e}const zi=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/;class Ni{constructor(t,e,i){this.from=t,this.to=e,this.level=i}get dir(){return this.level%2?Di:Mi}side(t,e){return this.dir==e==t?this.to:this.from}static find(t,e,i,n){let s=-1;for(let r=0;r<t.length;r++){let o=t[r];if(o.from<=e&&o.to>=e){if(o.level==i)return r;(s<0||(0!=n?n<0?o.from<e:o.to>e:t[s].level>o.level))&&(s=r)}}if(s<0)throw new RangeError("Index out of range");return s}}const Ii=[];function Li(t){return[new Ni(0,t,0)]}let Yi="";function Fi(t,e,i,n,s){var r;let o=n.head-t.from,l=-1;if(0==o){if(!s||!t.length)return null;e[0].level!=i&&(o=e[0].side(!1,i),l=0)}else if(o==t.length){if(s)return null;let t=e[e.length-1];t.level!=i&&(o=t.side(!0,i),l=e.length-1)}l<0&&(l=Ni.find(e,o,null!==(r=n.bidiLevel)&&void 0!==r?r:-1,n.assoc));let a=e[l];o==a.side(s,i)&&(a=e[l+=s?1:-1],o=a.side(!s,i));let h=s==(a.dir==i),c=O(t.text,o,h);if(Yi=t.text.slice(Math.min(o,c),Math.max(o,c)),c!=a.side(s,i))return R.cursor(c+t.from,h?-1:1,a.level);let u=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return u||a.level==i?u&&u.level<a.level?R.cursor(u.side(!s,i)+t.from,s?1:-1,u.level):R.cursor(c+t.from,s?-1:1,a.level):R.cursor(s?t.to:t.from,s?-1:1,i)}const Hi="￿";class Ji{constructor(t,e){this.points=t,this.text="",this.lineSeparator=e.facet(vt.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=Hi}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let n=t;;){this.findPointBefore(i,n),this.readNode(n);let t=n.nextSibling;if(t==e)break;let s=ve.get(n),r=ve.get(t);(s&&r?s.breakAfter:(s?s.breakAfter:Ki(n))||Ki(t)&&("BR"!=n.nodeName||n.cmIgnore))&&this.lineBreak(),n=t}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,n=this.lineSeparator?null:/\r\n?|\n/g;;){let s,r=-1,o=1;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(s=n.exec(e))&&(r=s.index,o=s[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let e of this.points)e.node==t&&e.pos>this.text.length&&(e.pos-=o-1);i=r+o}}readNode(t){if(t.cmIgnore)return;let e=ve.get(t),i=e&&e.overrideDOMText;if(null!=i){this.findPointInside(t,i.length);for(let t=i.iter();!t.next().done;)t.lineBreak?this.lineBreak():this.append(t.value)}else 3==t.nodeType?this.readTextNode(t):"BR"==t.nodeName?t.nextSibling&&this.lineBreak():1==t.nodeType&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(3==t.nodeType?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+Math.min(e,i.offset))}}function Ki(t){return 1==t.nodeType&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}class tn{constructor(t,e){this.node=t,this.offset=e,this.pos=-1}}class en extends ve{constructor(t){super(),this.view=t,this.compositionDeco=ii.none,this.decorations=[],this.dynamicDecorationMap=[],this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(t.contentDOM),this.children=[new ai],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new qi(0,0,0,t.state.doc.length)],0)}get editorView(){return this.view}get length(){return this.view.state.doc.length}update(t){let e=t.changedRanges;this.minWidth>0&&e.length&&(e.every((({fromA:t,toA:e})=>e<this.minWidthFrom||t>this.minWidthTo))?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.view.inputState.composing<0?this.compositionDeco=ii.none:(t.transactions.length||this.dirty)&&(this.compositionDeco=function(t,e){let i=sn(t);if(!i)return ii.none;let{from:n,to:s,node:r,text:o}=i,l=e.mapPos(n,1),a=Math.max(l,e.mapPos(s,-1)),{state:h}=t,c=3==r.nodeType?r.nodeValue:new Ji([],h).readRange(r.firstChild,null).text;if(a-l<c.length)if(h.doc.sliceString(l,Math.min(h.doc.length,l+c.length),Hi)==c)a=l+c.length;else{if(h.doc.sliceString(Math.max(0,a-c.length),a,Hi)!=c)return ii.none;l=a-c.length}else if(h.doc.sliceString(l,a,Hi)!=c)return ii.none;let u=ve.get(r);u instanceof Be?u=u.widget.topView:u&&(u.parent=null);return ii.set(ii.replace({widget:new rn(r,o,u),inclusive:!0}).range(l,a))}(this.view,t.changes)),(De.ie||De.chrome)&&!this.compositionDeco.size&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let i=function(t,e,i){let n=new ln;return Ct.compare(t,e,i,n),n.changes}(this.decorations,this.updateDeco(),t.changes);return e=qi.extendWithRanges(e,i),(0!=this.dirty||0!=e.length)&&(this.updateInner(e,t.startState.doc.length),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0,this.updateChildren(t,e);let{observer:i}=this.view;i.ignore((()=>{this.dom.style.height=this.view.viewState.contentHeight+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let t=De.chrome||De.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.sync(t),this.dirty=0,t&&(t.written||i.selectionRange.focusNode!=t.node)&&(this.forceSelection=!0),this.dom.style.height=""}));let n=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let t of this.children)t instanceof hi&&t.widget instanceof nn&&n.push(t.dom);i.updateGaps(n)}updateChildren(t,e){let i=this.childCursor(e);for(let e=t.length-1;;e--){let n=e>=0?t[e]:null;if(!n)break;let{fromA:s,toA:r,fromB:o,toB:l}=n,{content:a,breakAtStart:h,openStart:c,openEnd:u}=ci.build(this.view.state.doc,o,l,this.decorations,this.dynamicDecorationMap),{i:f,off:O}=i.findPos(r,1),{i:d,off:p}=i.findPos(s,-1);$e(this,d,p,f,O,a,h,c,u)}}updateSelection(t=!1,e=!1){if(!t&&this.view.observer.selectionRange.focusNode||this.view.observer.readSelectionRange(),!e&&!this.mayControlSelection())return;let i=this.forceSelection;this.forceSelection=!1;let n=this.view.state.selection.main,s=this.domAtPos(n.anchor),r=n.empty?s:this.domAtPos(n.head);if(De.gecko&&n.empty&&(1==(o=s).node.nodeType&&o.node.firstChild&&(0==o.offset||"false"==o.node.childNodes[o.offset-1].contentEditable)&&(o.offset==o.node.childNodes.length||"false"==o.node.childNodes[o.offset].contentEditable))){let t=document.createTextNode("");this.view.observer.ignore((()=>s.node.insertBefore(t,s.node.childNodes[s.offset]||null))),s=r=new ye(t,0),i=!0}var o;let l=this.view.observer.selectionRange;!i&&l.focusNode&&le(s.node,s.offset,l.anchorNode,l.anchorOffset)&&le(r.node,r.offset,l.focusNode,l.focusOffset)||(this.view.observer.ignore((()=>{De.android&&De.chrome&&this.dom.contains(l.focusNode)&&function(t,e){for(let i=t;i&&i!=e;i=i.assignedSlot||i.parentNode)if(1==i.nodeType&&"false"==i.contentEditable)return!0;return!1}(l.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let t=ne(this.view.root);if(t)if(n.empty){if(De.gecko){let t=(e=s.node,i=s.offset,1!=e.nodeType?0:(i&&"false"==e.childNodes[i-1].contentEditable?1:0)|(i<e.childNodes.length&&"false"==e.childNodes[i].contentEditable?2:0));if(t&&3!=t){let e=on(s.node,s.offset,1==t?1:-1);e&&(s=new ye(e,1==t?0:e.nodeValue.length))}}t.collapse(s.node,s.offset),null!=n.bidiLevel&&null!=l.cursorBidiLevel&&(l.cursorBidiLevel=n.bidiLevel)}else if(t.extend){t.collapse(s.node,s.offset);try{t.extend(r.node,r.offset)}catch(t){}}else{let e=document.createRange();n.anchor>n.head&&([s,r]=[r,s]),e.setEnd(r.node,r.offset),e.setStart(s.node,s.offset),t.removeAllRanges(),t.addRange(e)}else;var e,i})),this.view.observer.setSelectionRange(s,r)),this.impreciseAnchor=s.precise?null:new ye(l.anchorNode,l.anchorOffset),this.impreciseHead=r.precise?null:new ye(l.focusNode,l.focusOffset)}enforceCursorAssoc(){if(this.compositionDeco.size)return;let{view:t}=this,e=t.state.selection.main,i=ne(t.root),{anchorNode:n,anchorOffset:s}=t.observer.selectionRange;if(!(i&&e.empty&&e.assoc&&i.modify))return;let r=ai.find(this,e.head);if(!r)return;let o=r.posAtStart;if(e.head==o||e.head==o+r.length)return;let l=this.coordsAt(e.head,-1),a=this.coordsAt(e.head,1);if(!l||!a||l.bottom>a.top)return;let h=this.domAtPos(e.head+e.assoc);i.collapse(h.node,h.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(n,s)}mayControlSelection(){let t=this.view.root.activeElement;return t==this.dom||re(this.dom,this.view.observer.selectionRange)&&!(t&&this.dom.contains(t))}nearest(t){for(let e=t;e;){let t=ve.get(e);if(t&&t.rootView==this)return t;e=e.parentNode}return null}posFromDOM(t,e){let i=this.nearest(t);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(t,e)+i.posAtStart}domAtPos(t){let{i:e,off:i}=this.childCursor().findPos(t,-1);for(;e<this.children.length-1;){let t=this.children[e];if(i<t.length||t instanceof ai)break;e++,i=0}return this.children[e].domAtPos(i)}coordsAt(t,e){for(let i=this.length,n=this.children.length-1;;n--){let s=this.children[n],r=i-s.breakAfter-s.length;if(t>r||t==r&&s.type!=ei.WidgetBefore&&s.type!=ei.WidgetAfter&&(!n||2==e||this.children[n-1].breakAfter||this.children[n-1].type==ei.WidgetBefore&&e>-2))return s.coordsAt(t-r,e);i=r}}measureVisibleLineHeights(t){let e=[],{from:i,to:n}=t,s=this.view.contentDOM.clientWidth,r=s>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,o=-1,l=this.view.textDirection==_i.LTR;for(let t=0,a=0;a<this.children.length;a++){let h=this.children[a],c=t+h.length;if(c>n)break;if(t>=i){let i=h.dom.getBoundingClientRect();if(e.push(i.height),r){let e=h.dom.lastChild,n=e?oe(e):[];if(n.length){let e=n[n.length-1],r=l?e.right-i.left:i.right-e.left;r>o&&(o=r,this.minWidth=s,this.minWidthFrom=t,this.minWidthTo=c)}}}t=c+h.breakAfter}return e}textDirectionAt(t){let{i:e}=this.childPos(t,1);return"rtl"==getComputedStyle(this.children[e].dom).direction?_i.RTL:_i.LTR}measureTextSize(){for(let t of this.children)if(t instanceof ai){let e=t.measureTextSize();if(e)return e}let t,e,i=document.createElement("div");return i.className="cm-line",i.style.width="99999px",i.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore((()=>{this.dom.appendChild(i);let n=oe(i.firstChild)[0];t=i.getBoundingClientRect().height,e=n?n.width/27:7,i.remove()})),{lineHeight:t,charWidth:e}}childCursor(t=this.length){let e=this.children.length;return e&&(t-=this.children[--e].length),new ke(this.children,t,e)}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,n=0;;n++){let s=n==e.viewports.length?null:e.viewports[n],r=s?s.from-1:this.length;if(r>i){let n=e.lineBlockAt(r).bottom-e.lineBlockAt(i).top;t.push(ii.replace({widget:new nn(n),block:!0,inclusive:!0,isBlockGap:!0}).range(i,r))}if(!s)break;i=s.to+1}return ii.set(t)}updateDeco(){let t=this.view.state.facet(Ai).map(((t,e)=>(this.dynamicDecorationMap[e]="function"==typeof t)?t(this.view):t));for(let e=t.length;e<t.length+3;e++)this.dynamicDecorationMap[e]=!1;return this.decorations=[...t,this.compositionDeco,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco]}scrollIntoView(t){let e,{range:i}=t,n=this.coordsAt(i.head,i.empty?i.assoc:i.head>i.anchor?-1:1);if(!n)return;!i.empty&&(e=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(n={left:Math.min(n.left,e.left),top:Math.min(n.top,e.top),right:Math.max(n.right,e.right),bottom:Math.max(n.bottom,e.bottom)});let s=0,r=0,o=0,l=0;for(let t of this.view.state.facet(Xi).map((t=>t(this.view))))if(t){let{left:e,right:i,top:n,bottom:a}=t;null!=e&&(s=Math.max(s,e)),null!=i&&(r=Math.max(r,i)),null!=n&&(o=Math.max(o,n)),null!=a&&(l=Math.max(l,a))}let a={left:n.left-s,top:n.top-o,right:n.right+r,bottom:n.bottom+l};!function(t,e,i,n,s,r,o,l){let a=t.ownerDocument,h=a.defaultView||window;for(let c=t;c;)if(1==c.nodeType){let t,u=c==a.body;if(u)t=Oe(h);else{if(c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let e=c.getBoundingClientRect();t={left:e.left,right:e.left+c.clientWidth,top:e.top,bottom:e.top+c.clientHeight}}let f=0,O=0;if("nearest"==s)e.top<t.top?(O=-(t.top-e.top+o),i>0&&e.bottom>t.bottom+O&&(O=e.bottom-t.bottom+O+o)):e.bottom>t.bottom&&(O=e.bottom-t.bottom+o,i<0&&e.top-O<t.top&&(O=-(t.top+O-e.top+o)));else{let n=e.bottom-e.top,r=t.bottom-t.top;O=("center"==s&&n<=r?e.top+n/2-r/2:"start"==s||"center"==s&&i<0?e.top-o:e.bottom-r+o)-t.top}if("nearest"==n?e.left<t.left?(f=-(t.left-e.left+r),i>0&&e.right>t.right+f&&(f=e.right-t.right+f+r)):e.right>t.right&&(f=e.right-t.right+r,i<0&&e.left<t.left+f&&(f=-(t.left+f-e.left+r))):f=("center"==n?e.left+(e.right-e.left)/2-(t.right-t.left)/2:"start"==n==l?e.left-r:e.right-(t.right-t.left)+r)-t.left,f||O)if(u)h.scrollBy(f,O);else{let t=0,i=0;if(O){let t=c.scrollTop;c.scrollTop+=O,i=c.scrollTop-t}if(f){let e=c.scrollLeft;c.scrollLeft+=f,t=c.scrollLeft-e}e={left:e.left-t,top:e.top-i,right:e.right-t,bottom:e.bottom-i},t&&Math.abs(t-f)<1&&(n="nearest"),i&&Math.abs(i-O)<1&&(s="nearest")}if(u)break;c=c.assignedSlot||c.parentNode}else{if(11!=c.nodeType)break;c=c.host}}(this.view.scrollDOM,a,i.head<i.anchor?-1:1,t.x,t.y,t.xMargin,t.yMargin,this.view.textDirection==_i.LTR)}}class nn extends ti{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get estimatedHeight(){return this.height}}function sn(t){let e=t.observer.selectionRange,i=e.focusNode&&on(e.focusNode,e.focusOffset,0);if(!i)return null;let n=t.docView.nearest(i);if(!n)return null;if(n instanceof ai){let t=i;for(;t.parentNode!=n.dom;)t=t.parentNode;let e=t.previousSibling;for(;e&&!ve.get(e);)e=e.previousSibling;let s=e?ve.get(e).posAtEnd:n.posAtStart;return{from:s,to:s,node:t,text:i}}{for(;;){let{parent:t}=n;if(!t)return null;if(t instanceof ai)break;n=t}let t=n.posAtStart;return{from:t,to:t+n.length,node:n.dom,text:i}}}class rn extends ti{constructor(t,e,i){super(),this.top=t,this.text=e,this.topView=i}eq(t){return this.top==t.top&&this.text==t.text}toDOM(){return this.top}ignoreEvent(){return!1}get customView(){return Be}}function on(t,e,i){for(;;){if(3==t.nodeType)return t;if(1==t.nodeType&&e>0&&i<=0)e=ce(t=t.childNodes[e-1]);else{if(!(1==t.nodeType&&e<t.childNodes.length&&i>=0))return null;t=t.childNodes[e],e=0}}}class ln{constructor(){this.changes=[]}compareRange(t,e){li(t,e,this.changes)}comparePoint(t,e){li(t,e,this.changes)}}function an(t,e){return e.left>t?e.left-t:Math.max(0,t-e.right)}function hn(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function cn(t,e){return t.top<e.bottom-1&&t.bottom>e.top+1}function un(t,e){return e<t.top?{top:e,left:t.left,right:t.right,bottom:t.bottom}:t}function fn(t,e){return e>t.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function On(t,e,i){let n,s,r,o,l,a,h,c,u=!1;for(let f=t.firstChild;f;f=f.nextSibling){let t=oe(f);for(let O=0;O<t.length;O++){let d=t[O];s&&cn(s,d)&&(d=un(fn(d,s.bottom),s.top));let p=an(e,d),m=hn(i,d);if(0==p&&0==m)return 3==f.nodeType?dn(f,e,i):On(f,e,i);(!n||o>m||o==m&&r>p)&&(n=f,s=d,r=p,o=m,u=!p||(p>0?O<t.length-1:O>0)),0==p?i>d.bottom&&(!h||h.bottom<d.bottom)?(l=f,h=d):i<d.top&&(!c||c.top>d.top)&&(a=f,c=d):h&&cn(h,d)?h=fn(h,d.bottom):c&&cn(c,d)&&(c=un(c,d.top))}}if(h&&h.bottom>=i?(n=l,s=h):c&&c.top<=i&&(n=a,s=c),!n)return{node:t,offset:0};let f=Math.max(s.left,Math.min(s.right,e));return 3==n.nodeType?dn(n,f,i):u&&"false"!=n.contentEditable?On(n,f,i):{node:t,offset:Array.prototype.indexOf.call(t.childNodes,n)+(e>=(s.left+s.right)/2?1:0)}}function dn(t,e,i){let n=t.nodeValue.length,s=-1,r=1e9,o=0;for(let l=0;l<n;l++){let n=Qe(t,l,l+1).getClientRects();for(let a=0;a<n.length;a++){let h=n[a];if(h.top==h.bottom)continue;o||(o=e-h.left);let c=(h.top>i?h.top-i:i-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&c<r){let i=e>=(h.left+h.right)/2,n=i;if(De.chrome||De.gecko){Qe(t,l).getBoundingClientRect().left==h.right&&(n=!i)}if(c<=0)return{node:t,offset:l+(n?1:0)};s=l+(n?1:0),r=c}}}return{node:t,offset:s>-1?s:o>0?t.nodeValue.length:0}}function pn(t,{x:e,y:i},n,s=-1){var r;let o,l=t.contentDOM.getBoundingClientRect(),a=l.top+t.viewState.paddingTop,{docHeight:h}=t.viewState,c=i-a;if(c<0)return 0;if(c>h)return t.state.doc.length;for(let e=t.defaultLineHeight/2,i=!1;o=t.elementAtHeight(c),o.type!=ei.Text;)for(;c=s>0?o.bottom+e:o.top-e,!(c>=0&&c<=h);){if(i)return n?null:0;i=!0,s=-s}i=a+c;let u=o.from;if(u<t.viewport.from)return 0==t.viewport.from?0:n?null:mn(t,l,o,e,i);if(u>t.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:n?null:mn(t,l,o,e,i);let f=t.dom.ownerDocument,O=t.root.elementFromPoint?t.root:f,d=O.elementFromPoint(e,i);d&&!t.contentDOM.contains(d)&&(d=null),d||(e=Math.max(l.left+1,Math.min(l.right-1,e)),d=O.elementFromPoint(e,i),d&&!t.contentDOM.contains(d)&&(d=null));let p,m=-1;if(d&&0!=(null===(r=t.docView.nearest(d))||void 0===r?void 0:r.isEditable))if(f.caretPositionFromPoint){let t=f.caretPositionFromPoint(e,i);t&&({offsetNode:p,offset:m}=t)}else if(f.caretRangeFromPoint){let n=f.caretRangeFromPoint(e,i);n&&(({startContainer:p,startOffset:m}=n),(!t.contentDOM.contains(p)||De.safari&&function(t,e,i){let n;if(3!=t.nodeType||e!=(n=t.nodeValue.length))return!1;for(let e=t.nextSibling;e;e=e.nextSibling)if(1!=e.nodeType||"BR"!=e.nodeName)return!1;return Qe(t,n-1,n).getBoundingClientRect().left>i}(p,m,e)||De.chrome&&function(t,e,i){if(0!=e)return!1;for(let e=t;;){let t=e.parentNode;if(!t||1!=t.nodeType||t.firstChild!=e)return!1;if(t.classList.contains("cm-line"))break;e=t}let n=1==t.nodeType?t.getBoundingClientRect():Qe(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return i-n.left>5}(p,m,e))&&(p=void 0))}if(!p||!t.docView.dom.contains(p)){let n=ai.find(t.docView,u);if(!n)return c>o.top+o.height/2?o.to:o.from;({node:p,offset:m}=On(n.dom,e,i))}return t.docView.posFromDOM(p,m)}function mn(t,e,i,n,s){let r=Math.round((n-e.left)*t.defaultCharacterWidth);if(t.lineWrapping&&i.height>1.5*t.defaultLineHeight){r+=Math.floor((s-i.top)/t.defaultLineHeight)*t.viewState.heightOracle.lineLength}let o=t.state.sliceDoc(i.from,i.to);return i.from+Et(o,r,t.state.tabSize)}function gn(t,e,i,n){let s=t.state.doc.lineAt(e.head),r=t.bidiSpans(s),o=t.textDirectionAt(s.from);for(let l=e,a=null;;){let e=Fi(s,r,o,l,i),h=Yi;if(!e){if(s.number==(i?t.state.doc.lines:1))return l;h="\n",s=t.state.doc.line(s.number+(i?1:-1)),r=t.bidiSpans(s),e=R.cursor(i?s.from:s.to)}if(a){if(!a(h))return l}else{if(!n)return e;a=n(h)}l=e}}function Qn(t,e,i){let n=t.state.facet(Ri).map((e=>e(t)));for(;;){let t=!1;for(let s of n)s.between(i.from-1,i.from+1,((n,s,r)=>{i.from>n&&i.from<s&&(i=e.head>i.from?R.cursor(n,1):R.cursor(s,-1),t=!0)}));if(!t)return i}}class bn{constructor(t){this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.chromeScrollHack=-1,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.registeredEvents=[],this.customHandlers=[],this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.mouseSelection=null;for(let e in kn){let i=kn[e];t.contentDOM.addEventListener(e,(n=>{xn(t,n)&&!this.ignoreDuringComposition(n)&&("keydown"==e&&this.keydown(t,n)||(this.mustFlushObserver(n)&&t.observer.forceFlush(),this.runCustomHandlers(e,t,n)?n.preventDefault():i(t,n)))}),$n[e]),this.registeredEvents.push(e)}De.chrome&&102==De.chrome_version&&t.scrollDOM.addEventListener("wheel",(()=>{this.chromeScrollHack<0?t.contentDOM.style.pointerEvents="none":window.clearTimeout(this.chromeScrollHack),this.chromeScrollHack=setTimeout((()=>{this.chromeScrollHack=-1,t.contentDOM.style.pointerEvents=""}),100)}),{passive:!0}),this.notifiedFocused=t.hasFocus,De.safari&&t.contentDOM.addEventListener("input",(()=>null))}setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}ensureHandlers(t,e){var i;let n;this.customHandlers=[];for(let s of e)if(n=null===(i=s.update(t).spec)||void 0===i?void 0:i.domEventHandlers){this.customHandlers.push({plugin:s.value,handlers:n});for(let e in n)this.registeredEvents.indexOf(e)<0&&"scroll"!=e&&(this.registeredEvents.push(e),t.contentDOM.addEventListener(e,(i=>{xn(t,i)&&this.runCustomHandlers(e,t,i)&&i.preventDefault()})))}}runCustomHandlers(t,e,i){for(let n of this.customHandlers){let s=n.handlers[t];if(s)try{if(s.call(n.plugin,i,e)||i.defaultPrevented)return!0}catch(t){vi(e.state,t)}}return!1}runScrollHandlers(t,e){this.lastScrollTop=t.scrollDOM.scrollTop,this.lastScrollLeft=t.scrollDOM.scrollLeft;for(let i of this.customHandlers){let n=i.handlers.scroll;if(n)try{n.call(i.plugin,e,t)}catch(e){vi(t.state,e)}}}keydown(t,e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),9==e.keyCode&&Date.now()<this.lastEscPress+2e3)return!0;if(De.android&&De.chrome&&!e.synthetic&&(13==e.keyCode||8==e.keyCode))return t.observer.delayAndroidKey(e.key,e.keyCode),!0;let i;return!(!De.ios||e.synthetic||e.altKey||e.metaKey||!((i=Sn.find((t=>t.keyCode==e.keyCode)))&&!e.ctrlKey||yn.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey))&&(this.pendingIOSKey=i||e,setTimeout((()=>this.flushIOSKey(t)),250),!0)}flushIOSKey(t){let e=this.pendingIOSKey;return!!e&&(this.pendingIOSKey=void 0,be(t.contentDOM,e.key,e.keyCode))}ignoreDuringComposition(t){return!!/^key/.test(t.type)&&(this.composing>0||!!(De.safari&&!De.ios&&Date.now()-this.compositionEndedAt<100)&&(this.compositionEndedAt=0,!0))}mustFlushObserver(t){return"keydown"==t.type&&229!=t.keyCode}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.mouseSelection&&this.mouseSelection.update(t),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const Sn=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],yn="dthko",wn=[16,17,18,20,91,92,224,225];class vn{constructor(t,e,i,n){this.view=t,this.style=i,this.mustSelect=n,this.lastEvent=e;let s=t.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(vt.allowMultipleSelections)&&function(t,e){let i=t.state.facet(Oi);return i.length?i[0](e):De.mac?e.metaKey:e.ctrlKey}(t,e),this.dragMove=function(t,e){let i=t.state.facet(di);return i.length?i[0](e):De.mac?!e.altKey:!e.ctrlKey}(t,e),this.dragging=!(!function(t,e){let{main:i}=t.state.selection;if(i.empty)return!1;let n=ne(t.root);if(!n||0==n.rangeCount)return!0;let s=n.getRangeAt(0).getClientRects();for(let t=0;t<s.length;t++){let i=s[t];if(i.left<=e.clientX&&i.right>=e.clientX&&i.top<=e.clientY&&i.bottom>=e.clientY)return!0}return!1}(t,e)||1!=Mn(e))&&null,!1===this.dragging&&(e.preventDefault(),this.select(e))}move(t){if(0==t.buttons)return this.destroy();!1===this.dragging&&this.select(this.lastEvent=t)}up(t){null==this.dragging&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}select(t){let e=this.style.get(t,this.extend,this.multiple);!this.mustSelect&&e.eq(this.view.state.selection)&&e.main.assoc==this.view.state.selection.main.assoc||this.view.dispatch({selection:e,userEvent:"select.pointer",scrollIntoView:!0}),this.mustSelect=!1}update(t){t.docChanged&&this.dragging&&(this.dragging=this.dragging.map(t.changes)),this.style.update(t)&&setTimeout((()=>this.select(this.lastEvent)),20)}}function xn(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let i,n=e.target;n!=t.contentDOM;n=n.parentNode)if(!n||11==n.nodeType||(i=ve.get(n))&&i.ignoreEvent(e))return!1;return!0}const kn=Object.create(null),$n=Object.create(null),Tn=De.ie&&De.ie_version<15||De.ios&&De.webkit_version<604;function Pn(t,e){let i,{state:n}=t,s=1,r=n.toText(e),o=r.lines==n.selection.ranges.length;if(null!=jn&&n.selection.ranges.every((t=>t.empty))&&jn==r.toString()){let t=-1;i=n.changeByRange((i=>{let l=n.doc.lineAt(i.from);if(l.from==t)return{range:i};t=l.from;let a=n.toText((o?r.line(s++).text:e)+n.lineBreak);return{changes:{from:l.from,insert:a},range:R.cursor(i.from+a.length)}}))}else i=o?n.changeByRange((t=>{let e=r.line(s++);return{changes:{from:t.from,to:t.to,insert:e.text},range:R.cursor(t.from+e.length)}})):n.replaceSelection(r);t.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}function Cn(t,e,i,n){if(1==n)return R.cursor(e,i);if(2==n)return function(t,e,i=1){let n=t.charCategorizer(e),s=t.doc.lineAt(e),r=e-s.from;if(0==s.length)return R.cursor(e);0==r?i=1:r==s.length&&(i=-1);let o=r,l=r;i<0?o=O(s.text,r,!1):l=O(s.text,r);let a=n(s.text.slice(o,l));for(;o>0;){let t=O(s.text,o,!1);if(n(s.text.slice(t,o))!=a)break;o=t}for(;l<s.length;){let t=O(s.text,l);if(n(s.text.slice(l,t))!=a)break;l=t}return R.range(o+s.from,l+s.from)}(t.state,e,i);{let i=ai.find(t.docView,e),n=t.state.doc.lineAt(i?i.posAtEnd:e),s=i?i.posAtStart:n.from,r=i?i.posAtEnd:n.to;return r<t.state.doc.length&&r==n.to&&r++,R.range(s,r)}}kn.keydown=(t,e)=>{t.inputState.setSelectionOrigin("select"),27==e.keyCode?t.inputState.lastEscPress=Date.now():wn.indexOf(e.keyCode)<0&&(t.inputState.lastEscPress=0)},kn.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")},kn.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")},$n.touchstart=$n.touchmove={passive:!0},kn.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return;let i=null;for(let n of t.state.facet(pi))if(i=n(t,e),i)break;if(i||0!=e.button||(i=function(t,e){let i=Xn(t,e),n=Mn(e),s=t.state.selection,r=i,o=e;return{update(t){t.docChanged&&(i.pos=t.changes.mapPos(i.pos),s=s.map(t.changes),o=null)},get(e,l,a){let h;o&&e.clientX==o.clientX&&e.clientY==o.clientY?h=r:(h=r=Xn(t,e),o=e);let c=Cn(t,h.pos,h.bias,n);if(i.pos!=h.pos&&!l){let e=Cn(t,i.pos,i.bias,n),s=Math.min(e.from,c.from),r=Math.max(e.to,c.to);c=s<c.from?R.range(s,r):R.range(r,s)}return l?s.replaceRange(s.main.extend(c.from,c.to)):a&&s.ranges.length>1&&s.ranges.some((t=>t.eq(c)))?function(t,e){for(let i=0;;i++)if(t.ranges[i].eq(e))return R.create(t.ranges.slice(0,i).concat(t.ranges.slice(i+1)),t.mainIndex==i?0:t.mainIndex-(t.mainIndex>i?1:0))}(s,c):a?s.addRange(c):R.create([c])}}}(t,e)),i){let n=t.root.activeElement!=t.contentDOM;n&&t.observer.ignore((()=>ge(t.contentDOM))),t.inputState.startMouseSelection(new vn(t,e,i,n))}};let Zn=(t,e)=>t>=e.top&&t<=e.bottom,An=(t,e,i)=>Zn(e,i)&&t>=i.left&&t<=i.right;function Rn(t,e,i,n){let s=ai.find(t.docView,e);if(!s)return 1;let r=e-s.posAtStart;if(0==r)return 1;if(r==s.length)return-1;let o=s.coordsAt(r,-1);if(o&&An(i,n,o))return-1;let l=s.coordsAt(r,1);return l&&An(i,n,l)?1:o&&Zn(n,o)?-1:1}function Xn(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:i,bias:Rn(t,i,e.clientX,e.clientY)}}const Un=De.ie&&De.ie_version<=11;let qn=null,Vn=0,_n=0;function Mn(t){if(!Un)return t.detail;let e=qn,i=_n;return qn=t,_n=Date.now(),Vn=!e||i>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(Vn+1)%3:1}function Dn(t,e,i,n){if(!i)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:r}=t.inputState,o=n&&r&&r.dragging&&r.dragMove?{from:r.dragging.from,to:r.dragging.to}:null,l={from:s,insert:i},a=t.state.changes(o?[o,l]:l);t.focus(),t.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"})}kn.dragstart=(t,e)=>{let{selection:{main:i}}=t.state,{mouseSelection:n}=t.inputState;n&&(n.dragging=i),e.dataTransfer&&(e.dataTransfer.setData("Text",t.state.sliceDoc(i.from,i.to)),e.dataTransfer.effectAllowed="copyMove")},kn.drop=(t,e)=>{if(!e.dataTransfer)return;if(t.state.readOnly)return e.preventDefault();let i=e.dataTransfer.files;if(i&&i.length){e.preventDefault();let n=Array(i.length),s=0,r=()=>{++s==i.length&&Dn(t,e,n.filter((t=>null!=t)).join(t.state.lineBreak),!1)};for(let t=0;t<i.length;t++){let e=new FileReader;e.onerror=r,e.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(e.result)||(n[t]=e.result),r()},e.readAsText(i[t])}}else Dn(t,e,e.dataTransfer.getData("Text"),!0)},kn.paste=(t,e)=>{if(t.state.readOnly)return e.preventDefault();t.observer.flush();let i=Tn?null:e.clipboardData;i?(Pn(t,i.getData("text/plain")),e.preventDefault()):function(t){let e=t.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.focus(),setTimeout((()=>{t.focus(),i.remove(),Pn(t,i.value)}),50)}(t)};let jn=null;function Wn(t){setTimeout((()=>{t.hasFocus!=t.inputState.notifiedFocused&&t.update([])}),10)}kn.copy=kn.cut=(t,e)=>{let{text:i,ranges:n,linewise:s}=function(t){let e=[],i=[],n=!1;for(let n of t.selection.ranges)n.empty||(e.push(t.sliceDoc(n.from,n.to)),i.push(n));if(!e.length){let s=-1;for(let{from:n}of t.selection.ranges){let r=t.doc.lineAt(n);r.number>s&&(e.push(r.text),i.push({from:r.from,to:Math.min(t.doc.length,r.to+1)})),s=r.number}n=!0}return{text:e.join(t.lineBreak),ranges:i,linewise:n}}(t.state);if(!i&&!s)return;jn=s?i:null;let r=Tn?null:e.clipboardData;r?(e.preventDefault(),r.clearData(),r.setData("text/plain",i)):function(t,e){let i=t.dom.parentNode;if(!i)return;let n=i.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout((()=>{n.remove(),t.focus()}),50)}(t,i),"cut"!=e.type||t.state.readOnly||t.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"})},kn.focus=t=>{t.inputState.lastFocusTime=Date.now(),t.scrollDOM.scrollTop||!t.inputState.lastScrollTop&&!t.inputState.lastScrollLeft||(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),Wn(t)},kn.blur=t=>{t.observer.clearSelectionRange(),Wn(t)},kn.compositionstart=kn.compositionupdate=t=>{null==t.inputState.compositionFirstChange&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0)},kn.compositionend=t=>{t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionFirstChange=null,De.chrome&&De.android&&t.observer.flushSoon(),setTimeout((()=>{t.inputState.composing<0&&t.docView.compositionDeco.size&&t.update([])}),50)},kn.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()},kn.beforeinput=(t,e)=>{var i;let n;if(De.chrome&&De.android&&(n=Sn.find((t=>t.inputType==e.inputType)))&&(t.observer.delayAndroidKey(n.key,n.keyCode),"Backspace"==n.key||"Delete"==n.key)){let e=(null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0;setTimeout((()=>{var i;((null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0)>e+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())}),100)}};const En=["pre-wrap","normal","pre-line","break-spaces"];class Gn{constructor(t){this.lineWrapping=t,this.doc=e.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.lineLength=30,this.heightChanged=!1}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength)),this.lineHeight*i}heightForLine(t){if(!this.lineWrapping)return this.lineHeight;return(1+Math.max(0,Math.ceil((t-this.lineLength)/(this.lineLength-5))))*this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return En.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i<t.length;i++){let n=t[i];n<0?i++:this.heightSamples[Math.floor(10*n)]||(e=!0,this.heightSamples[Math.floor(10*n)]=!0)}return e}refresh(t,e,i,n,s){let r=En.indexOf(t)>-1,o=Math.round(e)!=Math.round(this.lineHeight)||this.lineWrapping!=r;if(this.lineWrapping=r,this.lineHeight=e,this.charWidth=i,this.lineLength=n,o){this.heightSamples={};for(let t=0;t<s.length;t++){let e=s[t];e<0?t++:this.heightSamples[Math.floor(10*e)]=!0}}return o}}class Bn{constructor(t,e){this.from=t,this.heights=e,this.index=0}get more(){return this.index<this.heights.length}}class zn{constructor(t,e,i,n,s){this.from=t,this.length=e,this.top=i,this.height=n,this.type=s}get to(){return this.from+this.length}get bottom(){return this.top+this.height}join(t){let e=(Array.isArray(this.type)?this.type:[this]).concat(Array.isArray(t.type)?t.type:[t]);return new zn(this.from,this.length+t.length,this.top,this.height+t.height,e)}}var Nn=function(t){return t[t.ByPos=0]="ByPos",t[t.ByHeight=1]="ByHeight",t[t.ByPosNoHeight=2]="ByPosNoHeight",t}(Nn||(Nn={}));const In=.001;class Ln{constructor(t,e,i=2){this.length=t,this.height=e,this.flags=i}get outdated(){return(2&this.flags)>0}set outdated(t){this.flags=(t?2:0)|-3&this.flags}setHeight(t,e){this.height!=e&&(Math.abs(this.height-e)>In&&(t.heightChanged=!0),this.height=e)}replace(t,e,i){return Ln.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,n){let s=this;for(let r=n.length-1;r>=0;r--){let{fromA:o,toA:l,fromB:a,toB:h}=n[r],c=s.lineAt(o,Nn.ByPosNoHeight,e,0,0),u=c.to>=l?c:s.lineAt(l,Nn.ByPosNoHeight,e,0,0);for(h+=u.to-l,l=u.to;r>0&&c.from<=n[r-1].toA;)o=n[r-1].fromA,a=n[r-1].fromB,r--,o<c.from&&(c=s.lineAt(o,Nn.ByPosNoHeight,e,0,0));a+=c.from-o,o=c.from;let f=ts.build(i,t,a,h);s=s.replace(o,l,f)}return s.updateHeight(i,0)}static empty(){return new Fn(0,0)}static of(t){if(1==t.length)return t[0];let e=0,i=t.length,n=0,s=0;for(;;)if(e==i)if(n>2*s){let s=t[e-1];s.break?t.splice(--e,1,s.left,null,s.right):t.splice(--e,1,s.left,s.right),i+=1+s.break,n-=s.size}else{if(!(s>2*n))break;{let e=t[i];e.break?t.splice(i,1,e.left,null,e.right):t.splice(i,1,e.left,e.right),i+=2+e.break,s-=e.size}}else if(n<s){let i=t[e++];i&&(n+=i.size)}else{let e=t[--i];e&&(s+=e.size)}let r=0;return null==t[e-1]?(r=1,e--):null==t[e]&&(r=1,i++),new Jn(Ln.of(t.slice(0,e)),r,Ln.of(t.slice(i)))}}Ln.prototype.size=1;class Yn extends Ln{constructor(t,e,i){super(t,e),this.type=i}blockAt(t,e,i,n){return new zn(n,this.length,i,this.height,this.type)}lineAt(t,e,i,n,s){return this.blockAt(0,i,n,s)}forEachLine(t,e,i,n,s,r){t<=s+this.length&&e>=s&&r(this.blockAt(0,i,n,s))}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more&&this.setHeight(t,n.heights[n.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Fn extends Yn{constructor(t,e){super(t,e,ei.Text),this.collapsed=0,this.widgetHeight=0}replace(t,e,i){let n=i[0];return 1==i.length&&(n instanceof Fn||n instanceof Hn&&4&n.flags)&&Math.abs(this.length-n.length)<10?(n instanceof Hn?n=new Fn(n.length,this.height):n.height=this.height,this.outdated||(n.outdated=!1),n):Ln.of(i)}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more?this.setHeight(t,n.heights[n.index++]):(i||this.outdated)&&this.setHeight(t,Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Hn extends Ln{constructor(t){super(t,0)}lines(t,e){let i=t.lineAt(e).number,n=t.lineAt(e+this.length).number;return{firstLine:i,lastLine:n,lineHeight:this.height/(n-i+1)}}blockAt(t,e,i,n){let{firstLine:s,lastLine:r,lineHeight:o}=this.lines(e,n),l=Math.max(0,Math.min(r-s,Math.floor((t-i)/o))),{from:a,length:h}=e.line(s+l);return new zn(a,h,i+o*l,o,ei.Text)}lineAt(t,e,i,n,s){if(e==Nn.ByHeight)return this.blockAt(t,i,n,s);if(e==Nn.ByPosNoHeight){let{from:e,to:n}=i.lineAt(t);return new zn(e,n-e,0,0,ei.Text)}let{firstLine:r,lineHeight:o}=this.lines(i,s),{from:l,length:a,number:h}=i.lineAt(t);return new zn(l,a,n+o*(h-r),o,ei.Text)}forEachLine(t,e,i,n,s,r){let{firstLine:o,lineHeight:l}=this.lines(i,s);for(let a=Math.max(t,s),h=Math.min(s+this.length,e);a<=h;){let e=i.lineAt(a);a==t&&(n+=l*(e.number-o)),r(new zn(e.from,e.length,n,l,ei.Text)),n+=l,a=e.to+1}}replace(t,e,i){let n=this.length-e;if(n>0){let t=i[i.length-1];t instanceof Hn?i[i.length-1]=new Hn(t.length+n):i.push(null,new Hn(n-1))}if(t>0){let e=i[0];e instanceof Hn?i[0]=new Hn(t+e.length):i.unshift(new Hn(t-1),null)}return Ln.of(i)}decomposeLeft(t,e){e.push(new Hn(t-1),null)}decomposeRight(t,e){e.push(null,new Hn(this.length-t-1))}updateHeight(t,e=0,i=!1,n){let s=e+this.length;if(n&&n.from<=e+this.length&&n.more){let i=[],r=Math.max(e,n.from),o=-1,l=t.heightChanged;for(n.from>e&&i.push(new Hn(n.from-e-1).updateHeight(t,e));r<=s&&n.more;){let e=t.doc.lineAt(r).length;i.length&&i.push(null);let s=n.heights[n.index++];-1==o?o=s:Math.abs(s-o)>=In&&(o=-2);let l=new Fn(e,s);l.outdated=!1,i.push(l),r+=e+1}r<=s&&i.push(null,new Hn(s-r).updateHeight(t,r));let a=Ln.of(i);return t.heightChanged=l||o<0||Math.abs(a.height-this.height)>=In||Math.abs(o-this.lines(t.doc,e).lineHeight)>=In,a}return(i||this.outdated)&&(this.setHeight(t,t.heightForGap(e,e+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}}class Jn extends Ln{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return 1&this.flags}blockAt(t,e,i,n){let s=i+this.left.height;return t<s?this.left.blockAt(t,e,i,n):this.right.blockAt(t,e,s,n+this.left.length+this.break)}lineAt(t,e,i,n,s){let r=n+this.left.height,o=s+this.left.length+this.break,l=e==Nn.ByHeight?t<r:t<o,a=l?this.left.lineAt(t,e,i,n,s):this.right.lineAt(t,e,i,r,o);if(this.break||(l?a.to<o:a.from>o))return a;let h=e==Nn.ByPosNoHeight?Nn.ByPosNoHeight:Nn.ByPos;return l?a.join(this.right.lineAt(o,h,i,r,o)):this.left.lineAt(o,h,i,n,s).join(a)}forEachLine(t,e,i,n,s,r){let o=n+this.left.height,l=s+this.left.length+this.break;if(this.break)t<l&&this.left.forEachLine(t,e,i,n,s,r),e>=l&&this.right.forEachLine(t,e,i,o,l,r);else{let a=this.lineAt(l,Nn.ByPos,i,n,s);t<a.from&&this.left.forEachLine(t,a.from-1,i,n,s,r),a.to>=t&&a.from<=e&&r(a),e>a.to&&this.right.forEachLine(a.to+1,e,i,o,l,r)}}replace(t,e,i){let n=this.left.length+this.break;if(e<n)return this.balanced(this.left.replace(t,e,i),this.right);if(t>this.left.length)return this.balanced(this.left,this.right.replace(t-n,e-n,i));let s=[];t>0&&this.decomposeLeft(t,s);let r=s.length;for(let t of i)s.push(t);if(t>0&&Kn(s,r-1),e<this.length){let t=s.length;this.decomposeRight(e,s),Kn(s,t)}return Ln.of(s)}decomposeLeft(t,e){let i=this.left.length;if(t<=i)return this.left.decomposeLeft(t,e);e.push(this.left),this.break&&(i++,t>=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,n=i+this.break;if(t>=n)return this.right.decomposeRight(t-n,e);t<i&&this.left.decomposeRight(t,e),this.break&&t<n&&e.push(null),e.push(this.right)}balanced(t,e){return t.size>2*e.size||e.size>2*t.size?Ln.of(this.break?[t,null,e]:[t,e]):(this.left=t,this.right=e,this.height=t.height+e.height,this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,n){let{left:s,right:r}=this,o=e+s.length+this.break,l=null;return n&&n.from<=e+s.length&&n.more?l=s=s.updateHeight(t,e,i,n):s.updateHeight(t,e,i),n&&n.from<=o+r.length&&n.more?l=r=r.updateHeight(t,o,i,n):r.updateHeight(t,o,i),l?this.balanced(s,r):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function Kn(t,e){let i,n;null==t[e]&&(i=t[e-1])instanceof Hn&&(n=t[e+1])instanceof Hn&&t.splice(e-1,3,new Hn(i.length+1+n.length))}class ts{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let t=Math.min(e,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof Fn?i.length+=t-this.pos:(t>this.pos||!this.isCovered)&&this.nodes.push(new Fn(t-this.pos,-1)),this.writtenTo=t,e>t&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t<e||i.heightRelevant){let n=i.widget?i.widget.estimatedHeight:0;n<0&&(n=this.oracle.lineHeight);let s=e-t;i.block?this.addBlock(new Yn(s,n,i.type)):(s||n>=5)&&this.addLineDeco(n,s)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTo<t&&((this.writtenTo<t-1||null==this.nodes[this.nodes.length-1])&&this.nodes.push(this.blankContent(this.writtenTo,t-1)),this.nodes.push(null)),this.pos>t&&this.nodes.push(new Fn(this.pos-t,-1)),this.writtenTo=this.pos}blankContent(t,e){let i=new Hn(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof Fn)return t;let e=new Fn(0,-1);return this.nodes.push(e),e}addBlock(t){this.enterLine(),t.type!=ei.WidgetAfter||this.isCovered||this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,t.type!=ei.WidgetBefore&&(this.covering=t)}addLineDeco(t,e){let i=this.ensureLine();i.length+=e,i.collapsed+=e,i.widgetHeight=Math.max(i.widgetHeight,t),this.writtenTo=this.pos=this.pos+e}finish(t){let e=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(this.lineStart>-1)||e instanceof Fn||this.isCovered?(this.writtenTo<this.pos||null==e)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos)):this.nodes.push(new Fn(0,-1));let i=t;for(let t of this.nodes)t instanceof Fn&&t.updateHeight(this.oracle,i),i+=t?t.length:1;return this.nodes}static build(t,e,i,n){let s=new ts(i,t);return Ct.spans(e,i,n,s,0),s.finish(i)}}class es{constructor(){this.changes=[]}compareRange(){}comparePoint(t,e,i,n){(t<e||i&&i.heightRelevant||n&&n.heightRelevant)&&li(t,e,this.changes,5)}}function is(t,e){let i=t.getBoundingClientRect(),n=t.ownerDocument,s=n.defaultView||window,r=Math.max(0,i.left),o=Math.min(s.innerWidth,i.right),l=Math.max(0,i.top),a=Math.min(s.innerHeight,i.bottom);for(let e=t.parentNode;e&&e!=n.body;)if(1==e.nodeType){let i=e,n=window.getComputedStyle(i);if((i.scrollHeight>i.clientHeight||i.scrollWidth>i.clientWidth)&&"visible"!=n.overflow){let n=i.getBoundingClientRect();r=Math.max(r,n.left),o=Math.min(o,n.right),l=Math.max(l,n.top),a=e==t.parentNode?n.bottom:Math.min(a,n.bottom)}e="absolute"==n.position||"fixed"==n.position?i.offsetParent:i.parentNode}else{if(11!=e.nodeType)break;e=e.host}return{left:r-i.left,right:Math.max(r,o)-i.left,top:l-(i.top+e),bottom:Math.max(l,a)-(i.top+e)}}function ns(t,e){let i=t.getBoundingClientRect();return{left:0,right:i.right-i.left,top:e,bottom:i.bottom-(i.top+e)}}class ss{constructor(t,e,i){this.from=t,this.to=e,this.size=i}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;i<t.length;i++){let n=t[i],s=e[i];if(n.from!=s.from||n.to!=s.to||n.size!=s.size)return!1}return!0}draw(t){return ii.replace({widget:new rs(this.size,t)}).range(this.from,this.to)}}class rs extends ti{constructor(t,e){super(),this.size=t,this.vertical=e}eq(t){return t.size==this.size&&t.vertical==this.vertical}toDOM(){let t=document.createElement("div");return this.vertical?t.style.height=this.size+"px":(t.style.width=this.size+"px",t.style.height="2px",t.style.display="inline-block"),t}get estimatedHeight(){return this.vertical?this.size:-1}}class os{constructor(t){this.state=t,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scaler=us,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=_i.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let i=t.facet(Zi).some((t=>"function"!=typeof t&&"cm-lineWrapping"==t.class));this.heightOracle=new Gn(i),this.stateDeco=t.facet(Ai).filter((t=>"function"!=typeof t)),this.heightMap=Ln.empty().applyChanges(this.stateDeco,e.empty,this.heightOracle.setDoc(t.doc),[new qi(0,0,0,t.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=ii.set(this.lineGaps.map((t=>t.draw(!1)))),this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let n=i?e.head:e.anchor;if(!t.some((({from:t,to:e})=>n>=t&&n<=e))){let{from:e,to:i}=this.lineBlockAt(n);t.push(new ls(e,i))}}this.viewports=t.sort(((t,e)=>t.from-e.from)),this.scaler=this.heightMap.height<=7e6?us:new fs(this.heightOracle.doc,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.state.doc,0,0,(t=>{this.viewportLines.push(1==this.scaler.scale?t:Os(t,this.scaler))}))}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=this.state.facet(Ai).filter((t=>"function"!=typeof t));let n=t.changedRanges,s=qi.extendWithRanges(n,function(t,e,i){let n=new es;return Ct.compare(t,e,i,n,0),n.changes}(i,this.stateDeco,t?t.changes:x.empty(this.state.doc.length))),r=this.heightMap.height;this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),s),this.heightMap.height!=r&&(t.flags|=2);let o=s.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.head<o.from||e.range.head>o.to)||!this.viewportIsAppropriate(o))&&(o=this.getViewport(0,e));let l=!t.changes.empty||2&t.flags||o.from!=this.viewport.from||o.to!=this.viewport.to;this.viewport=o,this.updateForViewport(),l&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&t.selectionSet&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Si)&&(this.mustEnforceCursorAssoc=!0)}measure(t){let i=t.contentDOM,n=window.getComputedStyle(i),s=this.heightOracle,r=n.whiteSpace;this.defaultTextDirection="rtl"==n.direction?_i.RTL:_i.LTR;let o=this.heightOracle.mustRefreshForWrapping(r),l=o||this.mustMeasureContent||this.contentDOMHeight!=i.clientHeight;this.contentDOMHeight=i.clientHeight,this.mustMeasureContent=!1;let a=0,h=0,c=parseInt(n.paddingTop)||0,u=parseInt(n.paddingBottom)||0;this.paddingTop==c&&this.paddingBottom==u||(this.paddingTop=c,this.paddingBottom=u,a|=10),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(l=!0),this.editorWidth=t.scrollDOM.clientWidth,a|=8);let f=(this.printing?ns:is)(i,this.paddingTop),O=f.top-this.pixelViewport.top,d=f.bottom-this.pixelViewport.bottom;this.pixelViewport=f;let p=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(p!=this.inView&&(this.inView=p,p&&(l=!0)),!this.inView&&!this.scrollTarget)return 0;let m=i.clientWidth;if(this.contentDOMWidth==m&&this.editorHeight==t.scrollDOM.clientHeight||(this.contentDOMWidth=m,this.editorHeight=t.scrollDOM.clientHeight,a|=8),l){let i=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(i)&&(o=!0),o||s.lineWrapping&&Math.abs(m-this.contentDOMWidth)>s.charWidth){let{lineHeight:e,charWidth:n}=t.docView.measureTextSize();o=e>0&&s.refresh(r,e,n,m/n,i),o&&(t.docView.minWidth=0,a|=8)}O>0&&d>0?h=Math.max(O,d):O<0&&d<0&&(h=Math.min(O,d)),s.heightChanged=!1;for(let n of this.viewports){let r=n.from==this.viewport.from?i:t.docView.measureVisibleLineHeights(n);this.heightMap=(o?Ln.empty().applyChanges(this.stateDeco,e.empty,this.heightOracle,[new qi(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Bn(n.from,r))}s.heightChanged&&(a|=2)}let g=!this.viewportIsAppropriate(this.viewport,h)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return g&&(this.viewport=this.getViewport(h,this.scrollTarget)),this.updateForViewport(),(2&a||g)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),a|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),a}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),n=this.heightMap,s=this.state.doc,{visibleTop:r,visibleBottom:o}=this,l=new ls(n.lineAt(r-1e3*i,Nn.ByHeight,s,0,0).from,n.lineAt(o+1e3*(1-i),Nn.ByHeight,s,0,0).to);if(e){let{head:t}=e.range;if(t<l.from||t>l.to){let i,r=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),o=n.lineAt(t,Nn.ByPos,s,0,0);i="center"==e.y?(o.top+o.bottom)/2-r/2:"start"==e.y||"nearest"==e.y&&t<l.from?o.top:o.bottom-r,l=new ls(n.lineAt(i-500,Nn.ByHeight,s,0,0).from,n.lineAt(i+r+500,Nn.ByHeight,s,0,0).to)}}return l}mapViewport(t,e){let i=e.mapPos(t.from,-1),n=e.mapPos(t.to,1);return new ls(this.heightMap.lineAt(i,Nn.ByPos,this.state.doc,0,0).from,this.heightMap.lineAt(n,Nn.ByPos,this.state.doc,0,0).to)}viewportIsAppropriate({from:t,to:e},i=0){if(!this.inView)return!0;let{top:n}=this.heightMap.lineAt(t,Nn.ByPos,this.state.doc,0,0),{bottom:s}=this.heightMap.lineAt(e,Nn.ByPos,this.state.doc,0,0),{visibleTop:r,visibleBottom:o}=this;return(0==t||n<=r-Math.max(10,Math.min(-i,250)))&&(e==this.state.doc.length||s>=o+Math.max(10,Math.min(i,250)))&&n>r-2e3&&s<o+2e3}mapLineGaps(t,e){if(!t.length||e.empty)return t;let i=[];for(let n of t)e.touchesRange(n.from,n.to)||i.push(new ss(e.mapPos(n.from),e.mapPos(n.to),n.size));return i}ensureLineGaps(t,e){let i=this.heightOracle.lineWrapping,n=i?1e4:2e3,s=n>>1,r=n<<1;if(this.defaultTextDirection!=_i.LTR&&!i)return[];let o=[],l=(n,r,a,h)=>{if(r-n<s)return;let c=this.state.selection.main,u=[c.from];c.empty||u.push(c.to);for(let t of u)if(t>n&&t<r)return l(n,t-10,a,h),void l(t+10,r,a,h);let f=function(t,e){for(let i of t)if(e(i))return i;return}(t,(t=>t.from>=a.from&&t.to<=a.to&&Math.abs(t.from-n)<s&&Math.abs(t.to-r)<s&&!u.some((e=>t.from<e&&t.to>e))));if(!f){if(r<a.to&&e&&i&&e.visibleRanges.some((t=>t.from<=r&&t.to>=r))){let t=e.moveToLineBoundary(R.cursor(r),!1,!0).head;t>n&&(r=t)}f=new ss(n,r,this.gapSize(a,n,r,h))}o.push(f)};for(let t of this.viewportLines){if(t.length<r)continue;let e=as(t.from,t.to,this.stateDeco);if(e.total<r)continue;let s,o,a=this.scrollTarget?this.scrollTarget.range.head:null;if(i){let i,r,l=n/this.heightOracle.lineLength*this.heightOracle.lineHeight;if(null!=a){let n=cs(e,a),s=((this.visibleBottom-this.visibleTop)/2+l)/t.height;i=n-s,r=n+s}else i=(this.visibleTop-t.top-l)/t.height,r=(this.visibleBottom-t.top+l)/t.height;s=hs(e,i),o=hs(e,r)}else{let t,i,r=e.total*this.heightOracle.charWidth,l=n*this.heightOracle.charWidth;if(null!=a){let n=cs(e,a),s=((this.pixelViewport.right-this.pixelViewport.left)/2+l)/r;t=n-s,i=n+s}else t=(this.pixelViewport.left-l)/r,i=(this.pixelViewport.right+l)/r;s=hs(e,t),o=hs(e,i)}s>t.from&&l(t.from,s,t,e),o<t.to&&l(o,t.to,t,e)}return o}gapSize(t,e,i,n){let s=cs(n,i)-cs(n,e);return this.heightOracle.lineWrapping?t.height*s:n.total*this.heightOracle.charWidth*s}updateLineGaps(t){ss.same(t,this.lineGaps)||(this.lineGaps=t,this.lineGapDeco=ii.set(t.map((t=>t.draw(this.heightOracle.lineWrapping)))))}computeVisibleRanges(){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let e=[];Ct.spans(t,this.viewport.from,this.viewport.to,{span(t,i){e.push({from:t,to:i})},point(){}},20);let i=e.length!=this.visibleRanges.length||this.visibleRanges.some(((t,i)=>t.from!=e[i].from||t.to!=e[i].to));return this.visibleRanges=e,i?4:0}lineBlockAt(t){return t>=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find((e=>e.from<=t&&e.to>=t))||Os(this.heightMap.lineAt(t,Nn.ByPos,this.state.doc,0,0),this.scaler)}lineBlockAtHeight(t){return Os(this.heightMap.lineAt(this.scaler.fromDOM(t),Nn.ByHeight,this.state.doc,0,0),this.scaler)}elementAtHeight(t){return Os(this.heightMap.blockAt(this.scaler.fromDOM(t),this.state.doc,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class ls{constructor(t,e){this.from=t,this.to=e}}function as(t,e,i){let n=[],s=t,r=0;return Ct.spans(i,t,e,{span(){},point(t,e){t>s&&(n.push({from:s,to:t}),r+=t-s),s=e}},20),s<e&&(n.push({from:s,to:e}),r+=e-s),{total:r,ranges:n}}function hs({total:t,ranges:e},i){if(i<=0)return e[0].from;if(i>=1)return e[e.length-1].to;let n=Math.floor(t*i);for(let t=0;;t++){let{from:i,to:s}=e[t],r=s-i;if(n<=r)return i+n;n-=r}}function cs(t,e){let i=0;for(let{from:n,to:s}of t.ranges){if(e<=s){i+=e-n;break}i+=s-n}return i/t.total}const us={toDOM:t=>t,fromDOM:t=>t,scale:1};class fs{constructor(t,e,i){let n=0,s=0,r=0;this.viewports=i.map((({from:i,to:s})=>{let r=e.lineAt(i,Nn.ByPos,t,0,0).top,o=e.lineAt(s,Nn.ByPos,t,0,0).bottom;return n+=o-r,{from:i,to:s,top:r,bottom:o,domTop:0,domBottom:0}})),this.scale=(7e6-n)/(e.height-n);for(let t of this.viewports)t.domTop=r+(t.top-s)*this.scale,r=t.domBottom=t.domTop+(t.bottom-t.top),s=t.bottom}toDOM(t){for(let e=0,i=0,n=0;;e++){let s=e<this.viewports.length?this.viewports[e]:null;if(!s||t<s.top)return n+(t-i)*this.scale;if(t<=s.bottom)return s.domTop+(t-s.top);i=s.bottom,n=s.domBottom}}fromDOM(t){for(let e=0,i=0,n=0;;e++){let s=e<this.viewports.length?this.viewports[e]:null;if(!s||t<s.domTop)return i+(t-n)/this.scale;if(t<=s.domBottom)return s.top+(t-s.domTop);i=s.bottom,n=s.domBottom}}}function Os(t,e){if(1==e.scale)return t;let i=e.toDOM(t.top),n=e.toDOM(t.bottom);return new zn(t.from,t.length,i,n-i,Array.isArray(t.type)?t.type.map((t=>Os(t,e))):t.type)}const ds=q.define({combine:t=>t.join(" ")}),ps=q.define({combine:t=>t.indexOf(!0)>-1}),ms=Nt.newName(),gs=Nt.newName(),Qs=Nt.newName(),bs={"&light":"."+gs,"&dark":"."+Qs};function Ss(t,e,i){return new Nt(e,{finish:e=>/&/.test(e)?e.replace(/&\w*/,(e=>{if("&"==e)return t;if(!i||!i[e])throw new RangeError(`Unsupported selector: ${e}`);return i[e]})):t+" "+e})}const ys=Ss("."+ms,{"&.cm-editor":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,minHeight:"100%",display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},"&.cm-focused .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",left:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},bs);class ws{constructor(t,e,i,n){this.typeOver=n,this.bounds=null,this.text="";let{impreciseHead:s,impreciseAnchor:r}=t.docView;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=t.docView.domBoundsAround(e,i,0))){let e=s||r?[]:function(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:i,anchorOffset:n,focusNode:s,focusOffset:r}=t.observer.selectionRange;i&&(e.push(new tn(i,n)),s==i&&r==n||e.push(new tn(s,r)));return e}(t),i=new Ji(e,t.state);i.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=i.text,this.newSel=function(t,e){if(0==t.length)return null;let i=t[0].pos,n=2==t.length?t[1].pos:i;return i>-1&&n>-1?R.single(i+e,n+e):null}(e,this.bounds.from)}else{let e=t.observer.selectionRange,i=s&&s.node==e.focusNode&&s.offset==e.focusOffset||!se(t.contentDOM,e.focusNode)?t.state.selection.main.head:t.docView.posFromDOM(e.focusNode,e.focusOffset),n=r&&r.node==e.anchorNode&&r.offset==e.anchorOffset||!se(t.contentDOM,e.anchorNode)?t.state.selection.main.anchor:t.docView.posFromDOM(e.anchorNode,e.anchorOffset);this.newSel=R.single(n,i)}}}function vs(t,i){let n,{newSel:s}=i,r=t.state.selection.main;if(i.bounds){let{from:s,to:o}=i.bounds,l=r.from,a=null;(8===t.inputState.lastKeyCode&&t.inputState.lastKeyTime>Date.now()-100||De.android&&i.text.length<o-s)&&(l=r.to,a="end");let h=function(t,e,i,n){let s=Math.min(t.length,e.length),r=0;for(;r<s&&t.charCodeAt(r)==e.charCodeAt(r);)r++;if(r==s&&t.length==e.length)return null;let o=t.length,l=e.length;for(;o>0&&l>0&&t.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if("end"==n){i-=o+Math.max(0,r-Math.min(o,l))-r}if(o<r&&t.length<e.length){r-=i<=r&&i>=o?r-i:0,l=r+(l-o),o=r}else if(l<r){r-=i<=r&&i>=l?r-i:0,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}(t.state.doc.sliceString(s,o,Hi),i.text,l-s,a);h&&(De.chrome&&13==t.inputState.lastKeyCode&&h.toB==h.from+2&&i.text.slice(h.from,h.toB)==Hi+Hi&&h.toB--,n={from:s+h.from,to:s+h.toA,insert:e.of(i.text.slice(h.from,h.toB).split(Hi))})}else!s||t.hasFocus&&t.state.facet(xi)&&!s.main.eq(r)||(s=null);if(!n&&!s)return!1;if(!n&&i.typeOver&&!r.empty&&s&&s.main.empty?n={from:r.from,to:r.to,insert:t.state.doc.slice(r.from,r.to)}:n&&n.from>=r.from&&n.to<=r.to&&(n.from!=r.from||n.to!=r.to)&&r.to-r.from-(n.to-n.from)<=4?n={from:r.from,to:r.to,insert:t.state.doc.slice(r.from,n.from).append(n.insert).append(t.state.doc.slice(n.to,r.to))}:(De.mac||De.android)&&n&&n.from==n.to&&n.from==r.head-1&&/^\. ?$/.test(n.insert.toString())?(s&&2==n.insert.length&&(s=R.single(s.main.anchor-1,s.main.head-1)),n={from:r.from,to:r.to,insert:e.of([" "])}):De.chrome&&n&&n.from==n.to&&n.from==r.head&&"\n "==n.insert.toString()&&t.lineWrapping&&(s&&(s=R.single(s.main.anchor-1,s.main.head-1)),n={from:r.from,to:r.to,insert:e.of([" "])}),n){let e=t.state;if(De.ios&&t.inputState.flushIOSKey(t))return!0;if(De.android&&(n.from==r.from&&n.to==r.to&&1==n.insert.length&&2==n.insert.lines&&be(t.contentDOM,"Enter",13)||n.from==r.from-1&&n.to==r.to&&0==n.insert.length&&be(t.contentDOM,"Backspace",8)||n.from==r.from&&n.to==r.to+1&&0==n.insert.length&&be(t.contentDOM,"Delete",46)))return!0;let i,o=n.insert.toString();if(t.state.facet(Qi).some((e=>e(t,n.from,n.to,o))))return!0;if(t.inputState.composing>=0&&t.inputState.composing++,n.from>=r.from&&n.to<=r.to&&n.to-n.from>=(r.to-r.from)/3&&(!s||s.main.empty&&s.main.from==n.from+n.insert.length)&&t.inputState.composing<0){let s=r.from<n.from?e.sliceDoc(r.from,n.from):"",o=r.to>n.to?e.sliceDoc(n.to,r.to):"";i=e.replaceSelection(t.state.toText(s+n.insert.sliceString(0,void 0,t.state.lineBreak)+o))}else{let o=e.changes(n),l=s&&!e.selection.main.eq(s.main)&&s.main.to<=o.newLength?s.main:void 0;if(e.selection.ranges.length>1&&t.inputState.composing>=0&&n.to<=r.to&&n.to>=r.to-10){let s=t.state.sliceDoc(n.from,n.to),a=sn(t)||t.state.doc.lineAt(r.head),h=r.to-n.to,c=r.to-r.from;i=e.changeByRange((i=>{if(i.from==r.from&&i.to==r.to)return{changes:o,range:l||i.map(o)};let u=i.to-h,f=u-s.length;if(i.to-i.from!=c||t.state.sliceDoc(f,u)!=s||a&&i.to>=a.from&&i.from<=a.to)return{range:i};let O=e.changes({from:f,to:u,insert:n.insert}),d=i.to-r.to;return{changes:O,range:l?R.range(Math.max(0,l.anchor+d),Math.max(0,l.head+d)):i.map(O)}}))}else i={changes:o,selection:l&&e.selection.replaceRange(l)}}let l="input.type";return t.composing&&(l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),t.dispatch(i,{scrollIntoView:!0,userEvent:l}),!0}if(s&&!s.main.eq(r)){let e=!1,i="select";return t.inputState.lastSelectionTime>Date.now()-50&&("select"==t.inputState.lastSelectionOrigin&&(e=!0),i=t.inputState.lastSelectionOrigin),t.dispatch({selection:s,scrollIntoView:e,userEvent:i}),!0}return!1}const xs={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},ks=De.ie&&De.ie_version<=11;class $s{constructor(t){this.view=t,this.active=!1,this.selectionRange=new de,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resize=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver((e=>{for(let t of e)this.queue.push(t);(De.ie&&De.ie_version<=11||De.ios&&t.composing)&&e.some((t=>"childList"==t.type&&t.removedNodes.length||"characterData"==t.type&&t.oldValue.length>t.target.nodeValue.length))?this.flushSoon():this.flush()})),ks&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),"function"==typeof ResizeObserver&&(this.resize=new ResizeObserver((()=>{var t;(null===(t=this.view.docView)||void 0===t?void 0:t.lastUpdate)<Date.now()-75&&this.onResize()})),this.resize.observe(t.scrollDOM)),this.addWindowListeners(this.win=t.win),this.start(),"function"==typeof IntersectionObserver&&(this.intersection=new IntersectionObserver((t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))}),{}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver((t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))}),{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runScrollHandlers(this.view,t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout((()=>{this.resizeTimeout=-1,this.view.requestMeasure()}),50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout((()=>{this.view.viewState.printing=!1,this.view.requestMeasure()}),500)}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some(((e,i)=>e!=t[i])))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,n=this.selectionRange;if(i.state.facet(xi)?i.root.activeElement!=this.dom:!re(i.dom,n))return;let s=n.anchorNode&&i.docView.nearest(n.anchorNode);s&&s.ignoreEvent(t)?e||(this.selectionChanged=!1):(De.ie&&De.ie_version<=11||De.android&&De.chrome)&&!i.state.selection.main.empty&&n.focusNode&&le(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=De.safari&&11==t.root.nodeType&&function(t){let e=t.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}(this.dom.ownerDocument)==this.dom&&function(t){let e=null;function i(t){t.preventDefault(),t.stopImmediatePropagation(),e=t.getTargetRanges()[0]}if(t.contentDOM.addEventListener("beforeinput",i,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",i,!0),!e)return null;let n=e.startContainer,s=e.startOffset,r=e.endContainer,o=e.endOffset,l=t.docView.domAtPos(t.state.selection.main.anchor);le(l.node,l.offset,r,o)&&([n,s,r,o]=[r,o,n,s]);return{anchorNode:n,anchorOffset:s,focusNode:r,focusOffset:o}}(this.view)||ne(t.root);if(!e||this.selectionRange.eq(e))return!1;let i=re(this.dom,e);return i&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime<Date.now()-300&&function(t,e){let i=e.focusNode,n=e.focusOffset;if(!i||e.anchorNode!=i||e.anchorOffset!=n)return!1;for(;;)if(n){if(1!=i.nodeType)return!1;let t=i.childNodes[n-1];"false"==t.contentEditable?n--:(i=t,n=ce(i))}else{if(i==t)return!0;n=ae(i),i=i.parentNode}}(this.dom,e)?(this.view.inputState.lastFocusTime=0,t.docView.updateSelection(),!1):(this.selectionRange.setRange(e),i&&(this.selectionChanged=!0),!0)}setSelectionRange(t,e){this.selectionRange.set(t.node,t.offset,e.node,e.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let t=0,e=null;for(let i=this.dom;i;)if(1==i.nodeType)!e&&t<this.scrollTargets.length&&this.scrollTargets[t]==i?t++:e||(e=this.scrollTargets.slice(0,t)),e&&e.push(i),i=i.assignedSlot||i.parentNode;else{if(11!=i.nodeType)break;i=i.host}if(t<this.scrollTargets.length&&!e&&(e=this.scrollTargets.slice(0,t)),e){for(let t of this.scrollTargets)t.removeEventListener("scroll",this.onScroll);for(let t of this.scrollTargets=e)t.addEventListener("scroll",this.onScroll)}}ignore(t){if(!this.active)return t();try{return this.stop(),t()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,xs),ks&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),ks&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(t,e){var i;if(!this.delayedAndroidKey){let t=()=>{let t=this.delayedAndroidKey;t&&(this.clearDelayedAndroidKey(),!this.flush()&&t.force&&be(this.dom,t.key,t.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(t)}this.delayedAndroidKey&&"Enter"!=t||(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange<Date.now()-50||!!(null===(i=this.delayedAndroidKey)||void 0===i?void 0:i.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame((()=>{this.delayedFlush=-1,this.flush()})))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}processRecords(){let t=this.queue;for(let e of this.observer.takeRecords())t.push(e);t.length&&(this.queue=[]);let e=-1,i=-1,n=!1;for(let s of t){let t=this.readMutation(s);t&&(t.typeOver&&(n=!0),-1==e?({from:e,to:i}=t):(e=Math.min(t.from,e),i=Math.max(t.to,i)))}return{from:e,to:i,typeOver:n}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),n=this.selectionChanged&&re(this.dom,this.selectionRange);return t<0&&!n?null:(t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1,new ws(this.view,t,e,i))}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return!1;let i=this.view.state,n=vs(this.view,e);return this.view.state==i&&this.view.update([]),n}readMutation(t){let e=this.view.docView.nearest(t.target);if(!e||e.ignoreMutation(t))return null;if(e.markDirty("attributes"==t.type),"attributes"==t.type&&(e.dirty|=4),"childList"==t.type){let i=Ts(e,t.previousSibling||t.target.previousSibling,-1),n=Ts(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:n?e.posBefore(n):e.posAtEnd,typeOver:!1}}return"characterData"==t.type?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var t,e,i;this.stop(),null===(t=this.intersection)||void 0===t||t.disconnect(),null===(e=this.gapIntersection)||void 0===e||e.disconnect(),null===(i=this.resize)||void 0===i||i.disconnect();for(let t of this.scrollTargets)t.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}}function Ts(t,e,i){for(;e;){let n=ve.get(e);if(n&&n.parent==t)return n;let s=e.parentNode;e=s!=t.dom?s:i>0?e.nextSibling:e.previousSibling}return null}class Ps{constructor(t={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: absolute; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),this._dispatch=t.dispatch||(t=>this.update([t])),this.dispatch=this.dispatch.bind(this),this._root=t.root||function(t){for(;t;){if(t&&(9==t.nodeType||11==t.nodeType&&t.host))return t;t=t.assignedSlot||t.parentNode}return null}(t.parent)||document,this.viewState=new os(t.state||vt.create(t)),this.plugins=this.state.facet($i).map((t=>new Pi(t)));for(let t of this.plugins)t.update(this);this.observer=new $s(this),this.inputState=new bn(this),this.inputState.ensureHandlers(this,this.plugins),this.docView=new en(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),t.parent&&t.parent.appendChild(this.dom)}get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}dispatch(...t){this._dispatch(1==t.length&&t[0]instanceof ft?t[0]:this.state.update(...t))}update(t){if(0!=this.updateState)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e,i=!1,n=!1,s=this.state;for(let e of t){if(e.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=e.state}if(this.destroyed)return void(this.viewState.state=s);let r=this.observer.delayedAndroidKey,o=null;if(r?(this.observer.clearDelayedAndroidKey(),o=this.observer.readChange(),(o&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(o=null)):this.observer.clear(),s.facet(vt.phrases)!=this.state.facet(vt.phrases))return this.setState(s);e=Vi.create(this,s,t);let l=this.viewState.scrollTarget;try{this.updateState=2;for(let e of t){if(l&&(l=l.map(e.changes)),e.scrollIntoView){let{main:t}=e.state.selection;l=new yi(t.empty?t:R.cursor(t.head,t.head>t.anchor?-1:1))}for(let t of e.effects)t.is(wi)&&(l=t.value)}this.viewState.update(e,l),this.bidiCache=As.update(this.bidiCache,e.changes),e.empty||(this.updatePlugins(e),this.inputState.update(e)),i=this.docView.update(e),this.state.facet(Ui)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(i,t.some((t=>t.isUserEvent("select.pointer"))))}finally{this.updateState=0}if(e.startState.facet(ds)!=e.state.facet(ds)&&(this.viewState.mustMeasureContent=!0),(i||n||l||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!e.empty)for(let t of this.state.facet(gi))t(e);o&&!vs(this,o)&&r.force&&be(this.contentDOM,r.key,r.keyCode)}setState(t){if(0!=this.updateState)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed)return void(this.viewState.state=t);this.updateState=2;let e=this.hasFocus;try{for(let t of this.plugins)t.destroy(this);this.viewState=new os(t),this.plugins=t.facet($i).map((t=>new Pi(t))),this.pluginMap.clear();for(let t of this.plugins)t.update(this);this.docView=new en(this),this.inputState.ensureHandlers(this,this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet($i),i=t.state.facet($i);if(e!=i){let n=[];for(let s of i){let i=e.indexOf(s);if(i<0)n.push(new Pi(s));else{let e=this.plugins[i];e.mustUpdate=t,n.push(e)}}for(let e of this.plugins)e.mustUpdate!=t&&e.destroy(this);this.plugins=n,this.pluginMap.clear(),this.inputState.ensureHandlers(this,this.plugins)}else for(let e of this.plugins)e.mustUpdate=t;for(let t=0;t<this.plugins.length;t++)this.plugins[t].update(this)}measure(t=!0){if(this.destroyed)return;this.measureScheduled>-1&&cancelAnimationFrame(this.measureScheduled),this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,{scrollHeight:i,scrollTop:n,clientHeight:s}=this.scrollDOM,r=n>i-s-4?i:n;try{for(let t=0;;t++){this.updateState=1;let i=this.viewport,n=this.viewState.lineBlockAtHeight(r),s=this.viewState.measure(this);if(!s&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(t>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let o=[];4&s||([this.measureRequests,o]=[o,this.measureRequests]);let l=o.map((t=>{try{return t.read(this)}catch(t){return vi(this.state,t),Zs}})),a=Vi.create(this,this.state,[]),h=!1,c=!1;a.flags|=s,e?e.flags|=s:e=a,this.updateState=2,a.empty||(this.updatePlugins(a),this.inputState.update(a),this.updateAttrs(),h=this.docView.update(a));for(let t=0;t<o.length;t++)if(l[t]!=Zs)try{let e=o[t];e.write&&e.write(l[t],this)}catch(t){vi(this.state,t)}if(this.viewState.editorHeight)if(this.viewState.scrollTarget)this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,c=!0;else{let t=this.viewState.lineBlockAt(n.from).top-n.top;(t>1||t<-1)&&(this.scrollDOM.scrollTop+=t,c=!0)}if(h&&this.docView.updateSelection(!0),this.viewport.from==i.from&&this.viewport.to==i.to&&!c&&0==this.measureRequests.length)break}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let t of this.state.facet(gi))t(e)}get themeClasses(){return ms+" "+(this.state.facet(ps)?Qs:gs)+" "+this.state.facet(ds)}updateAttrs(){let t=Rs(this,Ci,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(xi)?"true":"false",class:"cm-content",style:`${De.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),Rs(this,Zi,e);let i=this.observer.ignore((()=>{let i=Ke(this.contentDOM,this.contentAttrs,e),n=Ke(this.dom,this.editorAttrs,t);return i||n}));return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let t of i.effects)if(t.is(Ps.announce)){e&&(this.announceDOM.textContent=""),e=!1,this.announceDOM.appendChild(document.createElement("div")).textContent=t.value}}mountStyles(){this.styleModules=this.state.facet(Ui),Nt.mount(this.root,this.styleModules.concat(ys).reverse())}readMeasured(){if(2==this.updateState)throw new Error("Reading the editor layout isn't allowed during an update");0==this.updateState&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame((()=>this.measure()))),t){if(null!=t.key)for(let e=0;e<this.measureRequests.length;e++)if(this.measureRequests[e].key===t.key)return void(this.measureRequests[e]=t);this.measureRequests.push(t)}}plugin(t){let e=this.pluginMap.get(t);return(void 0===e||e&&e.spec!=t)&&this.pluginMap.set(t,e=this.plugins.find((e=>e.spec==t))||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return Qn(this,t,gn(this,t,e,i))}moveByGroup(t,e){return Qn(this,t,gn(this,t,e,(e=>function(t,e,i){let n=t.state.charCategorizer(e),s=n(i);return t=>{let e=n(t);return s==bt.Space&&(s=e),s==e}}(this,t.head,e))))}moveToLineBoundary(t,e,i=!0){return function(t,e,i,n){let s=t.state.doc.lineAt(e.head),r=n&&t.lineWrapping?t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head):null;if(r){let e=t.dom.getBoundingClientRect(),n=t.textDirectionAt(s.from),o=t.posAtCoords({x:i==(n==_i.LTR)?e.right-1:e.left+1,y:(r.top+r.bottom)/2});if(null!=o)return R.cursor(o,i?-1:1)}let o=ai.find(t.docView,e.head),l=o?i?o.posAtEnd:o.posAtStart:i?s.to:s.from;return R.cursor(l,i?-1:1)}(this,t,e,i)}moveVertically(t,e,i){return Qn(this,t,function(t,e,i,n){let s=e.head,r=i?1:-1;if(s==(i?t.state.doc.length:0))return R.cursor(s,e.assoc);let o,l=e.goalColumn,a=t.contentDOM.getBoundingClientRect(),h=t.coordsAtPos(s),c=t.documentTop;if(h)null==l&&(l=h.left-a.left),o=r<0?h.top:h.bottom;else{let e=t.viewState.lineBlockAt(s);null==l&&(l=Math.min(a.right-a.left,t.defaultCharacterWidth*(s-e.from))),o=(r<0?e.top:e.bottom)+c}let u=a.left+l,f=null!=n?n:t.defaultLineHeight>>1;for(let i=0;;i+=10){let n=o+(f+i)*r,h=pn(t,{x:u,y:n},!1,r);if(n<a.top||n>a.bottom||(r<0?h<s:h>s))return R.cursor(h,e.assoc,void 0,l)}}(this,t,e,i))}domAtPos(t){return this.docView.domAtPos(t)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){return this.readMeasured(),pn(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let n=this.state.doc.lineAt(t),s=this.bidiSpans(n);return fe(i,s[Ni.find(s,t-n.from,-1,e)].dir==_i.LTR==e>0)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(bi)||t<this.viewport.from||t>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>Cs)return Li(t.length);let e=this.textDirectionAt(t.from);for(let i of this.bidiCache)if(i.from==t.from&&i.dir==e)return i.order;let i=function(t,e){let i=t.length,n=e==Mi?1:2,s=e==Mi?2:1;if(!t||1==n&&!zi.test(t))return Li(i);for(let e=0,s=n,o=n;e<i;e++){let i=(r=t.charCodeAt(e))<=247?Wi[r]:1424<=r&&r<=1524?2:1536<=r&&r<=1785?Ei[r-1536]:1774<=r&&r<=2220?4:8192<=r&&r<=8203?256:64336<=r&&r<=65023?4:8204==r?256:1;512==i?i=s:8==i&&4==o&&(i=16),Ii[e]=4==i?2:i,7&i&&(o=i),s=i}var r;for(let t=0,e=n,s=n;t<i;t++){let n=Ii[t];if(128==n)t<i-1&&e==Ii[t+1]&&24&e?n=Ii[t]=e:Ii[t]=256;else if(64==n){let n=t+1;for(;n<i&&64==Ii[n];)n++;let r=t&&8==e||n<i&&8==Ii[n]?1==s?1:8:256;for(let e=t;e<n;e++)Ii[e]=r;t=n-1}else 8==n&&1==s&&(Ii[t]=1);e=n,7&n&&(s=n)}for(let e,r,o,l=0,a=0,h=0;l<i;l++)if(r=Gi[e=t.charCodeAt(l)])if(r<0){for(let t=a-3;t>=0;t-=3)if(Bi[t+1]==-r){let e=Bi[t+2],i=2&e?n:4&e?1&e?s:n:0;i&&(Ii[l]=Ii[Bi[t]]=i),a=t;break}}else{if(189==Bi.length)break;Bi[a++]=l,Bi[a++]=e,Bi[a++]=h}else if(2==(o=Ii[l])||1==o){let t=o==n;h=t?0:1;for(let e=a-3;e>=0;e-=3){let i=Bi[e+2];if(2&i)break;if(t)Bi[e+2]|=2;else{if(4&i)break;Bi[e+2]|=4}}}for(let t=0;t<i;t++)if(256==Ii[t]){let e=t+1;for(;e<i&&256==Ii[e];)e++;let s=1==(t?Ii[t-1]:n),r=s==(1==(e<i?Ii[e]:n))?s?1:2:n;for(let i=t;i<e;i++)Ii[i]=r;t=e-1}let o=[];if(1==n)for(let t=0;t<i;){let e=t,n=1!=Ii[t++];for(;t<i&&n==(1!=Ii[t]);)t++;if(n)for(let i=t;i>e;){let t=i,n=2!=Ii[--i];for(;i>e&&n==(2!=Ii[i-1]);)i--;o.push(new Ni(i,t,n?2:1))}else o.push(new Ni(e,t,0))}else for(let t=0;t<i;){let e=t,n=2==Ii[t++];for(;t<i&&n==(2==Ii[t]);)t++;o.push(new Ni(e,t,n?1:2))}return o}(t.text,e);return this.bidiCache.push(new As(t.from,t.to,e,i)),i}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||De.safari&&(null===(t=this.inputState)||void 0===t?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore((()=>{ge(this.contentDOM),this.docView.updateSelection()}))}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((9==t.nodeType?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){return wi.of(new yi("number"==typeof t?R.cursor(t):t,e.y,e.x,e.yMargin,e.xMargin))}static domEventHandlers(t){return Ti.define((()=>({})),{eventHandlers:t})}static theme(t,e){let i=Nt.newName(),n=[ds.of(i),Ui.of(Ss(`.${i}`,t))];return e&&e.dark&&n.push(ps.of(!0)),n}static baseTheme(t){return L.lowest(Ui.of(Ss("."+ms,t,bs)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),n=i&&ve.get(i)||ve.get(t);return(null===(e=null==n?void 0:n.rootView)||void 0===e?void 0:e.view)||null}}Ps.styleModule=Ui,Ps.inputHandler=Qi,Ps.perLineTextDirection=bi,Ps.exceptionSink=mi,Ps.updateListener=gi,Ps.editable=xi,Ps.mouseSelectionStyle=pi,Ps.dragMovesSelection=di,Ps.clickAddsSelectionRange=Oi,Ps.decorations=Ai,Ps.atomicRanges=Ri,Ps.scrollMargins=Xi,Ps.darkTheme=ps,Ps.contentAttributes=Zi,Ps.editorAttributes=Ci,Ps.lineWrapping=Ps.contentAttributes.of({class:"cm-lineWrapping"}),Ps.announce=ut.define();const Cs=4096,Zs={};class As{constructor(t,e,i,n){this.from=t,this.to=e,this.dir=i,this.order=n}static update(t,e){if(e.empty)return t;let i=[],n=t.length?t[t.length-1].dir:_i.LTR;for(let s=Math.max(0,t.length-10);s<t.length;s++){let r=t[s];r.dir!=n||e.touchesRange(r.from,r.to)||i.push(new As(e.mapPos(r.from,1),e.mapPos(r.to,-1),r.dir,r.order))}return i}}function Rs(t,e,i){for(let n=t.state.facet(e),s=n.length-1;s>=0;s--){let e=n[s],r="function"==typeof e?e(t):e;r&&He(r,i)}return i}const Xs=De.mac?"mac":De.windows?"win":De.linux?"linux":"key";function Us(t,e,i){return e.altKey&&(t="Alt-"+t),e.ctrlKey&&(t="Ctrl-"+t),e.metaKey&&(t="Meta-"+t),!1!==i&&e.shiftKey&&(t="Shift-"+t),t}const qs=L.default(Ps.domEventHandlers({keydown:(t,e)=>function(t,e,i,n){let s=function(t){var e=!(te&&(t.ctrlKey||t.altKey||t.metaKey)||Kt&&t.shiftKey&&t.key&&1==t.key.length||"Unidentified"==t.key)&&t.key||(t.shiftKey?Ft:Yt)[t.keyCode]||t.key||"Unidentified";return"Esc"==e&&(e="Escape"),"Del"==e&&(e="Delete"),"Left"==e&&(e="ArrowLeft"),"Up"==e&&(e="ArrowUp"),"Right"==e&&(e="ArrowRight"),"Down"==e&&(e="ArrowDown"),e}(e),r=Q(s,0),o=S(r)==s.length&&" "!=s,l="",a=!1;Ms&&Ms.view==i&&Ms.scope==n&&(l=Ms.prefix+" ",(a=wn.indexOf(e.keyCode)<0)&&(Ms=null));let h,c,u=new Set,f=t=>{if(t){for(let n of t.run)if(!u.has(n)&&(u.add(n),n(i,e)))return!0;t.preventDefault&&(a=!0)}return!1},O=t[n];if(O){if(f(O[l+Us(s,e,!o)]))return!0;if(o&&(e.altKey||e.metaKey||e.ctrlKey)&&(h=Yt[e.keyCode])&&h!=s){if(f(O[l+Us(h,e,!0)]))return!0;if(e.shiftKey&&(c=Ft[e.keyCode])!=s&&c!=h&&f(O[l+Us(c,e,!1)]))return!0}else if(o&&e.shiftKey&&f(O[l+Us(s,e,!0)]))return!0;if(f(O._any))return!0}return a}(function(t){let e=t.facet(Vs),i=_s.get(e);i||_s.set(e,i=function(t,e=Xs){let i=Object.create(null),n=Object.create(null),s=(t,e)=>{let i=n[t];if(null==i)n[t]=e;else if(i!=e)throw new Error("Key binding "+t+" is used both as a regular binding and as a multi-stroke prefix")},r=(t,n,r,o)=>{var l,a;let h=i[t]||(i[t]=Object.create(null)),c=n.split(/ (?!$)/).map((t=>function(t,e){const i=t.split(/-(?!$)/);let n,s,r,o,l=i[i.length-1];"Space"==l&&(l=" ");for(let t=0;t<i.length-1;++t){const l=i[t];if(/^(cmd|meta|m)$/i.test(l))o=!0;else if(/^a(lt)?$/i.test(l))n=!0;else if(/^(c|ctrl|control)$/i.test(l))s=!0;else if(/^s(hift)?$/i.test(l))r=!0;else{if(!/^mod$/i.test(l))throw new Error("Unrecognized modifier name: "+l);"mac"==e?o=!0:s=!0}}return n&&(l="Alt-"+l),s&&(l="Ctrl-"+l),o&&(l="Meta-"+l),r&&(l="Shift-"+l),l}(t,e)));for(let e=1;e<c.length;e++){let i=c.slice(0,e).join(" ");s(i,!0),h[i]||(h[i]={preventDefault:!0,run:[e=>{let n=Ms={view:e,prefix:i,scope:t};return setTimeout((()=>{Ms==n&&(Ms=null)}),4e3),!0}]})}let u=c.join(" ");s(u,!1);let f=h[u]||(h[u]={preventDefault:!1,run:(null===(a=null===(l=h._any)||void 0===l?void 0:l.run)||void 0===a?void 0:a.slice())||[]});r&&f.run.push(r),o&&(f.preventDefault=!0)};for(let n of t){let t=n.scope?n.scope.split(" "):["editor"];if(n.any)for(let e of t){let t=i[e]||(i[e]=Object.create(null));t._any||(t._any={preventDefault:!1,run:[]});for(let e in t)t[e].run.push(n.any)}let s=n[e]||n.key;if(s)for(let e of t)r(e,s,n.run,n.preventDefault),n.shift&&r(e,"Shift-"+s,n.shift,n.preventDefault)}return i}(e.reduce(((t,e)=>t.concat(e)),[])));return i}(e.state),t,e,"editor")})),Vs=q.define({enables:qs}),_s=new WeakMap;let Ms=null;class Ds{constructor(t,e,i,n,s){this.className=t,this.left=e,this.top=i,this.width=n,this.height=s}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className==this.className&&(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width>=0&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}}class js{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(Ws)!=t.state.facet(Ws)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&t.view.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(Ws);for(;e<i.length&&i[e]!=this.layer;)e++;this.dom.style.zIndex=String((this.layer.above?150:-1)-e)}measure(){return this.layer.markers(this.view)}draw(t){if(t.length!=this.drawn.length||t.some(((t,e)=>{return i=t,n=this.drawn[e],!(i.constructor==n.constructor&&i.eq(n));var i,n}))){let e=this.dom.firstChild,i=0;for(let n of t)n.update&&e&&n.constructor&&this.drawn[i].constructor&&n.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(n.draw(),e);for(;e;){let t=e.nextSibling;e.remove(),e=t}this.drawn=t}}destroy(){this.dom.remove()}}const Ws=q.define();function Es(t){return[Ti.define((e=>new js(e,t))),Ws.of(t)]}const Gs=!De.ios,Bs=q.define({combine:t=>xt(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})});function zs(t={}){return[Bs.of(t),Is,Ys,Hs,Si.of(!0)]}function Ns(t){return t.startState.facet(Bs)!=t.startState.facet(Bs)}const Is=Es({above:!0,markers(t){let{state:e}=t,i=e.facet(Bs),n=[];for(let s of e.selection.ranges){let r=s==e.selection.main;if(s.empty?!r||Gs:i.drawRangeCursor){let e=er(t,s,r);e&&n.push(e)}}return n},update(t,e){t.transactions.some((t=>t.scrollIntoView))&&(e.style.animationName="cm-blink"==e.style.animationName?"cm-blink2":"cm-blink");let i=Ns(t);return i&&Ls(t.state,e),t.docChanged||t.selectionSet||i},mount(t,e){Ls(e.state,t)},class:"cm-cursorLayer"});function Ls(t,e){e.style.animationDuration=t.facet(Bs).cursorBlinkRate+"ms"}const Ys=Es({above:!1,markers:t=>t.state.selection.ranges.map((e=>e.empty?[]:function(t,e){if(e.to<=t.viewport.from||e.from>=t.viewport.to)return[];let i=Math.max(e.from,t.viewport.from),n=Math.min(e.to,t.viewport.to),s=t.textDirection==_i.LTR,r=t.contentDOM,o=r.getBoundingClientRect(),l=Js(t),a=window.getComputedStyle(r.firstChild),h=o.left+parseInt(a.paddingLeft)+Math.min(0,parseInt(a.textIndent)),c=o.right-parseInt(a.paddingRight),u=tr(t,i),f=tr(t,n),O=u.type==ei.Text?u:null,d=f.type==ei.Text?f:null;t.lineWrapping&&(O&&(O=Ks(t,i,O)),d&&(d=Ks(t,n,d)));if(O&&d&&O.from==d.from)return m(g(e.from,e.to,O));{let i=O?g(e.from,null,O):Q(u,!1),n=d?g(null,e.to,d):Q(f,!0),s=[];return(O||u).to<(d||f).from-1?s.push(p(h,i.bottom,c,n.top)):i.bottom<n.top&&t.elementAtHeight((i.bottom+n.top)/2).type==ei.Text&&(i.bottom=n.top=(i.bottom+n.top)/2),m(i).concat(s).concat(m(n))}function p(t,e,i,n){return new Ds("cm-selectionBackground",t-l.left,e-l.top-.01,i-t,n-e+.01)}function m({top:t,bottom:e,horizontal:i}){let n=[];for(let s=0;s<i.length;s+=2)n.push(p(i[s],t,i[s+1],e));return n}function g(e,i,n){let r=1e9,o=-1e9,l=[];function a(e,i,a,u,f){let O=t.coordsAtPos(e,e==n.to?-2:2),d=t.coordsAtPos(a,a==n.from?2:-2);r=Math.min(O.top,d.top,r),o=Math.max(O.bottom,d.bottom,o),f==_i.LTR?l.push(s&&i?h:O.left,s&&u?c:d.right):l.push(!s&&u?h:d.left,!s&&i?c:O.right)}let u=null!=e?e:n.from,f=null!=i?i:n.to;for(let n of t.visibleRanges)if(n.to>u&&n.from<f)for(let s=Math.max(n.from,u),r=Math.min(n.to,f);;){let n=t.state.doc.lineAt(s);for(let o of t.bidiSpans(n)){let t=o.from+n.from,l=o.to+n.from;if(t>=r)break;l>s&&a(Math.max(t,s),null==e&&t<=u,Math.min(l,r),null==i&&l>=f,o.dir)}if(s=n.to+1,s>=r)break}return 0==l.length&&a(u,null==e,f,null==i,t.textDirection),{top:r,bottom:o,horizontal:l}}function Q(t,e){let i=o.top+(e?t.top:t.bottom);return{top:i,bottom:i,horizontal:[]}}}(t,e))).reduce(((t,e)=>t.concat(e))),update:(t,e)=>t.docChanged||t.selectionSet||t.viewportChanged||Ns(t),class:"cm-selectionLayer"}),Fs={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};Gs&&(Fs[".cm-line"].caretColor="transparent !important");const Hs=L.highest(Ps.theme(Fs));function Js(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==_i.LTR?e.left:e.right-t.scrollDOM.clientWidth)-t.scrollDOM.scrollLeft,top:e.top-t.scrollDOM.scrollTop}}function Ks(t,e,i){let n=R.cursor(e);return{from:Math.max(i.from,t.moveToLineBoundary(n,!1,!0).from),to:Math.min(i.to,t.moveToLineBoundary(n,!0,!0).from),type:ei.Text}}function tr(t,e){let i=t.lineBlockAt(e);if(Array.isArray(i.type))for(let t of i.type)if(t.to>e||t.to==e&&(t.to==i.to||t.type==ei.Text))return t;return i}function er(t,e,i){let n=t.coordsAtPos(e.head,e.assoc||1);if(!n)return null;let s=Js(t);return new Ds(i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",n.left-s.left,n.top-s.top,-1,n.bottom-n.top)}function ir(t,e,i,n,s){e.lastIndex=0;for(let r,o=t.iterRange(i,n),l=i;!o.next().done;l+=o.value.length)if(!o.lineBreak)for(;r=e.exec(o.value);)s(l+r.index,r)}class nr{constructor(t){const{regexp:e,decoration:i,decorate:n,boundary:s,maxLength:r=1e3}=t;if(!e.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=e,n)this.addMatch=(t,e,i,s)=>n(s,i,i+t[0].length,t,e);else if("function"==typeof i)this.addMatch=(t,e,n,s)=>{let r=i(t,e,n);r&&s(n,n+t[0].length,r)};else{if(!i)throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.addMatch=(t,e,n,s)=>s(n,n+t[0].length,i)}this.boundary=s,this.maxLength=r}createDeco(t){let e=new Zt,i=e.add.bind(e);for(let{from:e,to:n}of function(t,e){let i=t.visibleRanges;if(1==i.length&&i[0].from==t.viewport.from&&i[0].to==t.viewport.to)return i;let n=[];for(let{from:s,to:r}of i)s=Math.max(t.state.doc.lineAt(s).from,s-e),r=Math.min(t.state.doc.lineAt(r).to,r+e),n.length&&n[n.length-1].to>=s?n[n.length-1].to=r:n.push({from:s,to:r});return n}(t,this.maxLength))ir(t.state.doc,this.regexp,e,n,((e,n)=>this.addMatch(n,t,e,i)));return e.finish()}updateDeco(t,e){let i=1e9,n=-1;return t.docChanged&&t.changes.iterChanges(((e,s,r,o)=>{o>t.view.viewport.from&&r<t.view.viewport.to&&(i=Math.min(r,i),n=Math.max(o,n))})),t.viewportChanged||n-i>1e3?this.createDeco(t.view):n>-1?this.updateRange(t.view,e.map(t.changes),i,n):e}updateRange(t,e,i,n){for(let s of t.visibleRanges){let r=Math.max(s.from,i),o=Math.min(s.to,n);if(o>r){let i=t.state.doc.lineAt(r),n=i.to<o?t.state.doc.lineAt(o):i,l=Math.max(s.from,i.from),a=Math.min(s.to,n.to);if(this.boundary){for(;r>i.from;r--)if(this.boundary.test(i.text[r-1-i.from])){l=r;break}for(;o<n.to;o++)if(this.boundary.test(n.text[o-n.from])){a=o;break}}let h,c=[],u=(t,e,i)=>c.push(i.range(t,e));if(i==n)for(this.regexp.lastIndex=l-i.from;(h=this.regexp.exec(i.text))&&h.index<a-i.from;)this.addMatch(h,t,h.index+i.from,u);else ir(t.state.doc,this.regexp,l,a,((e,i)=>this.addMatch(i,t,e,u)));e=e.update({filterFrom:l,filterTo:a,filter:(t,e)=>t<l||e>a,add:c})}}return e}}const sr=null!=/x/.unicode?"gu":"g",rr=new RegExp("[\0-\b\n--Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\ufeff-]",sr),or={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let lr=null;const ar=q.define({combine(t){let e=xt(t,{render:null,specialChars:rr,addSpecialChars:null});return(e.replaceTabs=!function(){var t;if(null==lr&&"undefined"!=typeof document&&document.body){let e=document.body.style;lr=null!=(null!==(t=e.tabSize)&&void 0!==t?t:e.MozTabSize)}return lr||!1}())&&(e.specialChars=new RegExp("\t|"+e.specialChars.source,sr)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,sr)),e}});function hr(t={}){return[ar.of(t),cr||(cr=Ti.fromClass(class{constructor(t){this.view=t,this.decorations=ii.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(ar)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new nr({regexp:t.specialChars,decoration:(e,i,n)=>{let{doc:s}=i.state,r=Q(e[0],0);if(9==r){let t=s.lineAt(n),e=i.state.tabSize,r=Wt(t.text,e,n-t.from);return ii.replace({widget:new fr((e-r%e)*this.view.defaultCharacterWidth)})}return this.decorationCache[r]||(this.decorationCache[r]=ii.replace({widget:new ur(t,r)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(ar);t.startState.facet(ar)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))]}let cr=null;class ur extends ti{constructor(t,e){super(),this.options=t,this.code=e}eq(t){return t.code==this.code}toDOM(t){let e=function(t){return t>=32?"•":10==t?"␤":String.fromCharCode(9216+t)}(this.code),i=t.state.phrase("Control character")+" "+(or[this.code]||"0x"+this.code.toString(16)),n=this.options.render&&this.options.render(this.code,i,e);if(n)return n;let s=document.createElement("span");return s.textContent=e,s.title=i,s.setAttribute("aria-label",i),s.className="cm-specialChar",s}ignoreEvent(){return!1}}class fr extends ti{constructor(t){super(),this.width=t}eq(t){return t.width==this.width}toDOM(){let t=document.createElement("span");return t.textContent="\t",t.className="cm-tab",t.style.width=this.width+"px",t}ignoreEvent(){return!1}}const Or=ii.line({class:"cm-activeLine"}),dr=Ti.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,i=[];for(let n of t.state.selection.ranges){let s=t.lineBlockAt(n.head);s.from>e&&(i.push(Or.range(s.from)),e=s.from)}return ii.set(i)}},{decorations:t=>t.decorations}),pr=2e3;function mr(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1),n=t.state.doc.lineAt(i),s=i-n.from,r=s>pr?-1:s==n.length?function(t,e){let i=t.coordsAtPos(t.viewport.from);return i?Math.round(Math.abs((i.left-e)/t.defaultCharacterWidth)):-1}(t,e.clientX):Wt(n.text,t.state.tabSize,i-n.from);return{line:n.number,col:r,off:s}}function gr(t,e){let i=mr(t,e),n=t.state.selection;return i?{update(t){if(t.docChanged){let e=t.changes.mapPos(t.startState.doc.line(i.line).from),s=t.state.doc.lineAt(e);i={line:s.number,col:i.col,off:Math.min(i.off,s.length)},n=n.map(t.changes)}},get(e,s,r){let o=mr(t,e);if(!o)return n;let l=function(t,e,i){let n=Math.min(e.line,i.line),s=Math.max(e.line,i.line),r=[];if(e.off>pr||i.off>pr||e.col<0||i.col<0){let o=Math.min(e.off,i.off),l=Math.max(e.off,i.off);for(let e=n;e<=s;e++){let i=t.doc.line(e);i.length<=l&&r.push(R.range(i.from+o,i.to+l))}}else{let o=Math.min(e.col,i.col),l=Math.max(e.col,i.col);for(let e=n;e<=s;e++){let i=t.doc.line(e),n=Et(i.text,o,t.tabSize,!0);if(n<0)r.push(R.cursor(i.to));else{let e=Et(i.text,l,t.tabSize);r.push(R.range(i.from+n,i.from+e))}}}return r}(t.state,i,o);return l.length?r?R.create(l.concat(n.ranges)):R.create(l):n}}:null}function Qr(t){let e=(null==t?void 0:t.eventFilter)||(t=>t.altKey&&0==t.button);return Ps.mouseSelectionStyle.of(((t,i)=>e(i)?gr(t,i):null))}const br={Alt:[18,t=>t.altKey],Control:[17,t=>t.ctrlKey],Shift:[16,t=>t.shiftKey],Meta:[91,t=>t.metaKey]},Sr={style:"cursor: crosshair"};function yr(t={}){let[e,i]=br[t.key||"Alt"],n=Ti.fromClass(class{constructor(t){this.view=t,this.isDown=!1}set(t){this.isDown!=t&&(this.isDown=t,this.view.update([]))}},{eventHandlers:{keydown(t){this.set(t.keyCode==e||i(t))},keyup(t){t.keyCode!=e&&i(t)||this.set(!1)},mousemove(t){this.set(i(t))}}});return[n,Ps.contentAttributes.of((t=>{var e;return(null===(e=t.plugin(n))||void 0===e?void 0:e.isDown)?Sr:null}))]}const wr="-10000px";class vr{constructor(t,e,i){this.facet=e,this.createTooltipView=i,this.input=t.state.facet(e),this.tooltips=this.input.filter((t=>t)),this.tooltipViews=this.tooltips.map(i)}update(t){var e;let i=t.state.facet(this.facet),n=i.filter((t=>t));if(i===this.input){for(let e of this.tooltipViews)e.update&&e.update(t);return!1}let s=[];for(let e=0;e<n.length;e++){let i=n[e],r=-1;if(i){for(let t=0;t<this.tooltips.length;t++){let e=this.tooltips[t];e&&e.create==i.create&&(r=t)}if(r<0)s[e]=this.createTooltipView(i);else{let i=s[e]=this.tooltipViews[r];i.update&&i.update(t)}}}for(let t of this.tooltipViews)s.indexOf(t)<0&&(t.dom.remove(),null===(e=t.destroy)||void 0===e||e.call(t));return this.input=i,this.tooltips=n,this.tooltipViews=s,!0}}function xr(t){let{win:e}=t;return{top:0,left:0,bottom:e.innerHeight,right:e.innerWidth}}const kr=q.define({combine:t=>{var e,i,n;return{position:De.ios?"absolute":(null===(e=t.find((t=>t.position)))||void 0===e?void 0:e.position)||"fixed",parent:(null===(i=t.find((t=>t.parent)))||void 0===i?void 0:i.parent)||null,tooltipSpace:(null===(n=t.find((t=>t.tooltipSpace)))||void 0===n?void 0:n.tooltipSpace)||xr}}}),$r=Ti.fromClass(class{constructor(t){this.view=t,this.inView=!0,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(kr);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new vr(t,Cr,(t=>this.createTooltip(t))),this.intersectionObserver="function"==typeof IntersectionObserver?new IntersectionObserver((t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()}),{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout((()=>{this.measureTimeout=-1,this.maybeMeasure()}),50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t);e&&this.observeIntersection();let i=e||t.geometryChanged,n=t.state.facet(kr);if(n.position!=this.position){this.position=n.position;for(let t of this.manager.tooltipViews)t.dom.style.position=this.position;i=!0}if(n.parent!=this.parent){this.parent&&this.container.remove(),this.parent=n.parent,this.createContainer();for(let t of this.manager.tooltipViews)this.container.appendChild(t.dom);i=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);i&&this.maybeMeasure()}createTooltip(t){let e=t.create(this.view);if(e.dom.classList.add("cm-tooltip"),t.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let t=document.createElement("div");t.className="cm-tooltip-arrow",e.dom.appendChild(t)}return e.dom.style.position=this.position,e.dom.style.top=wr,this.container.appendChild(e.dom),e.mount&&e.mount(this.view),e}destroy(){var t,e;this.view.win.removeEventListener("resize",this.measureSoon);for(let e of this.manager.tooltipViews)e.dom.remove(),null===(t=e.destroy)||void 0===t||t.call(e);null===(e=this.intersectionObserver)||void 0===e||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=this.view.dom.getBoundingClientRect();return{editor:t,parent:this.parent?this.container.getBoundingClientRect():t,pos:this.manager.tooltips.map(((t,e)=>{let i=this.manager.tooltipViews[e];return i.getCoords?i.getCoords(t.pos):this.view.coordsAtPos(t.pos)})),size:this.manager.tooltipViews.map((({dom:t})=>t.getBoundingClientRect())),space:this.view.state.facet(kr).tooltipSpace(this.view)}}writeMeasure(t){let{editor:e,space:i}=t,n=[];for(let s=0;s<this.manager.tooltips.length;s++){let r=this.manager.tooltips[s],o=this.manager.tooltipViews[s],{dom:l}=o,a=t.pos[s],h=t.size[s];if(!a||a.bottom<=Math.max(e.top,i.top)||a.top>=Math.min(e.bottom,i.bottom)||a.right<Math.max(e.left,i.left)-.1||a.left>Math.min(e.right,i.right)+.1){l.style.top=wr;continue}let c=r.arrow?o.dom.querySelector(".cm-tooltip-arrow"):null,u=c?7:0,f=h.right-h.left,O=h.bottom-h.top,d=o.offset||Pr,p=this.view.textDirection==_i.LTR,m=h.width>i.right-i.left?p?i.left:i.right-h.width:p?Math.min(a.left-(c?14:0)+d.x,i.right-f):Math.max(i.left,a.left-f+(c?14:0)-d.x),g=!!r.above;!r.strictSide&&(g?a.top-(h.bottom-h.top)-d.y<i.top:a.bottom+(h.bottom-h.top)+d.y>i.bottom)&&g==i.bottom-a.bottom>a.top-i.top&&(g=!g);let Q=(g?a.top-i.top:i.bottom-a.bottom)-u;if(Q<O&&!1!==o.resize){if(Q<this.view.defaultLineHeight){l.style.top=wr;continue}l.style.height=(O=Q)+"px"}else l.style.height&&(l.style.height="");let b=g?a.top-O-u-d.y:a.bottom+u+d.y,S=m+f;if(!0!==o.overlap)for(let t of n)t.left<S&&t.right>m&&t.top<b+O&&t.bottom>b&&(b=g?t.top-O-2-u:t.bottom+u+2);"absolute"==this.position?(l.style.top=b-t.parent.top+"px",l.style.left=m-t.parent.left+"px"):(l.style.top=b+"px",l.style.left=m+"px"),c&&(c.style.left=a.left+(p?d.x:-d.x)-(m+14-7)+"px"),!0!==o.overlap&&n.push({left:m,top:b,right:S,bottom:b+O}),l.classList.toggle("cm-tooltip-above",g),l.classList.toggle("cm-tooltip-below",!g),o.positioned&&o.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=wr}},{eventHandlers:{scroll(){this.maybeMeasure()}}}),Tr=Ps.baseTheme({".cm-tooltip":{zIndex:100,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),Pr={x:0,y:0},Cr=q.define({enables:[$r,Tr]});class Zr extends kt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}}Zr.prototype.elementClass="",Zr.prototype.toDOM=void 0,Zr.prototype.mapMode=w.TrackBefore,Zr.prototype.startSide=Zr.prototype.endSide=-1,Zr.prototype.point=!0;const Ar=q.define(),Rr={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Ct.empty,lineMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},Xr=q.define();function Ur(t){return[Vr(),Xr.of(Object.assign(Object.assign({},Rr),t))]}const qr=q.define({combine:t=>t.some((t=>t))});function Vr(t){let e=[_r];return t&&!1===t.fixed&&e.push(qr.of(!0)),e}const _r=Ti.fromClass(class{constructor(t){this.view=t,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight+"px",this.gutters=t.state.facet(Xr).map((e=>new Wr(t,e)));for(let t of this.gutters)this.dom.appendChild(t.dom);this.fixed=!t.state.facet(qr),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}update(t){if(this.updateGutters(t)){let e=this.prevViewport,i=t.view.viewport,n=Math.min(e.to,i.to)-Math.max(e.from,i.from);this.syncGutters(n<.8*(i.to-i.from))}t.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(qr)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&this.dom.remove();let i=Ct.iter(this.view.state.facet(Ar),this.view.viewport.from),n=[],s=this.gutters.map((t=>new jr(t,this.view.viewport,-this.view.documentPadding.top)));for(let t of this.view.viewportLineBlocks){let e;if(Array.isArray(t.type)){for(let i of t.type)if(i.type==ei.Text){e=i;break}}else e=t.type==ei.Text?t:void 0;if(e){n.length&&(n=[]),Dr(i,n,t.from);for(let t of s)t.line(this.view,e,n)}}for(let t of s)t.finish();t&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(t){let e=t.startState.facet(Xr),i=t.state.facet(Xr),n=t.docChanged||t.heightChanged||t.viewportChanged||!Ct.eq(t.startState.facet(Ar),t.state.facet(Ar),t.view.viewport.from,t.view.viewport.to);if(e==i)for(let e of this.gutters)e.update(t)&&(n=!0);else{n=!0;let s=[];for(let n of i){let i=e.indexOf(n);i<0?s.push(new Wr(this.view,n)):(this.gutters[i].update(t),s.push(this.gutters[i]))}for(let t of this.gutters)t.dom.remove(),s.indexOf(t)<0&&t.destroy();for(let t of s)this.dom.appendChild(t.dom);this.gutters=s}return n}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove()}},{provide:t=>Ps.scrollMargins.of((e=>{let i=e.plugin(t);return i&&0!=i.gutters.length&&i.fixed?e.textDirection==_i.LTR?{left:i.dom.offsetWidth}:{right:i.dom.offsetWidth}:null}))});function Mr(t){return Array.isArray(t)?t:[t]}function Dr(t,e,i){for(;t.value&&t.from<=i;)t.from==i&&e.push(t.value),t.next()}class jr{constructor(t,e,i){this.gutter=t,this.height=i,this.localMarkers=[],this.i=0,this.cursor=Ct.iter(t.markers,e.from)}line(t,e,i){this.localMarkers.length&&(this.localMarkers=[]),Dr(this.cursor,this.localMarkers,e.from);let n=i.length?this.localMarkers.concat(i):this.localMarkers,s=this.gutter.config.lineMarker(t,e,n);s&&n.unshift(s);let r=this.gutter;if(0==n.length&&!r.config.renderEmptyElements)return;let o=e.top-this.height;if(this.i==r.elements.length){let i=new Er(t,e.height,o,n);r.elements.push(i),r.dom.appendChild(i.dom)}else r.elements[this.i].update(t,e.height,o,n);this.height=e.bottom,this.i++}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}}class Wr{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,(n=>{let s=t.lineBlockAtHeight(n.clientY-t.documentTop);e.domEventHandlers[i](t,s,n)&&n.preventDefault()}));this.markers=Mr(e.markers(t)),e.initialSpacer&&(this.spacer=new Er(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=Mr(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let e=this.config.updateSpacer(this.spacer.markers[0],t);e!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[e])}let i=t.view.viewport;return!Ct.eq(this.markers,e,i.from,i.to)||!!this.config.lineMarkerChange&&this.config.lineMarkerChange(t)}destroy(){for(let t of this.elements)t.destroy()}}class Er{constructor(t,e,i,n){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,n)}update(t,e,i,n){this.height!=e&&(this.dom.style.height=(this.height=e)+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),function(t,e){if(t.length!=e.length)return!1;for(let i=0;i<t.length;i++)if(!t[i].compare(e[i]))return!1;return!0}(this.markers,n)||this.setMarkers(t,n)}setMarkers(t,e){let i="cm-gutterElement",n=this.dom.firstChild;for(let s=0,r=0;;){let o=r,l=s<e.length?e[s++]:null,a=!1;if(l){let t=l.elementClass;t&&(i+=" "+t);for(let t=r;t<this.markers.length;t++)if(this.markers[t].compare(l)){o=t,a=!0;break}}else o=this.markers.length;for(;r<o;){let t=this.markers[r++];if(t.toDOM){t.destroy(n);let e=n.nextSibling;n.remove(),n=e}}if(!l)break;l.toDOM&&(a?n=n.nextSibling:this.dom.insertBefore(l.toDOM(t),n)),a&&r++}this.dom.className=i,this.markers=e}destroy(){this.setMarkers(null,[])}}const Gr=q.define(),Br=q.define({combine:t=>xt(t,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(t,e){let i=Object.assign({},t);for(let t in e){let n=i[t],s=e[t];i[t]=n?(t,e,i)=>n(t,e,i)||s(t,e,i):s}return i}})});class zr extends Zr{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}}function Nr(t,e){return t.state.facet(Br).formatNumber(e,t.state)}const Ir=Xr.compute([Br],(t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers:t=>t.state.facet(Gr),lineMarker:(t,e,i)=>i.some((t=>t.toDOM))?null:new zr(Nr(t,t.state.doc.lineAt(e.from).number)),lineMarkerChange:t=>t.startState.facet(Br)!=t.state.facet(Br),initialSpacer:t=>new zr(Nr(t,Yr(t.state.doc.lines))),updateSpacer(t,e){let i=Nr(e.view,Yr(e.view.state.doc.lines));return i==t.number?t:new zr(i)},domEventHandlers:t.facet(Br).domEventHandlers})));function Lr(t={}){return[Br.of(t),Vr(),Ir]}function Yr(t){let e=9;for(;e<t;)e=10*e+9;return e}const Fr=new class extends Zr{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},Hr=Ar.compute(["selection"],(t=>{let e=[],i=-1;for(let n of t.selection.ranges){let s=t.doc.lineAt(n.head).from;s>i&&(i=s,e.push(Fr.range(s)))}return Ct.of(e)}));const Jr="function"==typeof String.prototype.normalize?t=>t.normalize("NFKD"):t=>t;class Kr{constructor(t,e,i=0,n=t.length,s,r){this.test=r,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=t.iterRange(i,n),this.bufferStart=i,this.normalize=s?t=>s(Jr(t)):Jr,this.query=this.normalize(e)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Q(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let t=this.peek();if(t<0)return this.done=!0,this;let e=b(t),i=this.bufferStart+this.bufferPos;this.bufferPos+=S(t);let n=this.normalize(e);for(let t=0,s=i;;t++){let r=n.charCodeAt(t),o=this.match(r,s);if(o)return this.value=o,this;if(t==n.length-1)break;s==i&&t<e.length&&e.charCodeAt(t)==r&&s++}}}match(t,e){let i=null;for(let n=0;n<this.matches.length;n+=2){let s=this.matches[n],r=!1;this.query.charCodeAt(s)==t&&(s==this.query.length-1?i={from:this.matches[n+1],to:e+1}:(this.matches[n]++,r=!0)),r||(this.matches.splice(n,2),n-=2)}return this.query.charCodeAt(0)==t&&(1==this.query.length?i={from:e,to:e+1}:this.matches.push(1,e)),i&&this.test&&!this.test(i.from,i.to,this.buffer,this.bufferPos)&&(i=null),i}}"undefined"!=typeof Symbol&&(Kr.prototype[Symbol.iterator]=function(){return this});const to={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},eo=q.define({combine:t=>xt(t,to,{highlightWordAroundCursor:(t,e)=>t||e,minSelectionLength:Math.min,maxMatches:Math.min})});function io(t){let e=[lo,oo];return t&&e.push(eo.of(t)),e}const no=ii.mark({class:"cm-selectionMatch"}),so=ii.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function ro(t,e,i,n){return!(0!=i&&t(e.sliceDoc(i-1,i))==bt.Word||n!=e.doc.length&&t(e.sliceDoc(n,n+1))==bt.Word)}const oo=Ti.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(eo),{state:i}=t,n=i.selection;if(n.ranges.length>1)return ii.none;let s,r=n.main,o=null;if(r.empty){if(!e.highlightWordAroundCursor)return ii.none;let t=i.wordAt(r.head);if(!t)return ii.none;o=i.charCategorizer(r.head),s=i.sliceDoc(t.from,t.to)}else{let t=r.to-r.from;if(t<e.minSelectionLength||t>200)return ii.none;if(e.wholeWords){if(s=i.sliceDoc(r.from,r.to),o=i.charCategorizer(r.head),!ro(o,i,r.from,r.to)||!function(t,e,i,n){return t(e.sliceDoc(i,i+1))==bt.Word&&t(e.sliceDoc(n-1,n))==bt.Word}(o,i,r.from,r.to))return ii.none}else if(s=i.sliceDoc(r.from,r.to).trim(),!s)return ii.none}let l=[];for(let n of t.visibleRanges){let t=new Kr(i.doc,s,n.from,n.to);for(;!t.next().done;){let{from:n,to:s}=t.value;if((!o||ro(o,i,n,s))&&(r.empty&&n<=r.from&&s>=r.to?l.push(so.range(n,s)):(n>=r.to||s<=r.from)&&l.push(no.range(n,s)),l.length>e.maxMatches))return ii.none}}return ii.set(l)}},{decorations:t=>t.decorations}),lo=Ps.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),ao=1024;let ho=0;class co{constructor(t,e){this.from=t,this.to=e}}class uo{constructor(t={}){this.id=ho++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof t&&(t=Oo.match(t)),e=>{let i=t(e);return void 0===i?null:[this,i]}}}uo.closedBy=new uo({deserialize:t=>t.split(" ")}),uo.openedBy=new uo({deserialize:t=>t.split(" ")}),uo.group=new uo({deserialize:t=>t.split(" ")}),uo.contextHash=new uo({perNode:!0}),uo.lookAhead=new uo({perNode:!0}),uo.mounted=new uo({perNode:!0});const fo=Object.create(null);class Oo{constructor(t,e,i,n=0){this.name=t,this.props=e,this.id=i,this.flags=n}static define(t){let e=t.props&&t.props.length?Object.create(null):fo,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(null==t.name?8:0),n=new Oo(t.name||"",e,t.id,i);if(t.props)for(let i of t.props)if(Array.isArray(i)||(i=i(n)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[i[0].id]=i[1]}return n}prop(t){return this.props[t.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(t){if("string"==typeof t){if(this.name==t)return!0;let e=this.prop(uo.group);return!!e&&e.indexOf(t)>-1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let n of i.split(" "))e[n]=t[i];return t=>{for(let i=t.prop(uo.group),n=-1;n<(i?i.length:0);n++){let s=e[n<0?t.name:i[n]];if(s)return s}}}}Oo.none=new Oo("",Object.create(null),0,8);class po{constructor(t){this.types=t;for(let e=0;e<t.length;e++)if(t[e].id!=e)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...t){let e=[];for(let i of this.types){let n=null;for(let e of t){let t=e(i);t&&(n||(n=Object.assign({},i.props)),n[t[0].id]=t[1])}e.push(n?new Oo(i.name,n,i.id,i.flags):i)}return new po(e)}}const mo=new WeakMap,go=new WeakMap;var Qo;!function(t){t[t.ExcludeBuffers=1]="ExcludeBuffers",t[t.IncludeAnonymous=2]="IncludeAnonymous",t[t.IgnoreMounts=4]="IgnoreMounts",t[t.IgnoreOverlays=8]="IgnoreOverlays"}(Qo||(Qo={}));class bo{constructor(t,e,i,n,s){if(this.type=t,this.children=e,this.positions=i,this.length=n,this.props=null,s&&s.length){this.props=Object.create(null);for(let[t,e]of s)this.props["number"==typeof t?t:t.id]=e}}toString(){let t=this.prop(uo.mounted);if(t&&!t.overlay)return t.tree.toString();let e="";for(let t of this.children){let i=t.toString();i&&(e&&(e+=","),e+=i)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(e.length?"("+e+")":""):e}cursor(t=0){return new Zo(this.topNode,t)}cursorAt(t,e=0,i=0){let n=mo.get(this)||this.topNode,s=new Zo(n);return s.moveTo(t,e),mo.set(this,s._tree),s}get topNode(){return new ko(this,0,0,null)}resolve(t,e=0){let i=xo(mo.get(this)||this.topNode,t,e,!1);return mo.set(this,i),i}resolveInner(t,e=0){let i=xo(go.get(this)||this.topNode,t,e,!0);return go.set(this,i),i}iterate(t){let{enter:e,leave:i,from:n=0,to:s=this.length}=t;for(let r=this.cursor((t.mode||0)|Qo.IncludeAnonymous);;){let t=!1;if(r.from<=s&&r.to>=n&&(r.type.isAnonymous||!1!==e(r))){if(r.firstChild())continue;t=!0}for(;t&&i&&!r.type.isAnonymous&&i(r),!r.nextSibling();){if(!r.parent())return;t=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Uo(Oo.none,this.children,this.positions,0,this.children.length,0,this.length,((t,e,i)=>new bo(this.type,t,e,i,this.propValues)),t.makeTree||((t,e,i)=>new bo(Oo.none,t,e,i)))}static build(t){return function(t){var e;let{buffer:i,nodeSet:n,maxBufferLength:s=ao,reused:r=[],minRepeatType:o=n.types.length}=t,l=Array.isArray(i)?new So(i,i.length):i,a=n.types,h=0,c=0;function u(t,e,i,g,Q){let{id:b,start:S,end:y,size:w}=l,v=c;for(;w<0;){if(l.next(),-1==w){let e=r[b];return i.push(e),void g.push(S-t)}if(-3==w)return void(h=b);if(-4==w)return void(c=b);throw new RangeError(`Unrecognized record size: ${w}`)}let x,k,$=a[b],T=S-t;if(y-S<=s&&(k=p(l.pos-e,Q))){let e=new Uint16Array(k.size-k.skip),i=l.pos-k.size,s=e.length;for(;l.pos>i;)s=m(k.start,e,s);x=new yo(e,y-k.start,n),T=k.start-t}else{let t=l.pos-w;l.next();let e=[],i=[],n=b>=o?b:-1,r=0,a=y;for(;l.pos>t;)n>=0&&l.id==n&&l.size>=0?(l.end<=a-s&&(O(e,i,S,r,l.end,a,n,v),r=e.length,a=l.end),l.next()):u(S,t,e,i,n);if(n>=0&&r>0&&r<e.length&&O(e,i,S,r,S,a,n,v),e.reverse(),i.reverse(),n>-1&&r>0){let t=f($);x=Uo($,e,i,0,e.length,0,y-S,t,t)}else x=d($,e,i,y-S,v-y)}i.push(x),g.push(T)}function f(t){return(e,i,n)=>{let s,r,o=0,l=e.length-1;if(l>=0&&(s=e[l])instanceof bo){if(!l&&s.type==t&&s.length==n)return s;(r=s.prop(uo.lookAhead))&&(o=i[l]+s.length+r)}return d(t,e,i,n,o)}}function O(t,e,i,s,r,o,l,a){let h=[],c=[];for(;t.length>s;)h.push(t.pop()),c.push(e.pop()+i-r);t.push(d(n.types[l],h,c,o-r,a-o)),e.push(r-i)}function d(t,e,i,n,s=0,r){if(h){let t=[uo.contextHash,h];r=r?[t].concat(r):[t]}if(s>25){let t=[uo.lookAhead,s];r=r?[t].concat(r):[t]}return new bo(t,e,i,n,r)}function p(t,e){let i=l.fork(),n=0,r=0,a=0,h=i.end-s,c={size:0,start:0,skip:0};t:for(let s=i.pos-t;i.pos>s;){let t=i.size;if(i.id==e&&t>=0){c.size=n,c.start=r,c.skip=a,a+=4,n+=4,i.next();continue}let l=i.pos-t;if(t<0||l<s||i.start<h)break;let u=i.id>=o?4:0,f=i.start;for(i.next();i.pos>l;){if(i.size<0){if(-3!=i.size)break t;u+=4}else i.id>=o&&(u+=4);i.next()}r=f,n+=t,a+=u}return(e<0||n==t)&&(c.size=n,c.start=r,c.skip=a),c.size>4?c:void 0}function m(t,e,i){let{id:n,start:s,end:r,size:a}=l;if(l.next(),a>=0&&n<o){let o=i;if(a>4){let n=l.pos-(a-4);for(;l.pos>n;)i=m(t,e,i)}e[--i]=o,e[--i]=r-t,e[--i]=s-t,e[--i]=n}else-3==a?h=n:-4==a&&(c=n);return i}let g=[],Q=[];for(;l.pos>0;)u(t.start||0,t.bufferStart||0,g,Q,-1);let b=null!==(e=t.length)&&void 0!==e?e:g.length?Q[0]+g[0].length:0;return new bo(a[t.topID],g.reverse(),Q.reverse(),b)}(t)}}bo.empty=new bo(Oo.none,[],[],0);class So{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new So(this.buffer,this.index)}}class yo{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return Oo.none}toString(){let t=[];for(let e=0;e<this.buffer.length;)t.push(this.childString(e)),e=this.buffer[e+3];return t.join(",")}childString(t){let e=this.buffer[t],i=this.buffer[t+3],n=this.set.types[e],s=n.name;if(/\W/.test(s)&&!n.isError&&(s=JSON.stringify(s)),i==(t+=4))return s;let r=[];for(;t<i;)r.push(this.childString(t)),t=this.buffer[t+3];return s+"("+r.join(",")+")"}findChild(t,e,i,n,s){let{buffer:r}=this,o=-1;for(let l=t;l!=e&&!(wo(s,n,r[l+1],r[l+2])&&(o=l,i>0));l=r[l+3]);return o}slice(t,e,i){let n=this.buffer,s=new Uint16Array(e-t),r=0;for(let o=t,l=0;o<e;){s[l++]=n[o++],s[l++]=n[o++]-i;let e=s[l++]=n[o++]-i;s[l++]=n[o++]-t,r=Math.max(r,e)}return new yo(s,r,this.set)}}function wo(t,e,i,n){switch(t){case-2:return i<e;case-1:return n>=e&&i<e;case 0:return i<e&&n>e;case 1:return i<=e&&n>e;case 2:return n>e;case 4:return!0}}function vo(t,e){let i=t.childBefore(e);for(;i;){let e=i.lastChild;if(!e||e.to!=i.to)break;e.type.isError&&e.from==e.to?(t=i,i=e.prevSibling):i=e}return t}function xo(t,e,i,n){for(var s;t.from==t.to||(i<1?t.from>=e:t.from>e)||(i>-1?t.to<=e:t.to<e);){let e=!n&&t instanceof ko&&t.index<0?null:t.parent;if(!e)return t;t=e}let r=n?0:Qo.IgnoreOverlays;if(n)for(let n=t,o=n.parent;o;n=o,o=n.parent)n instanceof ko&&n.index<0&&(null===(s=o.enter(e,i,r))||void 0===s?void 0:s.from)!=n.from&&(t=o);for(;;){let n=t.enter(e,i,r);if(!n)return t;t=n}}class ko{constructor(t,e,i,n){this._tree=t,this.from=e,this.index=i,this._parent=n}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(t,e,i,n,s=0){for(let r=this;;){for(let{children:o,positions:l}=r._tree,a=e>0?o.length:-1;t!=a;t+=e){let a=o[t],h=l[t]+r.from;if(wo(n,i,h,h+a.length))if(a instanceof yo){if(s&Qo.ExcludeBuffers)continue;let o=a.findChild(0,a.buffer.length,e,i-h,n);if(o>-1)return new Co(new Po(r,a,t,h),null,o)}else if(s&Qo.IncludeAnonymous||!a.type.isAnonymous||Ao(a)){let o;if(!(s&Qo.IgnoreMounts)&&a.props&&(o=a.prop(uo.mounted))&&!o.overlay)return new ko(o.tree,h,t,r);let l=new ko(a,h,t,r);return s&Qo.IncludeAnonymous||!l.type.isAnonymous?l:l.nextChild(e<0?a.children.length-1:0,e,i,n)}}if(s&Qo.IncludeAnonymous||!r.type.isAnonymous)return null;if(t=r.index>=0?r.index+e:e<0?-1:r._parent._tree.children.length,r=r._parent,!r)return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}enter(t,e,i=0){let n;if(!(i&Qo.IgnoreOverlays)&&(n=this._tree.prop(uo.mounted))&&n.overlay){let i=t-this.from;for(let{from:t,to:s}of n.overlay)if((e>0?t<=i:t<i)&&(e<0?s>=i:s>i))return new ko(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}cursor(t=0){return new Zo(this,t)}get tree(){return this._tree}toTree(){return this._tree}resolve(t,e=0){return xo(this,t,e,!1)}resolveInner(t,e=0){return xo(this,t,e,!0)}enterUnfinishedNodesBefore(t){return vo(this,t)}getChild(t,e=null,i=null){let n=$o(this,t,e,i);return n.length?n[0]:null}getChildren(t,e=null,i=null){return $o(this,t,e,i)}toString(){return this._tree.toString()}get node(){return this}matchContext(t){return To(this,t)}}function $o(t,e,i,n){let s=t.cursor(),r=[];if(!s.firstChild())return r;if(null!=i)for(;!s.type.is(i);)if(!s.nextSibling())return r;for(;;){if(null!=n&&s.type.is(n))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return null==n?r:[]}}function To(t,e,i=e.length-1){for(let n=t.parent;i>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[i]&&e[i]!=n.name)return!1;i--}}return!0}class Po{constructor(t,e,i,n){this.parent=t,this.buffer=e,this.index=i,this.start=n}}class Co{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:n}=this.context,s=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.context.start,i);return s<0?null:new Co(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}enter(t,e,i=0){if(i&Qo.ExcludeBuffers)return null;let{buffer:n}=this.context,s=n.findChild(this.index+4,n.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return s<0?null:new Co(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new Co(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new Co(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}cursor(t=0){return new Zo(this,t)}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,n=this.index+4,s=i.buffer[this.index+3];if(s>n){let r=i.buffer[this.index+1];t.push(i.slice(n,s,r)),e.push(0)}return new bo(this.type,t,e,this.to-this.from)}resolve(t,e=0){return xo(this,t,e,!1)}resolveInner(t,e=0){return xo(this,t,e,!0)}enterUnfinishedNodesBefore(t){return vo(this,t)}toString(){return this.context.buffer.childString(this.index)}getChild(t,e=null,i=null){let n=$o(this,t,e,i);return n.length?n[0]:null}getChildren(t,e=null,i=null){return $o(this,t,e,i)}get node(){return this}matchContext(t){return To(this,t)}}class Zo{get name(){return this.type.name}constructor(t,e=0){if(this.mode=e,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,t instanceof ko)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let e=t._parent;e;e=e._parent)this.stack.unshift(e.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return!!t&&(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0)}yieldBuf(t,e){this.index=t;let{start:i,buffer:n}=this.buffer;return this.type=e||n.set.types[n.buffer[t]],this.from=i+n.buffer[t+1],this.to=i+n.buffer[t+2],!0}yield(t){return!!t&&(t instanceof ko?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)))}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:n}=this.buffer,s=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.buffer.start,i);return!(s<0)&&(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?!(i&Qo.ExcludeBuffers)&&this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&Qo.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&Qo.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return!!this._tree._parent&&this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode));let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let t=i<0?0:this.stack[i]+4;if(this.index!=t)return this.yieldBuf(e.findChild(t,this.index,-1,0,4))}else{let t=e.buffer[this.index+3];if(t<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(t)}return i<0&&this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode))}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:n}=this;if(n){if(t>0){if(this.index<n.buffer.buffer.length)return!1}else for(let t=0;t<this.index;t++)if(n.buffer.buffer[t+3]<this.index)return!1;({index:e,parent:i}=n)}else({index:e,_parent:i}=this._tree);for(;i;({index:e,_parent:i}=i))if(e>-1)for(let n=e+t,s=t<0?-1:i._tree.children.length;n!=s;n+=t){let t=i._tree.children[n];if(this.mode&Qo.IncludeAnonymous||t instanceof yo||!t.type.isAnonymous||Ao(t))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to<t))&&this.parent(););for(;this.enterChild(1,t,e););return this}get node(){if(!this.buffer)return this._tree;let t=this.bufferNode,e=null,i=0;if(t&&t.context==this.buffer)t:for(let n=this.index,s=this.stack.length;s>=0;){for(let r=t;r;r=r._parent)if(r.index==n){if(n==this.index)return r;e=r,i=s+1;break t}n=this.stack[--s]}for(let t=i;t<this.stack.length;t++)e=new Co(this.buffer,e,this.stack[t]);return this.bufferNode=new Co(this.buffer,e,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(t,e){for(let i=0;;){let n=!1;if(this.type.isAnonymous||!1!==t(this)){if(this.firstChild()){i++;continue}this.type.isAnonymous||(n=!0)}for(;n&&e&&e(this),n=this.type.isAnonymous,!this.nextSibling();){if(!i)return;this.parent(),i--,n=!0}}}matchContext(t){if(!this.buffer)return To(this.node,t);let{buffer:e}=this.buffer,{types:i}=e.set;for(let n=t.length-1,s=this.stack.length-1;n>=0;s--){if(s<0)return To(this.node,t,n);let r=i[e.buffer[this.stack[s]]];if(!r.isAnonymous){if(t[n]&&t[n]!=r.name)return!1;n--}}return!0}}function Ao(t){return t.children.some((t=>t instanceof yo||!t.type.isAnonymous||Ao(t)))}const Ro=new WeakMap;function Xo(t,e){if(!t.isAnonymous||e instanceof yo||e.type!=t)return 1;let i=Ro.get(e);if(null==i){i=1;for(let n of e.children){if(n.type!=t||!(n instanceof bo)){i=1;break}i+=Xo(t,n)}Ro.set(e,i)}return i}function Uo(t,e,i,n,s,r,o,l,a){let h=0;for(let i=n;i<s;i++)h+=Xo(t,e[i]);let c=Math.ceil(1.5*h/8),u=[],f=[];return function e(i,n,s,o,l){for(let h=s;h<o;){let s=h,O=n[h],d=Xo(t,i[h]);for(h++;h<o;h++){let e=Xo(t,i[h]);if(d+e>=c)break;d+=e}if(h==s+1){if(d>c){let t=i[s];e(t.children,t.positions,0,t.children.length,n[s]+l);continue}u.push(i[s])}else{let e=n[h-1]+i[h-1].length-O;u.push(Uo(t,i,n,s,h,O,e,null,a))}f.push(O+l-r)}}(e,i,n,s,0),(l||a)(u,f,o)}class qo{constructor(){this.map=new WeakMap}setBuffer(t,e,i){let n=this.map.get(t);n||this.map.set(t,n=new Map),n.set(e,i)}getBuffer(t,e){let i=this.map.get(t);return i&&i.get(e)}set(t,e){t instanceof Co?this.setBuffer(t.context.buffer,t.index,e):t instanceof ko&&this.map.set(t.tree,e)}get(t){return t instanceof Co?this.getBuffer(t.context.buffer,t.index):t instanceof ko?this.map.get(t.tree):void 0}cursorSet(t,e){t.buffer?this.setBuffer(t.buffer.buffer,t.index,e):this.map.set(t.tree,e)}cursorGet(t){return t.buffer?this.getBuffer(t.buffer.buffer,t.index):this.map.get(t.tree)}}class Vo{constructor(t,e,i,n,s=!1,r=!1){this.from=t,this.to=e,this.tree=i,this.offset=n,this.open=(s?1:0)|(r?2:0)}get openStart(){return(1&this.open)>0}get openEnd(){return(2&this.open)>0}static addTree(t,e=[],i=!1){let n=[new Vo(0,t.length,t,0,!1,i)];for(let i of e)i.to>t.length&&n.push(i);return n}static applyChanges(t,e,i=128){if(!e.length)return t;let n=[],s=1,r=t.length?t[0]:null;for(let o=0,l=0,a=0;;o++){let h=o<e.length?e[o]:null,c=h?h.fromA:1e9;if(c-l>=i)for(;r&&r.from<c;){let e=r;if(l>=e.from||c<=e.to||a){let t=Math.max(e.from,l)-a,i=Math.min(e.to,c)-a;e=t>=i?null:new Vo(t,i,e.tree,e.offset+a,o>0,!!h)}if(e&&n.push(e),r.to>c)break;r=s<t.length?t[s++]:null}if(!h)break;l=h.toA,a=h.toA-h.toB}return n}}class _o{startParse(t,e,i){return"string"==typeof t&&(t=new Mo(t)),i=i?i.length?i.map((t=>new co(t.from,t.to))):[new co(0,0)]:[new co(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let n=this.startParse(t,e,i);for(;;){let t=n.advance();if(t)return t}}}class Mo{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}}new uo({perNode:!0});let Do=0;class jo{constructor(t,e,i){this.set=t,this.base=e,this.modified=i,this.id=Do++}static define(t){if(null==t?void 0:t.base)throw new Error("Can not derive from a modified tag");let e=new jo([],null,[]);if(e.set.push(e),t)for(let i of t.set)e.set.push(i);return e}static defineModifier(){let t=new Eo;return e=>e.modified.indexOf(t)>-1?e:Eo.get(e.base||e,e.modified.concat(t).sort(((t,e)=>t.id-e.id)))}}let Wo=0;class Eo{constructor(){this.instances=[],this.id=Wo++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find((i=>{return i.base==t&&(n=e,s=i.modified,n.length==s.length&&n.every(((t,e)=>t==s[e])));var n,s}));if(i)return i;let n=[],s=new jo(n,t,e);for(let t of e)t.instances.push(s);let r=function(t){let e=[[]];for(let i=0;i<t.length;i++)for(let n=0,s=e.length;n<s;n++)e.push(e[n].concat(t[i]));return e.sort(((t,e)=>e.length-t.length))}(e);for(let e of t.set)if(!e.modified.length)for(let t of r)n.push(Eo.get(e,t));return s}}function Go(t){let e=Object.create(null);for(let i in t){let n=t[i];Array.isArray(n)||(n=[n]);for(let t of i.split(" "))if(t){let i=[],s=2,r=t;for(let e=0;;){if("..."==r&&e>0&&e+3==t.length){s=1;break}let n=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(r);if(!n)throw new RangeError("Invalid path: "+t);if(i.push("*"==n[0]?"":'"'==n[0][0]?JSON.parse(n[0]):n[0]),e+=n[0].length,e==t.length)break;let o=t[e++];if(e==t.length&&"!"==o){s=0;break}if("/"!=o)throw new RangeError("Invalid path: "+t);r=t.slice(e)}let o=i.length-1,l=i[o];if(!l)throw new RangeError("Invalid path: "+t);let a=new zo(n,s,o>0?i.slice(0,o):null);e[l]=a.sort(e[l])}}return Bo.add(e)}const Bo=new uo;class zo{constructor(t,e,i,n){this.tags=t,this.mode=e,this.context=i,this.next=n}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(t){return!t||t.depth<this.depth?(this.next=t,this):(t.next=this.sort(t.next),t)}get depth(){return this.context?this.context.length:0}}function No(t,e){let i=Object.create(null);for(let e of t)if(Array.isArray(e.tag))for(let t of e.tag)i[t.id]=e.class;else i[e.tag.id]=e.class;let{scope:n,all:s=null}=e||{};return{style:t=>{let e=s;for(let n of t)for(let t of n.set){let n=i[t.id];if(n){e=e?e+" "+n:n;break}}return e},scope:n}}function Io(t,e,i,n=0,s=t.length){let r=new Lo(n,Array.isArray(e)?e:[e],i);r.highlightRange(t.cursor(),n,s,"",r.highlighters),r.flush(s)}zo.empty=new zo([],2,null);class Lo{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,n,s){let{type:r,from:o,to:l}=t;if(o>=i||l<=e)return;r.isTop&&(s=this.highlighters.filter((t=>!t.scope||t.scope(r))));let a=n,h=function(t){let e=t.type.prop(Bo);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}(t)||zo.empty,c=function(t,e){let i=null;for(let n of t){let t=n.style(e);t&&(i=i?i+" "+t:t)}return i}(s,h.tags);if(c&&(a&&(a+=" "),a+=c,1==h.mode&&(n+=(n?" ":"")+c)),this.startSpan(t.from,a),h.opaque)return;let u=t.tree&&t.tree.prop(uo.mounted);if(u&&u.overlay){let r=t.node.enter(u.overlay[0].from+o,1),h=this.highlighters.filter((t=>!t.scope||t.scope(u.tree.type))),c=t.firstChild();for(let f=0,O=o;;f++){let d=f<u.overlay.length?u.overlay[f]:null,p=d?d.from+o:l,m=Math.max(e,O),g=Math.min(i,p);if(m<g&&c)for(;t.from<g&&(this.highlightRange(t,m,g,n,s),this.startSpan(Math.min(g,t.to),a),!(t.to>=p)&&t.nextSibling()););if(!d||p>i)break;O=d.to+o,O>e&&(this.highlightRange(r.cursor(),Math.max(e,d.from+o),Math.min(i,O),n,h),this.startSpan(O,a))}c&&t.parent()}else if(t.firstChild()){do{if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,n,s),this.startSpan(Math.min(i,t.to),a)}}while(t.nextSibling());t.parent()}}}const Yo=jo.define,Fo=Yo(),Ho=Yo(),Jo=Yo(Ho),Ko=Yo(Ho),tl=Yo(),el=Yo(tl),il=Yo(tl),nl=Yo(),sl=Yo(nl),rl=Yo(),ol=Yo(),ll=Yo(),al=Yo(ll),hl=Yo(),cl={comment:Fo,lineComment:Yo(Fo),blockComment:Yo(Fo),docComment:Yo(Fo),name:Ho,variableName:Yo(Ho),typeName:Jo,tagName:Yo(Jo),propertyName:Ko,attributeName:Yo(Ko),className:Yo(Ho),labelName:Yo(Ho),namespace:Yo(Ho),macroName:Yo(Ho),literal:tl,string:el,docString:Yo(el),character:Yo(el),attributeValue:Yo(el),number:il,integer:Yo(il),float:Yo(il),bool:Yo(tl),regexp:Yo(tl),escape:Yo(tl),color:Yo(tl),url:Yo(tl),keyword:rl,self:Yo(rl),null:Yo(rl),atom:Yo(rl),unit:Yo(rl),modifier:Yo(rl),operatorKeyword:Yo(rl),controlKeyword:Yo(rl),definitionKeyword:Yo(rl),moduleKeyword:Yo(rl),operator:ol,derefOperator:Yo(ol),arithmeticOperator:Yo(ol),logicOperator:Yo(ol),bitwiseOperator:Yo(ol),compareOperator:Yo(ol),updateOperator:Yo(ol),definitionOperator:Yo(ol),typeOperator:Yo(ol),controlOperator:Yo(ol),punctuation:ll,separator:Yo(ll),bracket:al,angleBracket:Yo(al),squareBracket:Yo(al),paren:Yo(al),brace:Yo(al),content:nl,heading:sl,heading1:Yo(sl),heading2:Yo(sl),heading3:Yo(sl),heading4:Yo(sl),heading5:Yo(sl),heading6:Yo(sl),contentSeparator:Yo(nl),list:Yo(nl),quote:Yo(nl),emphasis:Yo(nl),strong:Yo(nl),link:Yo(nl),monospace:Yo(nl),strikethrough:Yo(nl),inserted:Yo(),deleted:Yo(),changed:Yo(),invalid:Yo(),meta:hl,documentMeta:Yo(hl),annotation:Yo(hl),processingInstruction:Yo(hl),definition:jo.defineModifier(),constant:jo.defineModifier(),function:jo.defineModifier(),standard:jo.defineModifier(),local:jo.defineModifier(),special:jo.defineModifier()};var ul;No([{tag:cl.link,class:"tok-link"},{tag:cl.heading,class:"tok-heading"},{tag:cl.emphasis,class:"tok-emphasis"},{tag:cl.strong,class:"tok-strong"},{tag:cl.keyword,class:"tok-keyword"},{tag:cl.atom,class:"tok-atom"},{tag:cl.bool,class:"tok-bool"},{tag:cl.url,class:"tok-url"},{tag:cl.labelName,class:"tok-labelName"},{tag:cl.inserted,class:"tok-inserted"},{tag:cl.deleted,class:"tok-deleted"},{tag:cl.literal,class:"tok-literal"},{tag:cl.string,class:"tok-string"},{tag:cl.number,class:"tok-number"},{tag:[cl.regexp,cl.escape,cl.special(cl.string)],class:"tok-string2"},{tag:cl.variableName,class:"tok-variableName"},{tag:cl.local(cl.variableName),class:"tok-variableName tok-local"},{tag:cl.definition(cl.variableName),class:"tok-variableName tok-definition"},{tag:cl.special(cl.variableName),class:"tok-variableName2"},{tag:cl.definition(cl.propertyName),class:"tok-propertyName tok-definition"},{tag:cl.typeName,class:"tok-typeName"},{tag:cl.namespace,class:"tok-namespace"},{tag:cl.className,class:"tok-className"},{tag:cl.macroName,class:"tok-macroName"},{tag:cl.propertyName,class:"tok-propertyName"},{tag:cl.operator,class:"tok-operator"},{tag:cl.comment,class:"tok-comment"},{tag:cl.meta,class:"tok-meta"},{tag:cl.invalid,class:"tok-invalid"},{tag:cl.punctuation,class:"tok-punctuation"}]);const fl=new uo;class Ol{constructor(t,e,i=[],n=""){this.data=t,this.name=n,vt.prototype.hasOwnProperty("tree")||Object.defineProperty(vt.prototype,"tree",{get(){return ml(this)}}),this.parser=e,this.extension=[kl.of(this),vt.languageData.of(((t,e,i)=>t.facet(dl(t,e,i))))].concat(i)}isActiveAt(t,e,i=-1){return dl(t,e,i)==this.data}findRegions(t){let e=t.facet(kl);if((null==e?void 0:e.data)==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],n=(t,e)=>{if(t.prop(fl)==this.data)return void i.push({from:e,to:e+t.length});let s=t.prop(uo.mounted);if(s){if(s.tree.prop(fl)==this.data){if(s.overlay)for(let t of s.overlay)i.push({from:t.from+e,to:t.to+e});else i.push({from:e,to:e+t.length});return}if(s.overlay){let t=i.length;if(n(s.tree,s.overlay[0].from+e),i.length>t)return}}for(let i=0;i<t.children.length;i++){let s=t.children[i];s instanceof bo&&n(s,t.positions[i]+e)}};return n(ml(t),0),i}get allowsNesting(){return!0}}function dl(t,e,i){let n=t.facet(kl);if(!n)return null;let s=n.data;if(n.allowsNesting)for(let n=ml(t).topNode;n;n=n.enter(e,i,Qo.ExcludeBuffers))s=n.type.prop(fl)||s;return s}Ol.setState=ut.define();class pl extends Ol{constructor(t,e,i){super(t,e,[],i),this.parser=e}static define(t){let e=(i=t.languageData,q.define({combine:i?t=>t.concat(i):void 0}));var i;return new pl(e,t.parser.configure({props:[fl.add((t=>t.isTop?e:void 0))]}),t.name)}configure(t,e){return new pl(this.data,this.parser.configure(t),e||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function ml(t){let e=t.field(Ol.state,!1);return e?e.tree:bo.empty}class gl{constructor(t,e=t.length){this.doc=t,this.length=e,this.cursorPos=0,this.string="",this.cursor=t.iter()}syncTo(t){return this.string=this.cursor.next(t-this.cursorPos).value,this.cursorPos=t+this.string.length,this.cursorPos-this.string.length}chunk(t){return this.syncTo(t),this.string}get lineChunks(){return!0}read(t,e){let i=this.cursorPos-this.string.length;return t<i||e>=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}}let Ql=null;class bl{constructor(t,e,i=[],n,s,r,o,l){this.parser=t,this.state=e,this.fragments=i,this.tree=n,this.treeLen=s,this.viewport=r,this.skipped=o,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new bl(t,e,[],bo.empty,0,i,[],null)}startParse(){return this.parser.startParse(new gl(this.state.doc),this.fragments)}work(t,e){return null!=e&&e>=this.state.doc.length&&(e=void 0),this.tree!=bo.empty&&this.isDone(null!=e?e:this.state.doc.length)?(this.takeTree(),!0):this.withContext((()=>{var i;if("number"==typeof t){let e=Date.now()+t;t=()=>Date.now()>e}for(this.parse||(this.parse=this.startParse()),null!=e&&(null==this.parse.stoppedAt||this.parse.stoppedAt>e)&&e<this.state.doc.length&&this.parse.stopAt(e);;){let n=this.parse.advance();if(n){if(this.fragments=this.withoutTempSkipped(Vo.addTree(n,this.fragments,null!=this.parse.stoppedAt)),this.treeLen=null!==(i=this.parse.stoppedAt)&&void 0!==i?i:this.state.doc.length,this.tree=n,this.parse=null,!(this.treeLen<(null!=e?e:this.state.doc.length)))return!0;this.parse=this.startParse()}if(t())return!1}}))}takeTree(){let t,e;this.parse&&(t=this.parse.parsedPos)>=this.treeLen&&((null==this.parse.stoppedAt||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext((()=>{for(;!(e=this.parse.advance()););})),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Vo.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Ql;Ql=this;try{return t()}finally{Ql=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=Sl(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:n,treeLen:s,viewport:r,skipped:o}=this;if(this.takeTree(),!t.empty){let e=[];if(t.iterChangedRanges(((t,i,n,s)=>e.push({fromA:t,toA:i,fromB:n,toB:s}))),i=Vo.applyChanges(i,e),n=bo.empty,s=0,r={from:t.mapPos(r.from,-1),to:t.mapPos(r.to,1)},this.skipped.length){o=[];for(let e of this.skipped){let i=t.mapPos(e.from,1),n=t.mapPos(e.to,-1);i<n&&o.push({from:i,to:n})}}}return new bl(this.parser,e,i,n,s,r,o,this.scheduleOn)}updateViewport(t){if(this.viewport.from==t.from&&this.viewport.to==t.to)return!1;this.viewport=t;let e=this.skipped.length;for(let e=0;e<this.skipped.length;e++){let{from:i,to:n}=this.skipped[e];i<t.to&&n>t.from&&(this.fragments=Sl(this.fragments,i,n),this.skipped.splice(e--,1))}return!(this.skipped.length>=e)&&(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends _o{createParse(e,i,n){let s=n[0].from,r=n[n.length-1].to;return{parsedPos:s,advance(){let e=Ql;if(e){for(let t of n)e.tempSkipped.push(t);t&&(e.scheduleOn=e.scheduleOn?Promise.all([e.scheduleOn,t]):t)}return this.parsedPos=r,new bo(Oo.none,[],[],r-s)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&0==e[0].from&&e[0].to>=t}static get(){return Ql}}function Sl(t,e,i){return Vo.applyChanges(t,[{fromA:e,toA:i,fromB:e,toB:i}])}class yl{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new yl(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=bl.create(t.facet(kl).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new yl(i)}}Ol.state=E.define({create:yl.init,update(t,e){for(let t of e.effects)if(t.is(Ol.setState))return t.value;return e.startState.facet(kl)!=e.state.facet(kl)?yl.init(e.state):t.apply(e)}});let wl=t=>{let e=setTimeout((()=>t()),500);return()=>clearTimeout(e)};"undefined"!=typeof requestIdleCallback&&(wl=t=>{let e=-1,i=setTimeout((()=>{e=requestIdleCallback(t,{timeout:400})}),100);return()=>e<0?clearTimeout(i):cancelIdleCallback(e)});const vl="undefined"!=typeof navigator&&(null===(ul=navigator.scheduling)||void 0===ul?void 0:ul.isInputPending)?()=>navigator.scheduling.isInputPending():null,xl=Ti.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(Ol.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),t.docChanged&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(Ol.state);e.tree==e.context.tree&&e.context.isDone(t.doc.length)||(this.working=wl(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnd<e&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=e+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:i,viewport:{to:n}}=this.view,s=i.field(Ol.state);if(s.tree==s.context.tree&&s.context.isDone(n+1e5))return;let r=Date.now()+Math.min(this.chunkBudget,100,t&&!vl?Math.max(25,t.timeRemaining()-5):1e9),o=s.context.treeLen<n&&i.doc.length>n+1e3,l=s.context.work((()=>vl&&vl()||Date.now()>r),n+(o?0:1e5));this.chunkBudget-=Date.now()-e,(l||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:Ol.setState.of(new yl(s.context))})),this.chunkBudget>0&&(!l||o)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then((()=>this.scheduleWork())).catch((t=>vi(this.view.state,t))).then((()=>this.workScheduled--)),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),kl=q.define({combine:t=>t.length?t[0]:null,enables:t=>[Ol.state,xl,Ps.contentAttributes.compute([t],(e=>{let i=e.facet(t);return i&&i.name?{"data-language":i.name}:{}}))]});class $l{constructor(t,e=[]){this.language=t,this.support=e,this.extension=[t,e]}}const Tl=q.define(),Pl=q.define({combine:t=>{if(!t.length)return"  ";if(!/^(?: +|\t+)$/.test(t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return t[0]}});function Cl(t){let e=t.facet(Pl);return 9==e.charCodeAt(0)?t.tabSize*e.length:e.length}function Zl(t,e){let i="",n=t.tabSize;if(9==t.facet(Pl).charCodeAt(0))for(;e>=n;)i+="\t",e-=n;for(let t=0;t<e;t++)i+=" ";return i}function Al(t,e){t instanceof vt&&(t=new Rl(t));for(let i of t.state.facet(Tl)){let n=i(t,e);if(void 0!==n)return n}let i=ml(t.state);return i?function(t,e,i){return ql(e.resolveInner(i).enterUnfinishedNodesBefore(i),i,t)}(t,i,e):null}class Rl{constructor(t,e={}){this.state=t,this.options=e,this.unit=Cl(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:n,simulateDoubleBreak:s}=this.options;return null!=n&&n>=i.from&&n<=i.to?s&&n==t?{text:"",from:t}:(e<0?n<t:n<=t)?{text:i.text.slice(n-i.from),from:n}:{text:i.text.slice(0,n-i.from),from:i.from}:i}textAfterPos(t,e=1){if(this.options.simulateDoubleBreak&&t==this.options.simulateBreak)return"";let{text:i,from:n}=this.lineAt(t,e);return i.slice(t-n,Math.min(i.length,t+100-n))}column(t,e=1){let{text:i,from:n}=this.lineAt(t,e),s=this.countColumn(i,t-n),r=this.options.overrideIndentation?this.options.overrideIndentation(n):-1;return r>-1&&(s+=r-this.countColumn(i,i.search(/\S|$/))),s}countColumn(t,e=t.length){return Wt(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:n}=this.lineAt(t,e),s=this.options.overrideIndentation;if(s){let t=s(n);if(t>-1)return t}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const Xl=new uo;function Ul(t){let e=t.type.prop(Xl);if(e)return e;let i,n=t.firstChild;if(n&&(i=n.type.prop(uo.closedBy))){let e=t.lastChild,n=e&&i.indexOf(e.name)>-1;return t=>jl(t,!0,1,void 0,n&&!function(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}(t)?e.from:void 0)}return null==t.parent?Vl:null}function ql(t,e,i){for(;t;t=t.parent){let n=Ul(t);if(n)return n(_l.create(i,e,t))}return null}function Vl(){return 0}class _l extends Rl{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.node=i}static create(t,e,i){return new _l(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){let t=this.state.doc.lineAt(this.node.from);for(;;){let e=this.node.resolve(t.from);for(;e.parent&&e.parent.from==e.from;)e=e.parent;if(Ml(e,this.node))break;t=this.state.doc.lineAt(e.from)}return this.lineIndent(t.from)}continue(){let t=this.node.parent;return t?ql(t,this.pos,this.base):0}}function Ml(t,e){for(let i=e;i;i=i.parent)if(t==i)return!0;return!1}function Dl({closing:t,align:e=!0,units:i=1}){return n=>jl(n,e,i,t)}function jl(t,e,i,n,s){let r=t.textAfter,o=r.match(/^\s*/)[0].length,l=n&&r.slice(o,o+n.length)==n||s==t.pos+o,a=e?function(t){let e=t.node,i=e.childAfter(e.from),n=e.lastChild;if(!i)return null;let s=t.options.simulateBreak,r=t.state.doc.lineAt(i.from),o=null==s||s<=r.from?r.to:Math.min(r.to,s);for(let t=i.to;;){let s=e.childAfter(t);if(!s||s==n)return null;if(!s.type.isSkipped)return s.from<o?i:null;t=s.to}}(t):null;return a?l?t.column(a.from):t.column(a.to):t.baseIndent+(l?0:t.unit*i)}function Wl({except:t,units:e=1}={}){return i=>{let n=t&&t.test(i.textAfter);return i.baseIndent+(n?0:e*i.unit)}}const El=q.define(),Gl=new uo;function Bl(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function zl(t,e,i){for(let n of t.facet(El)){let s=n(t,e,i);if(s)return s}return function(t,e,i){let n=ml(t);if(n.length<i)return null;let s=null;for(let r=n.resolveInner(i,1);r;r=r.parent){if(r.to<=i||r.from>i)continue;if(s&&r.from<e)break;let o=r.type.prop(Gl);if(o&&(r.to<n.length-50||n.length==t.doc.length||!Bl(r))){let n=o(r,t);n&&n.from<=i&&n.from>=e&&n.to>i&&(s=n)}}return s}(t,e,i)}function Nl(t,e){let i=e.mapPos(t.from,1),n=e.mapPos(t.to,-1);return i>=n?void 0:{from:i,to:n}}const Il=ut.define({map:Nl}),Ll=ut.define({map:Nl});function Yl(t){let e=[];for(let{head:i}of t.state.selection.ranges)e.some((t=>t.from<=i&&t.to>=i))||e.push(t.lineBlockAt(i));return e}const Fl=E.define({create:()=>ii.none,update(t,e){t=t.map(e.changes);for(let i of e.effects)i.is(Il)&&!Jl(t,i.value.from,i.value.to)?t=t.update({add:[ra.range(i.value.from,i.value.to)]}):i.is(Ll)&&(t=t.update({filter:(t,e)=>i.value.from!=t||i.value.to!=e,filterFrom:i.value.from,filterTo:i.value.to}));if(e.selection){let i=!1,{head:n}=e.selection.main;t.between(n,n,((t,e)=>{t<n&&e>n&&(i=!0)})),i&&(t=t.update({filterFrom:n,filterTo:n,filter:(t,e)=>e<=n||t>=n}))}return t},provide:t=>Ps.decorations.from(t),toJSON(t,e){let i=[];return t.between(0,e.doc.length,((t,e)=>{i.push(t,e)})),i},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let i=0;i<t.length;){let n=t[i++],s=t[i++];if("number"!=typeof n||"number"!=typeof s)throw new RangeError("Invalid JSON for fold state");e.push(ra.range(n,s))}return ii.set(e,!0)}});function Hl(t,e,i){var n;let s=null;return null===(n=t.field(Fl,!1))||void 0===n||n.between(e,i,((t,e)=>{(!s||s.from>t)&&(s={from:t,to:e})})),s}function Jl(t,e,i){let n=!1;return t.between(e,e,((t,s)=>{t==e&&s==i&&(n=!0)})),n}function Kl(t,e){return t.field(Fl,!1)?e:e.concat(ut.appendConfig.of(sa()))}function ta(t,e,i=!0){let n=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return Ps.announce.of(`${t.state.phrase(i?"Folded lines":"Unfolded lines")} ${n} ${t.state.phrase("to")} ${s}.`)}const ea=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:t=>{for(let e of Yl(t)){let i=zl(t.state,e.from,e.to);if(i)return t.dispatch({effects:Kl(t.state,[Il.of(i),ta(t,i)])}),!0}return!1}},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:t=>{if(!t.state.field(Fl,!1))return!1;let e=[];for(let i of Yl(t)){let n=Hl(t.state,i.from,i.to);n&&e.push(Ll.of(n),ta(t,n,!1))}return e.length&&t.dispatch({effects:e}),e.length>0}},{key:"Ctrl-Alt-[",run:t=>{let{state:e}=t,i=[];for(let n=0;n<e.doc.length;){let s=t.lineBlockAt(n),r=zl(e,s.from,s.to);r&&i.push(Il.of(r)),n=(r?t.lineBlockAt(r.to):s).to+1}return i.length&&t.dispatch({effects:Kl(t.state,i)}),!!i.length}},{key:"Ctrl-Alt-]",run:t=>{let e=t.state.field(Fl,!1);if(!e||!e.size)return!1;let i=[];return e.between(0,t.state.doc.length,((t,e)=>{i.push(Ll.of({from:t,to:e}))})),t.dispatch({effects:i}),!0}}],ia={placeholderDOM:null,placeholderText:"…"},na=q.define({combine:t=>xt(t,ia)});function sa(t){let e=[Fl,ha];return t&&e.push(na.of(t)),e}const ra=ii.replace({widget:new class extends ti{toDOM(t){let{state:e}=t,i=e.facet(na),n=e=>{let i=t.lineBlockAt(t.posAtDOM(e.target)),n=Hl(t.state,i.from,i.to);n&&t.dispatch({effects:Ll.of(n)}),e.preventDefault()};if(i.placeholderDOM)return i.placeholderDOM(t,n);let s=document.createElement("span");return s.textContent=i.placeholderText,s.setAttribute("aria-label",e.phrase("folded code")),s.title=e.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=n,s}}}),oa={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class la extends Zr{constructor(t,e){super(),this.config=t,this.open=e}eq(t){return this.config==t.config&&this.open==t.open}toDOM(t){if(this.config.markerDOM)return this.config.markerDOM(this.open);let e=document.createElement("span");return e.textContent=this.open?this.config.openText:this.config.closedText,e.title=t.state.phrase(this.open?"Fold line":"Unfold line"),e}}function aa(t={}){let e=Object.assign(Object.assign({},oa),t),i=new la(e,!0),n=new la(e,!1),s=Ti.fromClass(class{constructor(t){this.from=t.viewport.from,this.markers=this.buildMarkers(t)}update(t){(t.docChanged||t.viewportChanged||t.startState.facet(kl)!=t.state.facet(kl)||t.startState.field(Fl,!1)!=t.state.field(Fl,!1)||ml(t.startState)!=ml(t.state)||e.foldingChanged(t))&&(this.markers=this.buildMarkers(t.view))}buildMarkers(t){let e=new Zt;for(let s of t.viewportLineBlocks){let r=Hl(t.state,s.from,s.to)?n:zl(t.state,s.from,s.to)?i:null;r&&e.add(s.from,s.from,r)}return e.finish()}}),{domEventHandlers:r}=e;return[s,Ur({class:"cm-foldGutter",markers(t){var e;return(null===(e=t.plugin(s))||void 0===e?void 0:e.markers)||Ct.empty},initialSpacer:()=>new la(e,!1),domEventHandlers:Object.assign(Object.assign({},r),{click:(t,e,i)=>{if(r.click&&r.click(t,e,i))return!0;let n=Hl(t.state,e.from,e.to);if(n)return t.dispatch({effects:Ll.of(n)}),!0;let s=zl(t.state,e.from,e.to);return!!s&&(t.dispatch({effects:Il.of(s)}),!0)}})}),sa()]}const ha=Ps.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class ca{constructor(t,e){let i;function n(t){let e=Nt.newName();return(i||(i=Object.create(null)))["."+e]=t,e}this.specs=t;const s="string"==typeof e.all?e.all:e.all?n(e.all):void 0,r=e.scope;this.scope=r instanceof Ol?t=>t.prop(fl)==r.data:r?t=>t==r:void 0,this.style=No(t.map((t=>({tag:t.tag,class:t.class||n(Object.assign({},t,{tag:null}))}))),{all:s}).style,this.module=i?new Nt(i):null,this.themeType=e.themeType}static define(t,e){return new ca(t,e||{})}}const ua=q.define(),fa=q.define({combine:t=>t.length?[t[0]]:null});function Oa(t){let e=t.facet(ua);return e.length?e:t.facet(fa)}function da(t,e){let i,n=[ma];return t instanceof ca&&(t.module&&n.push(Ps.styleModule.of(t.module)),i=t.themeType),(null==e?void 0:e.fallback)?n.push(fa.of(t)):i?n.push(ua.computeN([Ps.darkTheme],(e=>e.facet(Ps.darkTheme)==("dark"==i)?[t]:[]))):n.push(ua.of(t)),n}class pa{constructor(t){this.markCache=Object.create(null),this.tree=ml(t.state),this.decorations=this.buildDeco(t,Oa(t.state))}update(t){let e=ml(t.state),i=Oa(t.state),n=i!=Oa(t.startState);e.length<t.view.viewport.to&&!n&&e.type==this.tree.type?this.decorations=this.decorations.map(t.changes):(e!=this.tree||t.viewportChanged||n)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i))}buildDeco(t,e){if(!e||!this.tree.length)return ii.none;let i=new Zt;for(let{from:n,to:s}of t.visibleRanges)Io(this.tree,e,((t,e,n)=>{i.add(t,e,this.markCache[n]||(this.markCache[n]=ii.mark({class:n})))}),n,s);return i.finish()}}const ma=L.high(Ti.fromClass(pa,{decorations:t=>t.decorations})),ga=ca.define([{tag:cl.meta,color:"#7a757a"},{tag:cl.link,textDecoration:"underline"},{tag:cl.heading,textDecoration:"underline",fontWeight:"bold"},{tag:cl.emphasis,fontStyle:"italic"},{tag:cl.strong,fontWeight:"bold"},{tag:cl.strikethrough,textDecoration:"line-through"},{tag:cl.keyword,color:"#708"},{tag:[cl.atom,cl.bool,cl.url,cl.contentSeparator,cl.labelName],color:"#219"},{tag:[cl.literal,cl.inserted],color:"#164"},{tag:[cl.string,cl.deleted],color:"#a11"},{tag:[cl.regexp,cl.escape,cl.special(cl.string)],color:"#e40"},{tag:cl.definition(cl.variableName),color:"#00f"},{tag:cl.local(cl.variableName),color:"#30a"},{tag:[cl.typeName,cl.namespace],color:"#085"},{tag:cl.className,color:"#167"},{tag:[cl.special(cl.variableName),cl.macroName],color:"#256"},{tag:cl.definition(cl.propertyName),color:"#00c"},{tag:cl.comment,color:"#940"},{tag:cl.invalid,color:"#f00"}]),Qa=Ps.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),ba="()[]{}",Sa=q.define({combine:t=>xt(t,{afterCursor:!0,brackets:ba,maxScanDistance:1e4,renderMatch:va})}),ya=ii.mark({class:"cm-matchingBracket"}),wa=ii.mark({class:"cm-nonmatchingBracket"});function va(t){let e=[],i=t.matched?ya:wa;return e.push(i.range(t.start.from,t.start.to)),t.end&&e.push(i.range(t.end.from,t.end.to)),e}const xa=E.define({create:()=>ii.none,update(t,e){if(!e.docChanged&&!e.selection)return t;let i=[],n=e.state.facet(Sa);for(let t of e.state.selection.ranges){if(!t.empty)continue;let s=Pa(e.state,t.head,-1,n)||t.head>0&&Pa(e.state,t.head-1,1,n)||n.afterCursor&&(Pa(e.state,t.head,1,n)||t.head<e.state.doc.length&&Pa(e.state,t.head+1,-1,n));s&&(i=i.concat(n.renderMatch(s,e.state)))}return ii.set(i,!0)},provide:t=>Ps.decorations.from(t)}),ka=[xa,Qa];function $a(t={}){return[Sa.of(t),ka]}function Ta(t,e,i){let n=t.prop(e<0?uo.openedBy:uo.closedBy);if(n)return n;if(1==t.name.length){let n=i.indexOf(t.name);if(n>-1&&n%2==(e<0?1:0))return[i[n+e]]}return null}function Pa(t,e,i,n={}){let s=n.maxScanDistance||1e4,r=n.brackets||ba,o=ml(t),l=o.resolveInner(e,i);for(let n=l;n;n=n.parent){let s=Ta(n.type,i,r);if(s&&n.from<n.to)return Ca(t,e,i,n,s,r)}return function(t,e,i,n,s,r,o){let l=i<0?t.sliceDoc(e-1,e):t.sliceDoc(e,e+1),a=o.indexOf(l);if(a<0||a%2==0!=i>0)return null;let h={from:i<0?e-1:e,to:i>0?e+1:e},c=t.doc.iterRange(e,i>0?t.doc.length:0),u=0;for(let t=0;!c.next().done&&t<=r;){let r=c.value;i<0&&(t+=r.length);let l=e+t*i;for(let t=i>0?0:r.length-1,e=i>0?r.length:-1;t!=e;t+=i){let e=o.indexOf(r[t]);if(!(e<0||n.resolveInner(l+t,1).type!=s))if(e%2==0==i>0)u++;else{if(1==u)return{start:h,end:{from:l+t,to:l+t+1},matched:e>>1==a>>1};u--}}i>0&&(t+=r.length)}return c.done?{start:h,matched:!1}:null}(t,e,i,o,l.type,s,r)}function Ca(t,e,i,n,s,r){let o=n.parent,l={from:n.from,to:n.to},a=0,h=null==o?void 0:o.cursor();if(h&&(i<0?h.childBefore(n.from):h.childAfter(n.to)))do{if(i<0?h.to<=n.from:h.from>=n.to){if(0==a&&s.indexOf(h.type.name)>-1&&h.from<h.to)return{start:l,end:{from:h.from,to:h.to},matched:!0};if(Ta(h.type,i,r))a++;else if(Ta(h.type,-i,r)){if(0==a)return{start:l,end:h.from==h.to?void 0:{from:h.from,to:h.to},matched:!1};a--}}}while(i<0?h.prevSibling():h.nextSibling());return{start:l,matched:!1}}const Za=Object.create(null),Aa=[Oo.none],Ra=[],Xa=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Xa[t]=qa(Za,e);function Ua(t,e){Ra.indexOf(t)>-1||(Ra.push(t),console.warn(e))}function qa(t,e){let i=null;for(let n of e.split(".")){let e=t[n]||cl[n];e?"function"==typeof e?i?i=e(i):Ua(n,`Modifier ${n} used at start of tag`):i?Ua(n,`Tag ${n} used as modifier`):i=e:Ua(n,`Unknown highlighting tag ${n}`)}if(!i)return 0;let n=e.replace(/ /g,"_"),s=Oo.define({id:Aa.length,name:n,props:[Go({[n]:i})]});return Aa.push(s),s.id}function Va(t,e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let s=t(e,i);return!!s&&(n(i.update(s)),!0)}}const _a=Va(Ea,0),Ma=Va(Wa,0),Da=Va(((t,e)=>Wa(t,e,function(t){let e=[];for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),s=i.to<=n.to?n:t.doc.lineAt(i.to),r=e.length-1;r>=0&&e[r].to>n.from?e[r].to=s.to:e.push({from:n.from,to:s.to})}return e}(e))),0);function ja(t,e=t.selection.main.head){let i=t.languageDataAt("commentTokens",e);return i.length?i[0]:{}}function Wa(t,e,i=e.selection.ranges){let n=i.map((t=>ja(e,t.from).block));if(!n.every((t=>t)))return null;let s=i.map(((t,i)=>function(t,{open:e,close:i},n,s){let r,o,l=t.sliceDoc(n-50,n),a=t.sliceDoc(s,s+50),h=/\s*$/.exec(l)[0].length,c=/^\s*/.exec(a)[0].length,u=l.length-h;if(l.slice(u-e.length,u)==e&&a.slice(c,c+i.length)==i)return{open:{pos:n-h,margin:h&&1},close:{pos:s+c,margin:c&&1}};s-n<=100?r=o=t.sliceDoc(n,s):(r=t.sliceDoc(n,n+50),o=t.sliceDoc(s-50,s));let f=/^\s*/.exec(r)[0].length,O=/\s*$/.exec(o)[0].length,d=o.length-O-i.length;return r.slice(f,f+e.length)==e&&o.slice(d,d+i.length)==i?{open:{pos:n+f+e.length,margin:/\s/.test(r.charAt(f+e.length))?1:0},close:{pos:s-O-i.length,margin:/\s/.test(o.charAt(d-1))?1:0}}:null}(e,n[i],t.from,t.to)));if(2!=t&&!s.every((t=>t)))return{changes:e.changes(i.map(((t,e)=>s[e]?[]:[{from:t.from,insert:n[e].open+" "},{from:t.to,insert:" "+n[e].close}])))};if(1!=t&&s.some((t=>t))){let t=[];for(let e,i=0;i<s.length;i++)if(e=s[i]){let s=n[i],{open:r,close:o}=e;t.push({from:r.pos-s.open.length,to:r.pos+r.margin},{from:o.pos-o.margin,to:o.pos+s.close.length})}return{changes:t}}return null}function Ea(t,e,i=e.selection.ranges){let n=[],s=-1;for(let{from:t,to:r}of i){let i=n.length,o=1e9;for(let i=t;i<=r;){let l=e.doc.lineAt(i);if(l.from>s&&(t==r||r>l.from)){s=l.from;let t=ja(e,i).line;if(!t)continue;let r=/^\s*/.exec(l.text)[0].length,a=r==l.length,h=l.text.slice(r,r+t.length)==t?r:-1;r<l.text.length&&r<o&&(o=r),n.push({line:l,comment:h,token:t,indent:r,empty:a,single:!1})}i=l.to+1}if(o<1e9)for(let t=i;t<n.length;t++)n[t].indent<n[t].line.text.length&&(n[t].indent=o);n.length==i+1&&(n[i].single=!0)}if(2!=t&&n.some((t=>t.comment<0&&(!t.empty||t.single)))){let t=[];for(let{line:e,token:i,indent:s,empty:r,single:o}of n)!o&&r||t.push({from:e.from+s,insert:i+" "});let i=e.changes(t);return{changes:i,selection:e.selection.map(i,1)}}if(1!=t&&n.some((t=>t.comment>=0))){let t=[];for(let{line:e,comment:i,token:s}of n)if(i>=0){let n=e.from+i,r=n+s.length;" "==e.text[r-e.from]&&r++,t.push({from:n,to:r})}return{changes:t}}return null}const Ga=at.define(),Ba=at.define(),za=q.define(),Na=q.define({combine:t=>xt(t,{minDepth:100,newGroupDelay:500},{minDepth:Math.max,newGroupDelay:Math.min})});const Ia=E.define({create:()=>hh.empty,update(t,e){let i=e.state.facet(Na),n=e.annotation(Ga);if(n){let s=e.docChanged?R.single(function(t){let e=0;return t.iterChangedRanges(((t,i)=>e=i)),e}(e.changes)):void 0,r=th.fromTransaction(e,s),o=n.side,l=0==o?t.undone:t.done;return l=r?eh(l,l.length,i.minDepth,r):sh(l,e.startState.selection),new hh(0==o?n.rest:l,0==o?l:n.rest)}let s=e.annotation(Ba);if("full"!=s&&"before"!=s||(t=t.isolate()),!1===e.annotation(ft.addToHistory))return e.changes.empty?t:t.addMapping(e.changes.desc);let r=th.fromTransaction(e),o=e.annotation(ft.time),l=e.annotation(ft.userEvent);return r?t=t.addChanges(r,o,l,i.newGroupDelay,i.minDepth):e.selection&&(t=t.addSelection(e.startState.selection,o,l,i.newGroupDelay)),"full"!=s&&"after"!=s||(t=t.isolate()),t},toJSON:t=>({done:t.done.map((t=>t.toJSON())),undone:t.undone.map((t=>t.toJSON()))}),fromJSON:t=>new hh(t.done.map(th.fromJSON),t.undone.map(th.fromJSON))});function La(t={}){return[Ia,Na.of(t),Ps.domEventHandlers({beforeinput(t,e){let i="historyUndo"==t.inputType?Fa:"historyRedo"==t.inputType?Ha:null;return!!i&&(t.preventDefault(),i(e))}})]}function Ya(t,e){return function({state:i,dispatch:n}){if(!e&&i.readOnly)return!1;let s=i.field(Ia,!1);if(!s)return!1;let r=s.pop(t,i,e);return!!r&&(n(r),!0)}}const Fa=Ya(0,!1),Ha=Ya(1,!1),Ja=Ya(0,!0),Ka=Ya(1,!0);class th{constructor(t,e,i,n,s){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=n,this.selectionsAfter=s}setSelAfter(t){return new th(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:null===(t=this.changes)||void 0===t?void 0:t.toJSON(),mapped:null===(e=this.mapped)||void 0===e?void 0:e.toJSON(),startSelection:null===(i=this.startSelection)||void 0===i?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map((t=>t.toJSON()))}}static fromJSON(t){return new th(t.changes&&x.fromJSON(t.changes),[],t.mapped&&v.fromJSON(t.mapped),t.startSelection&&R.fromJSON(t.startSelection),t.selectionsAfter.map(R.fromJSON))}static fromTransaction(t,e){let i=nh;for(let e of t.startState.facet(za)){let n=e(t);n.length&&(i=i.concat(n))}return!i.length&&t.changes.empty?null:new th(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,nh)}static selection(t){return new th(void 0,nh,void 0,void 0,t)}}function eh(t,e,i,n){let s=e+1>i+20?e-i-1:0,r=t.slice(s,e);return r.push(n),r}function ih(t,e){return t.length?e.length?t.concat(e):t:e}const nh=[];function sh(t,e){if(t.length){let i=t[t.length-1],n=i.selectionsAfter.slice(Math.max(0,i.selectionsAfter.length-200));return n.length&&n[n.length-1].eq(e)?t:(n.push(e),eh(t,t.length-1,1e9,i.setSelAfter(n)))}return[th.selection([e])]}function rh(t){let e=t[t.length-1],i=t.slice();return i[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),i}function oh(t,e){if(!t.length)return t;let i=t.length,n=nh;for(;i;){let s=lh(t[i-1],e,n);if(s.changes&&!s.changes.empty||s.effects.length){let e=t.slice(0,i);return e[i-1]=s,e}e=s.mapped,i--,n=s.selectionsAfter}return n.length?[th.selection(n)]:nh}function lh(t,e,i){let n=ih(t.selectionsAfter.length?t.selectionsAfter.map((t=>t.map(e))):nh,i);if(!t.changes)return th.selection(n);let s=t.changes.map(e),r=e.mapDesc(t.changes,!0),o=t.mapped?t.mapped.composeDesc(r):r;return new th(s,ut.mapEffects(t.effects,e),o,t.startSelection.map(r),n)}const ah=/^(input\.type|delete)($|\.)/;class hh{constructor(t,e,i=0,n){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=n}isolate(){return this.prevTime?new hh(this.done,this.undone):this}addChanges(t,e,i,n,s){let r=this.done,o=r[r.length-1];return r=o&&o.changes&&!o.changes.empty&&t.changes&&(!i||ah.test(i))&&(!o.selectionsAfter.length&&e-this.prevTime<n&&function(t,e){let i=[],n=!1;return t.iterChangedRanges(((t,e)=>i.push(t,e))),e.iterChangedRanges(((t,e,s,r)=>{for(let t=0;t<i.length;){let e=i[t++],o=i[t++];r>=e&&s<=o&&(n=!0)}})),n}(o.changes,t.changes)||"input.type.compose"==i)?eh(r,r.length-1,s,new th(t.changes.compose(o.changes),ih(t.effects,o.effects),o.mapped,o.startSelection,nh)):eh(r,r.length,s,t),new hh(r,nh,e,i)}addSelection(t,e,i,n){let s=this.done.length?this.done[this.done.length-1].selectionsAfter:nh;return s.length>0&&e-this.prevTime<n&&i==this.prevUserEvent&&i&&/^select($|\.)/.test(i)&&(r=s[s.length-1],o=t,r.ranges.length==o.ranges.length&&0===r.ranges.filter(((t,e)=>t.empty!=o.ranges[e].empty)).length)?this:new hh(sh(this.done,t),this.undone,e,i);var r,o}addMapping(t){return new hh(oh(this.done,t),oh(this.undone,t),this.prevTime,this.prevUserEvent)}pop(t,e,i){let n=0==t?this.done:this.undone;if(0==n.length)return null;let s=n[n.length-1];if(i&&s.selectionsAfter.length)return e.update({selection:s.selectionsAfter[s.selectionsAfter.length-1],annotations:Ga.of({side:t,rest:rh(n)}),userEvent:0==t?"select.undo":"select.redo",scrollIntoView:!0});if(s.changes){let i=1==n.length?nh:n.slice(0,n.length-1);return s.mapped&&(i=oh(i,s.mapped)),e.update({changes:s.changes,selection:s.startSelection,effects:s.effects,annotations:Ga.of({side:t,rest:i}),filter:!1,userEvent:0==t?"undo":"redo",scrollIntoView:!0})}return null}}hh.empty=new hh(nh,nh);const ch=[{key:"Mod-z",run:Fa,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Ha,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Ha,preventDefault:!0},{key:"Mod-u",run:Ja,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:Ka,preventDefault:!0}];function uh(t,e){return R.create(t.ranges.map(e),t.mainIndex)}function fh(t,e){return t.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function Oh({state:t,dispatch:e},i){let n=uh(t.selection,i);return!n.eq(t.selection)&&(e(fh(t,n)),!0)}function dh(t,e){return R.cursor(e?t.to:t.from)}function ph(t,e){return Oh(t,(i=>i.empty?t.moveByChar(i,e):dh(i,e)))}function mh(t){return t.textDirectionAt(t.state.selection.main.head)==_i.LTR}const gh=t=>ph(t,!mh(t)),Qh=t=>ph(t,mh(t));function bh(t,e){return Oh(t,(i=>i.empty?t.moveByGroup(i,e):dh(i,e)))}function Sh(t,e,i){if(e.type.prop(i))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function yh(t,e,i){let n,s,r=ml(t).resolveInner(e.head),o=i?uo.closedBy:uo.openedBy;for(let n=e.head;;){let e=i?r.childAfter(n):r.childBefore(n);if(!e)break;Sh(t,e,o)?r=e:n=i?e.to:e.from}return s=r.type.prop(o)&&(n=i?Pa(t,r.from,1):Pa(t,r.to,-1))&&n.matched?i?n.end.to:n.end.from:i?r.to:r.from,R.cursor(s,i?-1:1)}function wh(t,e){return Oh(t,(i=>{if(!i.empty)return dh(i,e);let n=t.moveVertically(i,e);return n.head!=i.head?n:t.moveToLineBoundary(i,e)}))}const vh=t=>wh(t,!1),xh=t=>wh(t,!0);function kh(t){return Math.max(t.defaultLineHeight,Math.min(t.dom.clientHeight,innerHeight)-5)}function $h(t,e){let{state:i}=t,n=uh(i.selection,(i=>i.empty?t.moveVertically(i,e,kh(t)):dh(i,e)));if(n.eq(i.selection))return!1;let s,r=t.coordsAtPos(i.selection.main.head),o=t.scrollDOM.getBoundingClientRect();return r&&r.top>o.top&&r.bottom<o.bottom&&r.top-o.top<=t.scrollDOM.scrollHeight-t.scrollDOM.scrollTop-t.scrollDOM.clientHeight&&(s=Ps.scrollIntoView(n.main.head,{y:"start",yMargin:r.top-o.top})),t.dispatch(fh(i,n),{effects:s}),!0}const Th=t=>$h(t,!1),Ph=t=>$h(t,!0);function Ch(t,e,i){let n=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,i);if(s.head==e.head&&s.head!=(i?n.to:n.from)&&(s=t.moveToLineBoundary(e,i,!1)),!i&&s.head==n.from&&n.length){let i=/^\s*/.exec(t.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;i&&e.head!=n.from+i&&(s=R.cursor(n.from+i))}return s}function Zh(t,e){let i=uh(t.state.selection,(t=>{let i=e(t);return R.range(t.anchor,i.head,i.goalColumn)}));return!i.eq(t.state.selection)&&(t.dispatch(fh(t.state,i)),!0)}function Ah(t,e){return Zh(t,(i=>t.moveByChar(i,e)))}const Rh=t=>Ah(t,!mh(t)),Xh=t=>Ah(t,mh(t));function Uh(t,e){return Zh(t,(i=>t.moveByGroup(i,e)))}function qh(t,e){return Zh(t,(i=>t.moveVertically(i,e)))}const Vh=t=>qh(t,!1),_h=t=>qh(t,!0);function Mh(t,e){return Zh(t,(i=>t.moveVertically(i,e,kh(t))))}const Dh=t=>Mh(t,!1),jh=t=>Mh(t,!0),Wh=({state:t,dispatch:e})=>(e(fh(t,{anchor:0})),!0),Eh=({state:t,dispatch:e})=>(e(fh(t,{anchor:t.doc.length})),!0),Gh=({state:t,dispatch:e})=>(e(fh(t,{anchor:t.selection.main.anchor,head:0})),!0),Bh=({state:t,dispatch:e})=>(e(fh(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0);function zh(t,e){if(t.state.readOnly)return!1;let i="delete.selection",{state:n}=t,s=n.changeByRange((n=>{let{from:s,to:r}=n;if(s==r){let n=e(s);n<s?(i="delete.backward",n=Nh(t,n,!1)):n>s&&(i="delete.forward",n=Nh(t,n,!0)),s=Math.min(s,n),r=Math.max(r,n)}else s=Nh(t,s,!1),r=Nh(t,r,!0);return s==r?{range:n}:{changes:{from:s,to:r},range:R.cursor(s)}}));return!s.changes.empty&&(t.dispatch(n.update(s,{scrollIntoView:!0,userEvent:i,effects:"delete.selection"==i?Ps.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function Nh(t,e,i){if(t instanceof Ps)for(let n of t.state.facet(Ps.atomicRanges).map((e=>e(t))))n.between(e,e,((t,n)=>{t<e&&n>e&&(e=i?n:t)}));return e}const Ih=(t,e)=>zh(t,(i=>{let n,s,{state:r}=t,o=r.doc.lineAt(i);if(!e&&i>o.from&&i<o.from+200&&!/[^ \t]/.test(n=o.text.slice(0,i-o.from))){if("\t"==n[n.length-1])return i-1;let t=Wt(n,r.tabSize)%Cl(r)||Cl(r);for(let e=0;e<t&&" "==n[n.length-1-e];e++)i--;s=i}else s=O(o.text,i-o.from,e,e)+o.from,s==i&&o.number!=(e?r.doc.lines:1)&&(s+=e?1:-1);return s})),Lh=t=>Ih(t,!1),Yh=t=>Ih(t,!0),Fh=(t,e)=>zh(t,(i=>{let n=i,{state:s}=t,r=s.doc.lineAt(n),o=s.charCategorizer(n);for(let t=null;;){if(n==(e?r.to:r.from)){n==i&&r.number!=(e?s.doc.lines:1)&&(n+=e?1:-1);break}let l=O(r.text,n-r.from,e)+r.from,a=r.text.slice(Math.min(n,l)-r.from,Math.max(n,l)-r.from),h=o(a);if(null!=t&&h!=t)break;" "==a&&n==i||(t=h),n=l}return n})),Hh=t=>Fh(t,!1),Jh=t=>zh(t,(e=>{let i=t.lineBlockAt(e).to;return e<i?i:Math.min(t.state.doc.length,e+1)}));function Kh(t){let e=[],i=-1;for(let n of t.selection.ranges){let s=t.doc.lineAt(n.from),r=t.doc.lineAt(n.to);if(n.empty||n.to!=r.from||(r=t.doc.lineAt(n.to-1)),i>=s.number){let t=e[e.length-1];t.to=r.to,t.ranges.push(n)}else e.push({from:s.from,to:r.to,ranges:[n]});i=r.number+1}return e}function tc(t,e,i){if(t.readOnly)return!1;let n=[],s=[];for(let e of Kh(t)){if(i?e.to==t.doc.length:0==e.from)continue;let r=t.doc.lineAt(i?e.to+1:e.from-1),o=r.length+1;if(i){n.push({from:e.to,to:r.to},{from:e.from,insert:r.text+t.lineBreak});for(let i of e.ranges)s.push(R.range(Math.min(t.doc.length,i.anchor+o),Math.min(t.doc.length,i.head+o)))}else{n.push({from:r.from,to:e.from},{from:e.to,insert:t.lineBreak+r.text});for(let t of e.ranges)s.push(R.range(t.anchor-o,t.head-o))}}return!!n.length&&(e(t.update({changes:n,scrollIntoView:!0,selection:R.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0)}function ec(t,e,i){if(t.readOnly)return!1;let n=[];for(let e of Kh(t))i?n.push({from:e.from,insert:t.doc.slice(e.from,e.to)+t.lineBreak}):n.push({from:e.to,insert:t.lineBreak+t.doc.slice(e.from,e.to)});return e(t.update({changes:n,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const ic=nc(!1);function nc(t){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let s=i.changeByRange((n=>{let{from:s,to:r}=n,o=i.doc.lineAt(s),l=!t&&s==r&&function(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let i,n=ml(t).resolveInner(e),s=n.childBefore(e),r=n.childAfter(e);return s&&r&&s.to<=e&&r.from>=e&&(i=s.type.prop(uo.closedBy))&&i.indexOf(r.name)>-1&&t.doc.lineAt(s.to).from==t.doc.lineAt(r.from).from?{from:s.to,to:r.from}:null}(i,s);t&&(s=r=(r<=o.to?o:i.doc.lineAt(r)).to);let a=new Rl(i,{simulateBreak:s,simulateDoubleBreak:!!l}),h=Al(a,s);for(null==h&&(h=/^\s*/.exec(i.doc.lineAt(s).text)[0].length);r<o.to&&/\s/.test(o.text[r-o.from]);)r++;l?({from:s,to:r}=l):s>o.from&&s<o.from+100&&!/\S/.test(o.text.slice(0,s))&&(s=o.from);let c=["",Zl(i,h)];return l&&c.push(Zl(i,a.lineIndent(o.from,-1))),{changes:{from:s,to:r,insert:e.of(c)},range:R.cursor(s+1+c[1].length)}}));return n(i.update(s,{scrollIntoView:!0,userEvent:"input"})),!0}}function sc(t,e){let i=-1;return t.changeByRange((n=>{let s=[];for(let r=n.from;r<=n.to;){let o=t.doc.lineAt(r);o.number>i&&(n.empty||n.to>o.from)&&(e(o,s,n),i=o.number),r=o.to+1}let r=t.changes(s);return{changes:s,range:R.range(r.mapPos(n.anchor,1),r.mapPos(n.head,1))}}))}const rc=({state:t,dispatch:e})=>!t.readOnly&&(e(t.update(sc(t,((e,i)=>{i.push({from:e.from,insert:t.facet(Pl)})})),{userEvent:"input.indent"})),!0),oc=({state:t,dispatch:e})=>!t.readOnly&&(e(t.update(sc(t,((e,i)=>{let n=/^\s*/.exec(e.text)[0];if(!n)return;let s=Wt(n,t.tabSize),r=0,o=Zl(t,Math.max(0,s-Cl(t)));for(;r<n.length&&r<o.length&&n.charCodeAt(r)==o.charCodeAt(r);)r++;i.push({from:e.from+r,to:e.from+n.length,insert:o.slice(r)})})),{userEvent:"delete.dedent"})),!0),lc=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:t=>Oh(t,(e=>yh(t.state,e,!mh(t)))),shift:t=>Zh(t,(e=>yh(t.state,e,!mh(t))))},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:t=>Oh(t,(e=>yh(t.state,e,mh(t)))),shift:t=>Zh(t,(e=>yh(t.state,e,mh(t))))},{key:"Alt-ArrowUp",run:({state:t,dispatch:e})=>tc(t,e,!1)},{key:"Shift-Alt-ArrowUp",run:({state:t,dispatch:e})=>ec(t,e,!1)},{key:"Alt-ArrowDown",run:({state:t,dispatch:e})=>tc(t,e,!0)},{key:"Shift-Alt-ArrowDown",run:({state:t,dispatch:e})=>ec(t,e,!0)},{key:"Escape",run:({state:t,dispatch:e})=>{let i=t.selection,n=null;return i.ranges.length>1?n=R.create([i.main]):i.main.empty||(n=R.create([R.cursor(i.main.head)])),!!n&&(e(fh(t,n)),!0)}},{key:"Mod-Enter",run:nc(!0)},{key:"Alt-l",mac:"Ctrl-l",run:({state:t,dispatch:e})=>{let i=Kh(t).map((({from:e,to:i})=>R.range(e,Math.min(i+1,t.doc.length))));return e(t.update({selection:R.create(i),userEvent:"select"})),!0}},{key:"Mod-i",run:({state:t,dispatch:e})=>{let i=uh(t.selection,(e=>{var i;let n=ml(t).resolveInner(e.head,1);for(;!(n.from<e.from&&n.to>=e.to||n.to>e.to&&n.from<=e.from)&&(null===(i=n.parent)||void 0===i?void 0:i.parent);)n=n.parent;return R.range(n.to,n.from)}));return e(fh(t,i)),!0},preventDefault:!0},{key:"Mod-[",run:oc},{key:"Mod-]",run:rc},{key:"Mod-Alt-\\",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=Object.create(null),n=new Rl(t,{overrideIndentation:t=>{let e=i[t];return null==e?-1:e}}),s=sc(t,((e,s,r)=>{let o=Al(n,e.from);if(null==o)return;/\S/.test(e.text)||(o=0);let l=/^\s*/.exec(e.text)[0],a=Zl(t,o);(l!=a||r.from<e.from+l.length)&&(i[e.from]=o,s.push({from:e.from,to:e.from+l.length,insert:a}))}));return s.changes.empty||e(t.update(s,{userEvent:"indent"})),!0}},{key:"Shift-Mod-k",run:t=>{if(t.state.readOnly)return!1;let{state:e}=t,i=e.changes(Kh(e).map((({from:t,to:i})=>(t>0?t--:i<e.doc.length&&i++,{from:t,to:i})))),n=uh(e.selection,(e=>t.moveVertically(e,!0))).map(i);return t.dispatch({changes:i,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0}},{key:"Shift-Mod-\\",run:({state:t,dispatch:e})=>function(t,e,i){let n=!1,s=uh(t.selection,(e=>{let s=Pa(t,e.head,-1)||Pa(t,e.head,1)||e.head>0&&Pa(t,e.head-1,1)||e.head<t.doc.length&&Pa(t,e.head+1,-1);if(!s||!s.end)return e;n=!0;let r=s.start.from==e.head?s.end.to:s.end.from;return i?R.range(e.anchor,r):R.cursor(r)}));return!!n&&(e(fh(t,s)),!0)}(t,e,!1)},{key:"Mod-/",run:t=>{let e=ja(t.state);return e.line?_a(t):!!e.block&&Da(t)}},{key:"Alt-A",run:Ma}].concat([{key:"ArrowLeft",run:gh,shift:Rh,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:t=>bh(t,!mh(t)),shift:t=>Uh(t,!mh(t)),preventDefault:!0},{mac:"Cmd-ArrowLeft",run:t=>Oh(t,(e=>Ch(t,e,!mh(t)))),shift:t=>Zh(t,(e=>Ch(t,e,!mh(t)))),preventDefault:!0},{key:"ArrowRight",run:Qh,shift:Xh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:t=>bh(t,mh(t)),shift:t=>Uh(t,mh(t)),preventDefault:!0},{mac:"Cmd-ArrowRight",run:t=>Oh(t,(e=>Ch(t,e,mh(t)))),shift:t=>Zh(t,(e=>Ch(t,e,mh(t)))),preventDefault:!0},{key:"ArrowUp",run:vh,shift:Vh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wh,shift:Gh},{mac:"Ctrl-ArrowUp",run:Th,shift:Dh},{key:"ArrowDown",run:xh,shift:_h,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Eh,shift:Bh},{mac:"Ctrl-ArrowDown",run:Ph,shift:jh},{key:"PageUp",run:Th,shift:Dh},{key:"PageDown",run:Ph,shift:jh},{key:"Home",run:t=>Oh(t,(e=>Ch(t,e,!1))),shift:t=>Zh(t,(e=>Ch(t,e,!1))),preventDefault:!0},{key:"Mod-Home",run:Wh,shift:Gh},{key:"End",run:t=>Oh(t,(e=>Ch(t,e,!0))),shift:t=>Zh(t,(e=>Ch(t,e,!0))),preventDefault:!0},{key:"Mod-End",run:Eh,shift:Bh},{key:"Enter",run:ic},{key:"Mod-a",run:({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0)},{key:"Backspace",run:Lh,shift:Lh},{key:"Delete",run:Yh},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Hh},{key:"Mod-Delete",mac:"Alt-Delete",run:t=>Fh(t,!0)},{mac:"Mod-Backspace",run:t=>zh(t,(e=>{let i=t.lineBlockAt(e).from;return e>i?i:Math.max(0,e-1)}))},{mac:"Mod-Delete",run:Jh}].concat([{key:"Ctrl-b",run:gh,shift:Rh,preventDefault:!0},{key:"Ctrl-f",run:Qh,shift:Xh},{key:"Ctrl-p",run:vh,shift:Vh},{key:"Ctrl-n",run:xh,shift:_h},{key:"Ctrl-a",run:t=>Oh(t,(e=>R.cursor(t.lineBlockAt(e.head).from,1))),shift:t=>Zh(t,(e=>R.cursor(t.lineBlockAt(e.head).from)))},{key:"Ctrl-e",run:t=>Oh(t,(e=>R.cursor(t.lineBlockAt(e.head).to,-1))),shift:t=>Zh(t,(e=>R.cursor(t.lineBlockAt(e.head).to)))},{key:"Ctrl-d",run:Yh},{key:"Ctrl-h",run:Lh},{key:"Ctrl-k",run:Jh},{key:"Ctrl-Alt-h",run:Hh},{key:"Ctrl-o",run:({state:t,dispatch:i})=>{if(t.readOnly)return!1;let n=t.changeByRange((t=>({changes:{from:t.from,to:t.to,insert:e.of(["",""])},range:R.cursor(t.from)})));return i(t.update(n,{scrollIntoView:!0,userEvent:"input"})),!0}},{key:"Ctrl-t",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange((e=>{if(!e.empty||0==e.from||e.from==t.doc.length)return{range:e};let i=e.from,n=t.doc.lineAt(i),s=i==n.from?i-1:O(n.text,i-n.from,!1)+n.from,r=i==n.to?i+1:O(n.text,i-n.from,!0)+n.from;return{changes:{from:s,to:r,insert:t.doc.slice(i,r).append(t.doc.slice(s,i))},range:R.cursor(r)}}));return!i.changes.empty&&(e(t.update(i,{scrollIntoView:!0,userEvent:"move.character"})),!0)}},{key:"Ctrl-v",run:Ph}].map((t=>({mac:t.key,run:t.run,shift:t.shift}))))),ac={key:"Tab",run:rc,shift:oc};class hc{constructor(t,e,i){this.state=t,this.pos=e,this.explicit=i,this.abortListeners=[]}tokenBefore(t){let e=ml(this.state).resolveInner(this.pos,-1);for(;e&&t.indexOf(e.name)<0;)e=e.parent;return e?{from:e.from,to:this.pos,text:this.state.sliceDoc(e.from,this.pos),type:e.type}:null}matchBefore(t){let e=this.state.doc.lineAt(this.pos),i=Math.max(e.from,this.pos-250),n=e.text.slice(i-e.from,this.pos-e.from),s=n.search(dc(t,!1));return s<0?null:{from:i+s,to:this.pos,text:n.slice(s)}}get aborted(){return null==this.abortListeners}addEventListener(t,e){"abort"==t&&this.abortListeners&&this.abortListeners.push(e)}}function cc(t){let e=Object.keys(t).join(""),i=/\w/.test(e);return i&&(e=e.replace(/\w/g,"")),`[${i?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function uc(t){let e=t.map((t=>"string"==typeof t?{label:t}:t)),[i,n]=e.every((t=>/^\w+$/.test(t.label)))?[/\w*$/,/\w+$/]:function(t){let e=Object.create(null),i=Object.create(null);for(let{label:n}of t){e[n[0]]=!0;for(let t=1;t<n.length;t++)i[n[t]]=!0}let n=cc(e)+cc(i)+"*$";return[new RegExp("^"+n),new RegExp(n)]}(e);return t=>{let s=t.matchBefore(n);return s||t.explicit?{from:s?s.from:t.pos,options:e,validFor:i}:null}}class fc{constructor(t,e,i){this.completion=t,this.source=e,this.match=i}}function Oc(t){return t.selection.main.head}function dc(t,e){var i;let{source:n}=t,s=e&&"^"!=n[0],r="$"!=n[n.length-1];return s||r?new RegExp(`${s?"^":""}(?:${n})${r?"$":""}`,null!==(i=t.flags)&&void 0!==i?i:t.ignoreCase?"i":""):t}const pc=at.define();function mc(t,e){const i=e.completion.apply||e.completion.label;let n=e.source;var s,r,o,l;"string"==typeof i?t.dispatch(Object.assign(Object.assign({},(s=t.state,r=i,o=n.from,l=n.to,Object.assign(Object.assign({},s.changeByRange((t=>{if(t==s.selection.main)return{changes:{from:o,to:l,insert:r},range:R.cursor(o+r.length)};let e=l-o;return!t.empty||e&&s.sliceDoc(t.from-e,t.from)!=s.sliceDoc(o,l)?{range:t}:{changes:{from:t.from-e,to:t.from,insert:r},range:R.cursor(t.from-e+r.length)}}))),{userEvent:"input.complete"}))),{annotations:pc.of(e.completion)})):i(t,e.completion,n.from,n.to)}const gc=new WeakMap;function Qc(t){if(!Array.isArray(t))return t;let e=gc.get(t);return e||gc.set(t,e=uc(t)),e}class bc{constructor(t){this.pattern=t,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[];for(let e=0;e<t.length;){let i=Q(t,e),n=S(i);this.chars.push(i);let s=t.slice(e,e+n),r=s.toUpperCase();this.folded.push(Q(r==s?s.toLowerCase():r,0)),e+=n}this.astral=t.length!=this.chars.length}match(t){if(0==this.pattern.length)return[0];if(t.length<this.pattern.length)return null;let{chars:e,folded:i,any:n,precise:s,byWord:r}=this;if(1==e.length){let n=Q(t,0);return n==e[0]?[0,0,S(n)]:n==i[0]?[-200,0,S(n)]:null}let o=t.indexOf(this.pattern);if(0==o)return[0,0,this.pattern.length];let l=e.length,a=0;if(o<0){for(let s=0,r=Math.min(t.length,200);s<r&&a<l;){let r=Q(t,s);r!=e[a]&&r!=i[a]||(n[a++]=s),s+=S(r)}if(a<l)return null}let h=0,c=0,u=!1,f=0,O=-1,d=-1,p=/[a-z]/.test(t),m=!0;for(let n=0,a=Math.min(t.length,200),g=0;n<a&&c<l;){let a=Q(t,n);o<0&&(h<l&&a==e[h]&&(s[h++]=n),f<l&&(a==e[f]||a==i[f]?(0==f&&(O=n),d=n+1,f++):f=0));let y,w=a<255?a>=48&&a<=57||a>=97&&a<=122?2:a>=65&&a<=90?1:0:(y=b(a))!=y.toLowerCase()?1:y!=y.toUpperCase()?2:0;(!n||1==w&&p||0==g&&0!=w)&&(e[c]==a||i[c]==a&&(u=!0)?r[c++]=n:r.length&&(m=!1)),g=w,n+=S(a)}return c==l&&0==r[0]&&m?this.result((u?-200:0)-100,r,t):f==l&&0==O?[-200-t.length,0,d]:o>-1?[-700-t.length,o,o+this.pattern.length]:f==l?[-900-t.length,O,d]:c==l?this.result((u?-200:0)-100-700+(m?0:-1100),r,t):2==e.length?null:this.result((n[0]?-700:0)-200-1100,n,t)}result(t,e,i){let n=[t-i.length],s=1;for(let t of e){let e=t+(this.astral?S(Q(i,t)):1);s>1&&n[s-1]==t?n[s-1]=e:(n[s++]=t,n[s++]=e)}return n}}const Sc=q.define({combine:t=>xt(t,{activateOnTyping:!0,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],compareCompletions:(t,e)=>t.label.localeCompare(e.label),interactionDelay:75},{defaultKeymap:(t,e)=>t&&e,closeOnBlur:(t,e)=>t&&e,icons:(t,e)=>t&&e,optionClass:(t,e)=>i=>function(t,e){return t?e?t+" "+e:t:e}(t(i),e(i)),addToOptions:(t,e)=>t.concat(e)})});function yc(t,e,i){if(t<=i)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let t=Math.floor(e/i);return{from:t*i,to:(t+1)*i}}let n=Math.floor((t-e)/i);return{from:t-(n+1)*i,to:t-n*i}}class wc{constructor(t,e){this.view=t,this.stateField=e,this.info=null,this.placeInfo={read:()=>this.measureInfo(),write:t=>this.positionInfo(t),key:this},this.space=null;let i=t.state.field(e),{options:n,selected:s}=i.open,r=t.state.facet(Sc);this.optionContent=function(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(t){let e=document.createElement("div");return e.classList.add("cm-completionIcon"),t.type&&e.classList.add(...t.type.split(/\s+/g).map((t=>"cm-completionIcon-"+t))),e.setAttribute("aria-hidden","true"),e},position:20}),e.push({render(t,e,i){let n=document.createElement("span");n.className="cm-completionLabel";let{label:s}=t,r=0;for(let t=1;t<i.length;){let e=i[t++],o=i[t++];e>r&&n.appendChild(document.createTextNode(s.slice(r,e)));let l=n.appendChild(document.createElement("span"));l.appendChild(document.createTextNode(s.slice(e,o))),l.className="cm-completionMatchedText",r=o}return r<s.length&&n.appendChild(document.createTextNode(s.slice(r))),n},position:50},{render(t){if(!t.detail)return null;let e=document.createElement("span");return e.className="cm-completionDetail",e.textContent=t.detail,e},position:80}),e.sort(((t,e)=>t.position-e.position)).map((t=>t.render))}(r),this.optionClass=r.optionClass,this.range=yc(n.length,s,r.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.dom.addEventListener("mousedown",(e=>{for(let i,s=e.target;s&&s!=this.dom;s=s.parentNode)if("LI"==s.nodeName&&(i=/-(\d+)$/.exec(s.id))&&+i[1]<n.length)return mc(t,n[+i[1]]),void e.preventDefault()})),this.list=this.dom.appendChild(this.createListBox(n,i.id,this.range)),this.list.addEventListener("scroll",(()=>{this.info&&this.view.requestMeasure(this.placeInfo)}))}mount(){this.updateSel()}update(t){var e,i,n;let s=t.state.field(this.stateField),r=t.startState.field(this.stateField);s!=r&&(this.updateSel(),(null===(e=s.open)||void 0===e?void 0:e.disabled)!=(null===(i=r.open)||void 0===i?void 0:i.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!(null===(n=s.open)||void 0===n?void 0:n.disabled)))}positioned(t){this.space=t,this.info&&this.view.requestMeasure(this.placeInfo)}updateSel(){let t=this.view.state.field(this.stateField),e=t.open;if((e.selected>-1&&e.selected<this.range.from||e.selected>=this.range.to)&&(this.range=yc(e.options.length,e.selected,this.view.state.facet(Sc).maxRenderedOptions),this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e.options,t.id,this.range)),this.list.addEventListener("scroll",(()=>{this.info&&this.view.requestMeasure(this.placeInfo)}))),this.updateSelectedOption(e.selected)){this.info&&(this.info.remove(),this.info=null);let{completion:i}=e.options[e.selected],{info:n}=i;if(!n)return;let s="string"==typeof n?document.createTextNode(n):n(i);if(!s)return;"then"in s?s.then((e=>{e&&this.view.state.field(this.stateField,!1)==t&&this.addInfoPane(e)})).catch((t=>vi(this.view.state,t,"completion info"))):this.addInfoPane(s)}}addInfoPane(t){let e=this.info=document.createElement("div");e.className="cm-tooltip cm-completionInfo",e.appendChild(t),this.dom.appendChild(e),this.view.requestMeasure(this.placeInfo)}updateSelectedOption(t){let e=null;for(let i=this.list.firstChild,n=this.range.from;i;i=i.nextSibling,n++)n==t?i.hasAttribute("aria-selected")||(i.setAttribute("aria-selected","true"),e=i):i.hasAttribute("aria-selected")&&i.removeAttribute("aria-selected");return e&&function(t,e){let i=t.getBoundingClientRect(),n=e.getBoundingClientRect();n.top<i.top?t.scrollTop-=i.top-n.top:n.bottom>i.bottom&&(t.scrollTop+=n.bottom-i.bottom)}(this.list,e),e}measureInfo(){let t=this.dom.querySelector("[aria-selected]");if(!t||!this.info)return null;let e=this.dom.getBoundingClientRect(),i=this.info.getBoundingClientRect(),n=t.getBoundingClientRect(),s=this.space;if(!s){let t=this.dom.ownerDocument.defaultView||window;s={left:0,top:0,right:t.innerWidth,bottom:t.innerHeight}}if(n.top>Math.min(s.bottom,e.bottom)-10||n.bottom<Math.max(s.top,e.top)+10)return null;let r,o=this.view.textDirection==_i.RTL,l=o,a=!1,h="",c="",u=e.left-s.left,f=s.right-e.right;if(l&&u<Math.min(i.width,f)?l=!1:!l&&f<Math.min(i.width,u)&&(l=!0),i.width<=(l?u:f))h=Math.max(s.top,Math.min(n.top,s.bottom-i.height))-e.top+"px",r=Math.min(400,l?u:f)+"px";else{a=!0,r=Math.min(400,(o?e.right:s.right-e.left)-30)+"px";let t=s.bottom-e.bottom;t>=i.height||t>e.top?h=n.bottom-e.top+"px":c=e.bottom-n.top+"px"}return{top:h,bottom:c,maxWidth:r,class:a?o?"left-narrow":"right-narrow":l?"left":"right"}}positionInfo(t){this.info&&(t?(this.info.style.top=t.top,this.info.style.bottom=t.bottom,this.info.style.maxWidth=t.maxWidth,this.info.className="cm-tooltip cm-completionInfo cm-completionInfo-"+t.class):this.info.style.top="-1e6px")}createListBox(t,e,i){const n=document.createElement("ul");n.id=e,n.setAttribute("role","listbox"),n.setAttribute("aria-expanded","true"),n.setAttribute("aria-label",this.view.state.phrase("Completions"));for(let s=i.from;s<i.to;s++){let{completion:i,match:r}=t[s];const o=n.appendChild(document.createElement("li"));o.id=e+"-"+s,o.setAttribute("role","option");let l=this.optionClass(i);l&&(o.className=l);for(let t of this.optionContent){let e=t(i,this.view.state,r);e&&o.appendChild(e)}}return i.from&&n.classList.add("cm-completionListIncompleteTop"),i.to<t.length&&n.classList.add("cm-completionListIncompleteBottom"),n}}function vc(t){return 100*(t.boost||0)+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}class xc{constructor(t,e,i,n,s,r){this.options=t,this.attrs=e,this.tooltip=i,this.timestamp=n,this.selected=s,this.disabled=r}setSelected(t,e){return t==this.selected||t>=this.options.length?this:new xc(this.options,Tc(e,t),this.tooltip,this.timestamp,t,this.disabled)}static build(t,e,i,n,s){let r=function(t,e){let i=[],n=0;for(let s of t)if(s.hasResult())if(!1===s.result.filter){let t=s.result.getMatch;for(let e of s.result.options){let r=[1e9-n++];if(t)for(let i of t(e))r.push(i);i.push(new fc(e,s,r))}}else{let t,n=new bc(e.sliceDoc(s.from,s.to));for(let e of s.result.options)(t=n.match(e.label))&&(null!=e.boost&&(t[0]+=e.boost),i.push(new fc(e,s,t)))}let s=[],r=null,o=e.facet(Sc).compareCompletions;for(let t of i.sort(((t,e)=>e.match[0]-t.match[0]||o(t.completion,e.completion))))!r||r.label!=t.completion.label||r.detail!=t.completion.detail||null!=r.type&&null!=t.completion.type&&r.type!=t.completion.type||r.apply!=t.completion.apply?s.push(t):vc(t.completion)>vc(r)&&(s[s.length-1]=t),r=t.completion;return s}(t,e);if(!r.length)return n&&t.some((t=>1==t.state))?new xc(n.options,n.attrs,n.tooltip,n.timestamp,n.selected,!0):null;let o=e.facet(Sc).selectOnOpen?0:-1;if(n&&n.selected!=o&&-1!=n.selected){let t=n.options[n.selected].completion;for(let e=0;e<r.length;e++)if(r[e].completion==t){o=e;break}}return new xc(r,Tc(i,o),{pos:t.reduce(((t,e)=>e.hasResult()?Math.min(t,e.from):t),1e8),create:(l=Vc,t=>new wc(t,l)),above:s.aboveCursor},n?n.timestamp:Date.now(),o,!1);var l}map(t){return new xc(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:t.mapPos(this.tooltip.pos)}),this.timestamp,this.selected,this.disabled)}}class kc{constructor(t,e,i){this.active=t,this.id=e,this.open=i}static start(){return new kc(Pc,"cm-ac-"+Math.floor(2e6*Math.random()).toString(36),null)}update(t){let{state:e}=t,i=e.facet(Sc),n=(i.override||e.languageDataAt("autocomplete",Oc(e)).map(Qc)).map((e=>(this.active.find((t=>t.source==e))||new Zc(e,this.active.some((t=>0!=t.state))?1:0)).update(t,i)));n.length==this.active.length&&n.every(((t,e)=>t==this.active[e]))&&(n=this.active);let s=this.open;t.selection||n.some((e=>e.hasResult()&&t.changes.touchesRange(e.from,e.to)))||!function(t,e){if(t==e)return!0;for(let i=0,n=0;;){for(;i<t.length&&!t[i].hasResult;)i++;for(;n<e.length&&!e[n].hasResult;)n++;let s=i==t.length,r=n==e.length;if(s||r)return s==r;if(t[i++].result!=e[n++].result)return!1}}(n,this.active)?s=xc.build(n,e,this.id,this.open,i):s&&s.disabled&&!n.some((t=>1==t.state))?s=null:s&&t.docChanged&&(s=s.map(t.changes)),!s&&n.every((t=>1!=t.state))&&n.some((t=>t.hasResult()))&&(n=n.map((t=>t.hasResult()?new Zc(t.source,0):t)));for(let e of t.effects)e.is(qc)&&(s=s&&s.setSelected(e.value,this.id));return n==this.active&&s==this.open?this:new kc(n,this.id,s)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:$c}}const $c={"aria-autocomplete":"list"};function Tc(t,e){let i={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":t};return e>-1&&(i["aria-activedescendant"]=t+"-"+e),i}const Pc=[];function Cc(t){return t.isUserEvent("input.type")?"input":t.isUserEvent("delete.backward")?"delete":null}class Zc{constructor(t,e,i=-1){this.source=t,this.state=e,this.explicitPos=i}hasResult(){return!1}update(t,e){let i=Cc(t),n=this;i?n=n.handleUserEvent(t,i,e):t.docChanged?n=n.handleChange(t):t.selection&&0!=n.state&&(n=new Zc(n.source,0));for(let e of t.effects)if(e.is(Rc))n=new Zc(n.source,1,e.value?Oc(t.state):-1);else if(e.is(Xc))n=new Zc(n.source,0);else if(e.is(Uc))for(let t of e.value)t.source==n.source&&(n=t);return n}handleUserEvent(t,e,i){return"delete"!=e&&i.activateOnTyping?new Zc(this.source,1):this.map(t.changes)}handleChange(t){return t.changes.touchesRange(Oc(t.startState))?new Zc(this.source,0):this.map(t.changes)}map(t){return t.empty||this.explicitPos<0?this:new Zc(this.source,this.state,t.mapPos(this.explicitPos))}}class Ac extends Zc{constructor(t,e,i,n,s){super(t,2,e),this.result=i,this.from=n,this.to=s}hasResult(){return!0}handleUserEvent(t,e,i){var n;let s=t.changes.mapPos(this.from),r=t.changes.mapPos(this.to,1),o=Oc(t.state);if((this.explicitPos<0?o<=s:o<this.from)||o>r||"delete"==e&&Oc(t.startState)==this.from)return new Zc(this.source,"input"==e&&i.activateOnTyping?1:0);let l,a=this.explicitPos<0?-1:t.changes.mapPos(this.explicitPos);return function(t,e,i,n){if(!t)return!1;let s=e.sliceDoc(i,n);return"function"==typeof t?t(s,i,n,e):dc(t,!0).test(s)}(this.result.validFor,t.state,s,r)?new Ac(this.source,a,this.result,s,r):this.result.update&&(l=this.result.update(this.result,s,r,new hc(t.state,o,a>=0)))?new Ac(this.source,a,l,l.from,null!==(n=l.to)&&void 0!==n?n:Oc(t.state)):new Zc(this.source,1,a)}handleChange(t){return t.changes.touchesRange(this.from,this.to)?new Zc(this.source,0):this.map(t.changes)}map(t){return t.empty?this:new Ac(this.source,this.explicitPos<0?-1:t.mapPos(this.explicitPos),this.result,t.mapPos(this.from),t.mapPos(this.to,1))}}const Rc=ut.define(),Xc=ut.define(),Uc=ut.define({map:(t,e)=>t.map((t=>t.map(e)))}),qc=ut.define(),Vc=E.define({create:()=>kc.start(),update:(t,e)=>t.update(e),provide:t=>[Cr.from(t,(t=>t.tooltip)),Ps.contentAttributes.from(t,(t=>t.attrs))]});function _c(t,e="option"){return i=>{let n=i.state.field(Vc,!1);if(!n||!n.open||n.open.disabled||Date.now()-n.open.timestamp<i.state.facet(Sc).interactionDelay)return!1;let s,r=1;"page"==e&&(s=function(t,e){let i=t.plugin($r);if(!i)return null;let n=i.manager.tooltips.indexOf(e);return n<0?null:i.manager.tooltipViews[n]}(i,n.open.tooltip))&&(r=Math.max(2,Math.floor(s.dom.offsetHeight/s.dom.querySelector("li").offsetHeight)-1));let{length:o}=n.open.options,l=n.open.selected>-1?n.open.selected+r*(t?1:-1):t?0:o-1;return l<0?l="page"==e?0:o-1:l>=o&&(l="page"==e?o-1:0),i.dispatch({effects:qc.of(l)}),!0}}class Mc{constructor(t,e){this.active=t,this.context=e,this.time=Date.now(),this.updates=[],this.done=void 0}}const Dc=Ti.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.composing=0;for(let e of t.state.field(Vc).active)1==e.state&&this.startQuery(e)}update(t){let e=t.state.field(Vc);if(!t.selectionSet&&!t.docChanged&&t.startState.field(Vc)==e)return;let i=t.transactions.some((t=>(t.selection||t.docChanged)&&!Cc(t)));for(let e=0;e<this.running.length;e++){let n=this.running[e];if(i||n.updates.length+t.transactions.length>50&&Date.now()-n.time>1e3){for(let t of n.context.abortListeners)try{t()}catch(t){vi(this.view.state,t)}n.context.abortListeners=null,this.running.splice(e--,1)}else n.updates.push(...t.transactions)}if(this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),this.debounceUpdate=e.active.some((t=>1==t.state&&!this.running.some((e=>e.active.source==t.source))))?setTimeout((()=>this.startUpdate()),50):-1,0!=this.composing)for(let e of t.transactions)"input"==Cc(e)?this.composing=2:2==this.composing&&e.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1;let{state:t}=this.view,e=t.field(Vc);for(let t of e.active)1!=t.state||this.running.some((e=>e.active.source==t.source))||this.startQuery(t)}startQuery(t){let{state:e}=this.view,i=Oc(e),n=new hc(e,i,t.explicitPos==i),s=new Mc(t,n);this.running.push(s),Promise.resolve(t.source(n)).then((t=>{s.context.aborted||(s.done=t||null,this.scheduleAccept())}),(t=>{this.view.dispatch({effects:Xc.of(null)}),vi(this.view.state,t)}))}scheduleAccept(){this.running.every((t=>void 0!==t.done))?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout((()=>this.accept()),50))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],i=this.view.state.facet(Sc);for(let n=0;n<this.running.length;n++){let s=this.running[n];if(void 0===s.done)continue;if(this.running.splice(n--,1),s.done){let n=new Ac(s.active.source,s.active.explicitPos,s.done,s.done.from,null!==(t=s.done.to)&&void 0!==t?t:Oc(s.updates.length?s.updates[0].startState:this.view.state));for(let t of s.updates)n=n.update(t,i);if(n.hasResult()){e.push(n);continue}}let r=this.view.state.field(Vc).active.find((t=>t.source==s.active.source));if(r&&1==r.state)if(null==s.done){let t=new Zc(s.active.source,0);for(let e of s.updates)t=t.update(e,i);1!=t.state&&e.push(t)}else this.startQuery(r)}e.length&&this.view.dispatch({effects:Uc.of(e)})}},{eventHandlers:{blur(){let t=this.view.state.field(Vc,!1);t&&t.tooltip&&this.view.state.facet(Sc).closeOnBlur&&this.view.dispatch({effects:Xc.of(null)})},compositionstart(){this.composing=1},compositionend(){3==this.composing&&setTimeout((()=>this.view.dispatch({effects:Rc.of(!1)})),20),this.composing=0}}}),jc=Ps.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer",padding:"1px 3px",lineHeight:1.2}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class Wc{constructor(t,e,i,n){this.field=t,this.line=e,this.from=i,this.to=n}}class Ec{constructor(t,e,i){this.field=t,this.from=e,this.to=i}map(t){let e=t.mapPos(this.from,-1,w.TrackDel),i=t.mapPos(this.to,1,w.TrackDel);return null==e||null==i?null:new Ec(this.field,e,i)}}class Gc{constructor(t,e){this.lines=t,this.fieldPositions=e}instantiate(t,e){let i=[],n=[e],s=t.doc.lineAt(e),r=/^\s*/.exec(s.text)[0];for(let s of this.lines){if(i.length){let i=r,o=/^\t*/.exec(s)[0].length;for(let e=0;e<o;e++)i+=t.facet(Pl);n.push(e+i.length-o),s=i+s.slice(o)}i.push(s),e+=s.length+1}let o=this.fieldPositions.map((t=>new Ec(t.field,n[t.line]+t.from,n[t.line]+t.to)));return{text:i,ranges:o}}static parse(t){let e,i=[],n=[],s=[];for(let r of t.split(/\r\n?|\n/)){for(;e=/[#$]\{(?:(\d+)(?::([^}]*))?|([^}]*))\}/.exec(r);){let t=e[1]?+e[1]:null,o=e[2]||e[3]||"",l=-1;for(let e=0;e<i.length;e++)(null!=t?i[e].seq==t:o&&i[e].name==o)&&(l=e);if(l<0){let e=0;for(;e<i.length&&(null==t||null!=i[e].seq&&i[e].seq<t);)e++;i.splice(e,0,{seq:t,name:o}),l=e;for(let t of s)t.field>=l&&t.field++}s.push(new Wc(l,n.length,e.index,e.index+o.length)),r=r.slice(0,e.index)+o+r.slice(e.index+e[0].length)}for(let t;t=/\\([{}])/.exec(r);){r=r.slice(0,t.index)+t[1]+r.slice(t.index+t[0].length);for(let e of s)e.line==n.length&&e.from>t.index&&(e.from--,e.to--)}n.push(r)}return new Gc(n,s)}}let Bc=ii.widget({widget:new class extends ti{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),zc=ii.mark({class:"cm-snippetField"});class Nc{constructor(t,e){this.ranges=t,this.active=e,this.deco=ii.set(t.map((t=>(t.from==t.to?Bc:zc).range(t.from,t.to))))}map(t){let e=[];for(let i of this.ranges){let n=i.map(t);if(!n)return null;e.push(n)}return new Nc(e,this.active)}selectionInsideField(t){return t.ranges.every((t=>this.ranges.some((e=>e.field==this.active&&e.from<=t.from&&e.to>=t.to))))}}const Ic=ut.define({map:(t,e)=>t&&t.map(e)}),Lc=ut.define(),Yc=E.define({create:()=>null,update(t,e){for(let i of e.effects){if(i.is(Ic))return i.value;if(i.is(Lc)&&t)return new Nc(t.ranges,i.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>Ps.decorations.from(t,(t=>t?t.deco:ii.none))});function Fc(t,e){return R.create(t.filter((t=>t.field==e)).map((t=>R.range(t.from,t.to))))}function Hc(t){let i=Gc.parse(t);return(t,n,s,r)=>{let{text:o,ranges:l}=i.instantiate(t.state,s),a={changes:{from:s,to:r,insert:e.of(o)},scrollIntoView:!0};if(l.length&&(a.selection=Fc(l,0)),l.length>1){let e=new Nc(l,0),i=a.effects=[Ic.of(e)];void 0===t.state.field(Yc,!1)&&i.push(ut.appendConfig.of([Yc,eu,nu,jc]))}t.dispatch(t.state.update(a))}}function Jc(t){return({state:e,dispatch:i})=>{let n=e.field(Yc,!1);if(!n||t<0&&0==n.active)return!1;let s=n.active+t,r=t>0&&!n.ranges.some((e=>e.field==s+t));return i(e.update({selection:Fc(n.ranges,s),effects:Ic.of(r?null:new Nc(n.ranges,s))})),!0}}const Kc=[{key:"Tab",run:Jc(1),shift:Jc(-1)},{key:"Escape",run:({state:t,dispatch:e})=>!!t.field(Yc,!1)&&(e(t.update({effects:Ic.of(null)})),!0)}],tu=q.define({combine:t=>t.length?t[0]:Kc}),eu=L.highest(Vs.compute([tu],(t=>t.facet(tu))));function iu(t,e){return Object.assign(Object.assign({},e),{apply:Hc(t)})}const nu=Ps.domEventHandlers({mousedown(t,e){let i,n=e.state.field(Yc,!1);if(!n||null==(i=e.posAtCoords({x:t.clientX,y:t.clientY})))return!1;let s=n.ranges.find((t=>t.from<=i&&t.to>=i));return!(!s||s.field==n.active)&&(e.dispatch({selection:Fc(n.ranges,s.field),effects:Ic.of(n.ranges.some((t=>t.field>s.field))?new Nc(n.ranges,s.field):null)}),!0)}}),su={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},ru=ut.define({map(t,e){let i=e.mapPos(t,-1,w.TrackAfter);return null==i?void 0:i}}),ou=ut.define({map:(t,e)=>e.mapPos(t)}),lu=new class extends kt{};lu.startSide=1,lu.endSide=-1;const au=E.define({create:()=>Ct.empty,update(t,e){if(e.selection){let i=e.state.doc.lineAt(e.selection.main.head).from,n=e.startState.doc.lineAt(e.startState.selection.main.head).from;i!=e.changes.mapPos(n,-1)&&(t=Ct.empty)}t=t.map(e.changes);for(let i of e.effects)i.is(ru)?t=t.update({add:[lu.range(i.value,i.value+1)]}):i.is(ou)&&(t=t.update({filter:t=>t!=i.value}));return t}});const hu="()[]{}<>";function cu(t){for(let e=0;e<hu.length;e+=2)if(hu.charCodeAt(e)==t)return hu.charAt(e+1);return b(t<128?t:t+1)}function uu(t,e){return t.languageDataAt("closeBrackets",e)[0]||su}const fu="object"==typeof navigator&&/Android\b/.test(navigator.userAgent),Ou=Ps.inputHandler.of(((t,e,i,n)=>{if((fu?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(n.length>2||2==n.length&&1==S(Q(n,0))||e!=s.from||i!=s.to)return!1;let r=function(t,e){let i=uu(t,t.selection.main.head),n=i.brackets||su.brackets;for(let s of n){let r=cu(Q(s,0));if(e==s)return r==s?bu(t,s,n.indexOf(s+s+s)>-1,i):gu(t,s,r,i.before||su.before);if(e==r&&pu(t,t.selection.main.from))return Qu(t,s,r)}return null}(t.state,n);return!!r&&(t.dispatch(r),!0)})),du=[{key:"Backspace",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=uu(t,t.selection.main.head).brackets||su.brackets,n=null,s=t.changeByRange((e=>{if(e.empty){let n=function(t,e){let i=t.sliceString(e-2,e);return S(Q(i,0))==i.length?i:i.slice(1)}(t.doc,e.head);for(let s of i)if(s==n&&mu(t.doc,e.head)==cu(Q(s,0)))return{changes:{from:e.head-s.length,to:e.head+s.length},range:R.cursor(e.head-s.length)}}return{range:n=e}}));return n||e(t.update(s,{scrollIntoView:!0,userEvent:"delete.backward"})),!n}}];function pu(t,e){let i=!1;return t.field(au).between(0,t.doc.length,(t=>{t==e&&(i=!0)})),i}function mu(t,e){let i=t.sliceString(e,e+2);return i.slice(0,S(Q(i,0)))}function gu(t,e,i,n){let s=null,r=t.changeByRange((r=>{if(!r.empty)return{changes:[{insert:e,from:r.from},{insert:i,from:r.to}],effects:ru.of(r.to+e.length),range:R.range(r.anchor+e.length,r.head+e.length)};let o=mu(t.doc,r.head);return!o||/\s/.test(o)||n.indexOf(o)>-1?{changes:{insert:e+i,from:r.head},effects:ru.of(r.head+e.length),range:R.cursor(r.head+e.length)}:{range:s=r}}));return s?null:t.update(r,{scrollIntoView:!0,userEvent:"input.type"})}function Qu(t,e,i){let n=null,s=t.selection.ranges.map((e=>e.empty&&mu(t.doc,e.head)==i?R.cursor(e.head+i.length):n=e));return n?null:t.update({selection:R.create(s,t.selection.mainIndex),scrollIntoView:!0,effects:t.selection.ranges.map((({from:t})=>ou.of(t)))})}function bu(t,e,i,n){let s=n.stringPrefixes||su.stringPrefixes,r=null,o=t.changeByRange((n=>{if(!n.empty)return{changes:[{insert:e,from:n.from},{insert:e,from:n.to}],effects:ru.of(n.to+e.length),range:R.range(n.anchor+e.length,n.head+e.length)};let o,l=n.head,a=mu(t.doc,l);if(a==e){if(Su(t,l))return{changes:{insert:e+e,from:l},effects:ru.of(l+e.length),range:R.cursor(l+e.length)};if(pu(t,l)){let n=i&&t.sliceDoc(l,l+3*e.length)==e+e+e;return{range:R.cursor(l+e.length*(n?3:1)),effects:ou.of(l)}}}else{if(i&&t.sliceDoc(l-2*e.length,l)==e+e&&(o=yu(t,l-2*e.length,s))>-1&&Su(t,o))return{changes:{insert:e+e+e+e,from:l},effects:ru.of(l+e.length),range:R.cursor(l+e.length)};if(t.charCategorizer(l)(a)!=bt.Word&&yu(t,l,s)>-1&&!function(t,e,i,n){let s=ml(t).resolveInner(e,-1),r=n.reduce(((t,e)=>Math.max(t,e.length)),0);for(let o=0;o<5;o++){let o=t.sliceDoc(s.from,Math.min(s.to,s.from+i.length+r)),l=o.indexOf(i);if(!l||l>-1&&n.indexOf(o.slice(0,l))>-1){let e=s.firstChild;for(;e&&e.from==s.from&&e.to-e.from>i.length+l;){if(t.sliceDoc(e.to-i.length,e.to)==i)return!1;e=e.firstChild}return!0}let a=s.to==e&&s.parent;if(!a)break;s=a}return!1}(t,l,e,s))return{changes:{insert:e+e,from:l},effects:ru.of(l+e.length),range:R.cursor(l+e.length)}}return{range:r=n}}));return r?null:t.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function Su(t,e){let i=ml(t).resolveInner(e+1);return i.parent&&i.from==e}function yu(t,e,i){let n=t.charCategorizer(e);if(n(t.sliceDoc(e-1,e))!=bt.Word)return e;for(let s of i){let i=e-s.length;if(t.sliceDoc(i,e)==s&&n(t.sliceDoc(i-1,i))!=bt.Word)return i}return-1}function wu(t={}){return[Vc,Sc.of(t),Dc,xu,jc]}const vu=[{key:"Ctrl-Space",run:t=>!!t.state.field(Vc,!1)&&(t.dispatch({effects:Rc.of(!0)}),!0)},{key:"Escape",run:t=>{let e=t.state.field(Vc,!1);return!(!e||!e.active.some((t=>0!=t.state)))&&(t.dispatch({effects:Xc.of(null)}),!0)}},{key:"ArrowDown",run:_c(!0)},{key:"ArrowUp",run:_c(!1)},{key:"PageDown",run:_c(!0,"page")},{key:"PageUp",run:_c(!1,"page")},{key:"Enter",run:t=>{let e=t.state.field(Vc,!1);return!(t.state.readOnly||!e||!e.open||e.open.selected<0||Date.now()-e.open.timestamp<t.state.facet(Sc).interactionDelay)&&(e.open.disabled||mc(t,e.open.options[e.open.selected]),!0)}}],xu=L.highest(Vs.computeN([Sc],(t=>t.facet(Sc).defaultKeymap?[vu]:[]))),ku="#e06c75",$u="#abb2bf",Tu="#7d8799",Pu="#d19a66",Cu="#2c313a",Zu="#282c34",Au="#353a42",Ru="#528bff",Xu=[Ps.theme({"&":{color:$u,backgroundColor:Zu},".cm-content":{caretColor:Ru},".cm-cursor, .cm-dropCursor":{borderLeftColor:Ru},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:"#3E4451"},".cm-panels":{backgroundColor:"#21252b",color:$u},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847",outline:"1px solid #515a6b"},".cm-gutters":{backgroundColor:Zu,color:Tu,border:"none"},".cm-activeLineGutter":{backgroundColor:Cu},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Au},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Au,borderBottomColor:Au},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Cu,color:$u}}},{dark:!0}),da(ca.define([{tag:cl.keyword,color:"#c678dd"},{tag:[cl.name,cl.deleted,cl.character,cl.propertyName,cl.macroName],color:ku},{tag:[cl.function(cl.variableName),cl.labelName],color:"#61afef"},{tag:[cl.color,cl.constant(cl.name),cl.standard(cl.name)],color:Pu},{tag:[cl.definition(cl.name),cl.separator],color:$u},{tag:[cl.typeName,cl.className,cl.number,cl.changed,cl.annotation,cl.modifier,cl.self,cl.namespace],color:"#e5c07b"},{tag:[cl.operator,cl.operatorKeyword,cl.url,cl.escape,cl.regexp,cl.link,cl.special(cl.string)],color:"#56b6c2"},{tag:[cl.meta,cl.comment],color:Tu},{tag:cl.strong,fontWeight:"bold"},{tag:cl.emphasis,fontStyle:"italic"},{tag:cl.strikethrough,textDecoration:"line-through"},{tag:cl.link,color:Tu,textDecoration:"underline"},{tag:cl.heading,fontWeight:"bold",color:ku},{tag:[cl.atom,cl.bool,cl.special(cl.variableName)],color:Pu},{tag:[cl.processingInstruction,cl.string,cl.inserted],color:"#98c379"},{tag:cl.invalid,color:"#ffffff"}]))];class Uu{constructor(t,e,i,n,s,r,o,l,a,h=0,c){this.p=t,this.stack=e,this.state=i,this.reducePos=n,this.pos=s,this.score=r,this.buffer=o,this.bufferBase=l,this.curContext=a,this.lookAhead=h,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,i=0){let n=t.parser.context;return new Uu(t,[],e,i,i,0,[],0,n?new qu(n,n.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){let e=t>>19,i=65535&t,{parser:n}=this.p,s=n.dynamicPrecedence(i);if(s&&(this.score+=s),0==e)return this.pushState(n.getGoto(this.state,i,!0),this.reducePos),i<n.minRepeatTerm&&this.storeNode(i,this.reducePos,this.reducePos,4,!0),void this.reduceContext(i,this.reducePos);let r=this.stack.length-3*(e-1)-(262144&t?6:0),o=this.stack[r-2],l=this.stack[r-1],a=this.bufferBase+this.buffer.length-l;if(i<n.minRepeatTerm||131072&t){let t=n.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(i,o,t,a+4,!0)}if(262144&t)this.state=this.stack[r];else{let t=this.stack[r-3];this.state=n.getGoto(t,i,!0)}for(;this.stack.length>r;)this.stack.pop();this.reduceContext(i,o)}storeNode(t,e,i,n=4,s=!1){if(0==t&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let t=this,n=this.buffer.length;if(0==n&&t.parent&&(n=t.bufferBase-t.parent.bufferBase,t=t.parent),n>0&&0==t.buffer[n-4]&&t.buffer[n-1]>-1){if(e==i)return;if(t.buffer[n-2]>=e)return void(t.buffer[n-2]=i)}}if(s&&this.pos!=i){let s=this.buffer.length;if(s>0&&0!=this.buffer[s-4])for(;s>0&&this.buffer[s-2]>i;)this.buffer[s]=this.buffer[s-4],this.buffer[s+1]=this.buffer[s-3],this.buffer[s+2]=this.buffer[s-2],this.buffer[s+3]=this.buffer[s-1],s-=4,n>4&&(n-=4);this.buffer[s]=t,this.buffer[s+1]=e,this.buffer[s+2]=i,this.buffer[s+3]=n}else this.buffer.push(t,e,i,n)}shift(t,e,i){let n=this.pos;if(131072&t)this.pushState(65535&t,this.pos);else if(0==(262144&t)){let s=t,{parser:r}=this.p;(i>this.pos||e<=r.maxNode)&&(this.pos=i,r.stateFlag(s,1)||(this.reducePos=i)),this.pushState(s,n),this.shiftContext(e,n),e<=r.maxNode&&this.buffer.push(e,n,i,4)}else this.pos=i,this.shiftContext(e,n),e<=this.p.parser.maxNode&&this.buffer.push(e,n,i,4)}apply(t,e,i){65536&t?this.reduce(t):this.shift(t,e,i)}useNode(t,e){let i=this.p.reused.length-1;(i<0||this.p.reused[i]!=t)&&(this.p.reused.push(t),i++);let n=this.pos;this.reducePos=this.pos=n+t.length,this.pushState(e,n),this.buffer.push(i,n,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 i=t.buffer.slice(e),n=t.bufferBase+e;for(;t&&n==t.bufferBase;)t=t.parent;return new Uu(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,i,n,this.curContext,this.lookAhead,t)}recoverByDelete(t,e){let i=t<=this.p.parser.maxNode;i&&this.storeNode(t,this.pos,e,4),this.storeNode(0,this.pos,e,i?8:4),this.pos=this.reducePos=e,this.score-=190}canShift(t){for(let e=new _u(this);;){let i=this.p.parser.stateSlot(e.state,4)||this.p.parser.hasAction(e.state,t);if(0==i)return!1;if(0==(65536&i))return!0;e.reduce(i)}}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 i=[];for(let n,s=0;s<e.length;s+=2)(n=e[s+1])!=this.state&&this.p.parser.hasAction(n,t)&&i.push(e[s],n);if(this.stack.length<120)for(let t=0;i.length<8&&t<e.length;t+=2){let n=e[t+1];i.some(((t,e)=>1&e&&t==n))||i.push(e[t],n)}e=i}let i=[];for(let t=0;t<e.length&&i.length<4;t+=2){let n=e[t+1];if(n==this.state)continue;let s=this.split();s.pushState(n,this.pos),s.storeNode(0,s.pos,s.pos,4,!0),s.shiftContext(e[t],this.pos),s.score-=200,i.push(s)}return i}forceReduce(){let t=this.p.parser.stateSlot(this.state,5);if(0==(65536&t))return!1;let{parser:e}=this.p;if(!e.validAction(this.state,t)){let i=t>>19,n=65535&t,s=this.stack.length-3*i;if(s<0||e.getGoto(this.stack[s],n,!1)<0)return!1;this.storeNode(0,this.reducePos,this.reducePos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!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.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.reducePos,this.reducePos,-3)}emitLookAhead(){let t=this.buffer.length-1;(t<0||-4!=this.buffer[t])&&this.buffer.push(this.lookAhead,this.reducePos,this.reducePos,-4)}updateContext(t){if(t!=this.curContext.context){let e=new qu(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()}}class qu{constructor(t,e){this.tracker=t,this.context=e,this.hash=t.strict?t.hash(e):0}}var Vu;!function(t){t[t.Insert=200]="Insert",t[t.Delete=190]="Delete",t[t.Reduce=100]="Reduce",t[t.MaxNext=4]="MaxNext",t[t.MaxInsertStackDepth=300]="MaxInsertStackDepth",t[t.DampenInsertStackDepth=120]="DampenInsertStackDepth"}(Vu||(Vu={}));class _u{constructor(t){this.start=t,this.state=t.state,this.stack=t.stack,this.base=this.stack.length}reduce(t){let e=65535&t,i=t>>19;0==i?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=3*(i-1);let n=this.start.p.parser.getGoto(this.stack[this.base-3],e,!0);this.state=n}}class Mu{constructor(t,e,i){this.stack=t,this.pos=e,this.index=i,this.buffer=t.buffer,0==this.index&&this.maybeNext()}static create(t,e=t.bufferBase+t.buffer.length){return new Mu(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 Mu(this.stack,this.pos,this.index)}}class Du{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const ju=new Du;class Wu{constructor(t,e){this.input=t,this.ranges=e,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=ju,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 i=this.range,n=this.rangeIndex,s=this.pos+t;for(;s<i.from;){if(!n)return null;let t=this.ranges[--n];s-=i.from-t.to,i=t}for(;e<0?s>i.to:s>=i.to;){if(n==this.ranges.length-1)return null;let t=this.ranges[++n];s+=t.from-i.to,i=t}return s}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,i,n=this.chunkOff+t;if(n>=0&&n<this.chunk.length)e=this.pos+t,i=this.chunk.charCodeAt(n);else{let n=this.resolveOffset(t,1);if(null==n)return-1;if(e=n,e>=this.chunk2Pos&&e<this.chunk2Pos+this.chunk2.length)i=this.chunk2.charCodeAt(e-this.chunk2Pos);else{let t=this.rangeIndex,n=this.range;for(;n.to<=e;)n=this.ranges[++t];this.chunk2=this.input.chunk(this.chunk2Pos=e),e+this.chunk2.length>n.to&&(this.chunk2=this.chunk2.slice(0,n.to-e)),i=this.chunk2.charCodeAt(0)}}return e>=this.token.lookAhead&&(this.token.lookAhead=e+1),i}acceptToken(t,e=0){let i=e?this.resolveOffset(e,-1):this.pos;if(null==i||i<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=t,this.token.end=i}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=ju,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 i="";for(let n of this.ranges){if(n.from>=e)break;n.to>t&&(i+=this.input.read(Math.max(n.from,t),Math.min(n.to,e)))}return i}}class Eu{constructor(t,e){this.data=t,this.id=e}token(t,e){!function(t,e,i,n){let s=0,r=1<<n,{parser:o}=i.p,{dialect:l}=o;t:for(;0!=(r&t[s]);){let i=t[s+1];for(let n=s+3;n<i;n+=2)if((t[n+1]&r)>0){let i=t[n];if(l.allows(i)&&(-1==e.token.value||e.token.value==i||o.overrides(i,e.token.value))){e.acceptToken(i);break}}let n=e.next,a=0,h=t[s+2];if(!(e.next<0&&h>a&&65535==t[i+3*h-3]&&65535==t[i+3*h-3])){for(;a<h;){let r=a+h>>1,o=i+r+(r<<1),l=t[o],c=t[o+1]||65536;if(n<l)h=r;else{if(!(n>=c)){s=t[o+2],e.advance();continue t}a=r+1}}break}s=t[i+3*h-1]}}(this.data,t,e,this.id)}}Eu.prototype.contextual=Eu.prototype.fallback=Eu.prototype.extend=!1;class Gu{constructor(t,e={}){this.token=t,this.contextual=!!e.contextual,this.fallback=!!e.fallback,this.extend=!!e.extend}}function Bu(t,e=Uint16Array){if("string"!=typeof t)return t;let i=null;for(let n=0,s=0;n<t.length;){let r=0;for(;;){let e=t.charCodeAt(n++),i=!1;if(126==e){r=65535;break}e>=92&&e--,e>=34&&e--;let s=e-32;if(s>=46&&(s-=46,i=!0),r+=s,i)break;r*=46}i?i[s++]=r:i=new e(r)}return i}const zu="undefined"!=typeof process&&process.env&&/\bparse\b/.test(process.env.LOG);let Nu=null;var Iu,Lu;function Yu(t,e,i){let n=t.cursor(Qo.IncludeAnonymous);for(n.moveTo(e);;)if(!(i<0?n.childBefore(e):n.childAfter(e)))for(;;){if((i<0?n.to<e:n.from>e)&&!n.type.isError)return i<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(t.length,Math.max(n.from+1,e+25));if(i<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return i<0?0:t.length}}!function(t){t[t.Margin=25]="Margin"}(Iu||(Iu={}));class Fu{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?Yu(t.tree,t.from+t.offset,1)-t.offset:t.from,this.safeTo=t.openEnd?Yu(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 i=this.trees[e],n=this.index[e];if(n==i.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let s=i.children[n],r=this.start[e]+i.positions[n];if(r>t)return this.nextStart=r,null;if(s instanceof bo){if(r==t){if(r<this.safeFrom)return null;let t=r+s.length;if(t<=this.safeTo){let e=s.prop(uo.lookAhead);if(!e||t+e<this.fragment.to)return s}}this.index[e]++,r+s.length>=Math.max(this.safeFrom,t)&&(this.trees.push(s),this.start.push(r),this.index.push(0))}else this.index[e]++,this.nextStart=r+s.length}}}class Hu{constructor(t,e){this.stream=e,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=t.tokenizers.map((t=>new Du))}getActions(t){let e=0,i=null,{parser:n}=t.p,{tokenizers:s}=n,r=n.stateSlot(t.state,3),o=t.curContext?t.curContext.hash:0,l=0;for(let n=0;n<s.length;n++){if(0==(1<<n&r))continue;let a=s[n],h=this.tokens[n];if((!i||a.fallback)&&((a.contextual||h.start!=t.pos||h.mask!=r||h.context!=o)&&(this.updateCachedToken(h,a,t),h.mask=r,h.context=o),h.lookAhead>h.end+25&&(l=Math.max(h.lookAhead,l)),0!=h.value)){let n=e;if(h.extended>-1&&(e=this.addActions(t,h.extended,h.end,e)),e=this.addActions(t,h.value,h.end,e),!a.extend&&(i=h,e>n))break}}for(;this.actions.length>e;)this.actions.pop();return l&&t.setLookAhead(l),i||t.pos!=this.stream.end||(i=new Du,i.value=t.p.parser.eofTerm,i.start=i.end=t.pos,e=this.addActions(t,i.value,i.end,e)),this.mainToken=i,this.actions}getMainToken(t){if(this.mainToken)return this.mainToken;let e=new Du,{pos:i,p:n}=t;return e.start=i,e.end=Math.min(i+1,n.stream.end),e.value=i==n.stream.end?n.parser.eofTerm:0,e}updateCachedToken(t,e,i){let n=this.stream.clipPos(i.pos);if(e.token(this.stream.reset(n,t),i),t.value>-1){let{parser:e}=i.p;for(let n=0;n<e.specialized.length;n++)if(e.specialized[n]==t.value){let s=e.specializers[n](this.stream.read(t.start,t.end),i);if(s>=0&&i.p.parser.dialect.allows(s>>1)){0==(1&s)?t.value=s>>1:t.extended=s>>1;break}}}else t.value=0,t.end=this.stream.clipPos(n+1)}putAction(t,e,i,n){for(let e=0;e<n;e+=3)if(this.actions[e]==t)return n;return this.actions[n++]=t,this.actions[n++]=e,this.actions[n++]=i,n}addActions(t,e,i,n){let{state:s}=t,{parser:r}=t.p,{data:o}=r;for(let t=0;t<2;t++)for(let l=r.stateSlot(s,t?2:1);;l+=3){if(65535==o[l]){if(1!=o[l+1]){0==n&&2==o[l+1]&&(n=this.putAction(sf(o,l+2),e,i,n));break}l=sf(o,l+2)}o[l]==e&&(n=this.putAction(sf(o,l+1),e,i,n))}return n}}!function(t){t[t.Distance=5]="Distance",t[t.MaxRemainingPerStep=3]="MaxRemainingPerStep",t[t.MinBufferLengthPrune=500]="MinBufferLengthPrune",t[t.ForceReduceLimit=10]="ForceReduceLimit",t[t.CutDepth=15e3]="CutDepth",t[t.CutTo=9e3]="CutTo"}(Lu||(Lu={}));class Ju{constructor(t,e,i,n){this.parser=t,this.input=e,this.ranges=n,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.stream=new Wu(e,n),this.tokens=new Hu(t,this.stream),this.topTerm=t.top[1];let{from:s}=n[0];this.stacks=[Uu.start(this,t.top[0],s)],this.fragments=i.length&&this.stream.end-s>4*t.bufferLength?new Fu(i,t.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let t,e,i=this.stacks,n=this.minStackPos,s=this.stacks=[];for(let r=0;r<i.length;r++){let o=i[r];for(;;){if(this.tokens.mainToken=null,o.pos>n)s.push(o);else{if(this.advanceStack(o,s,i))continue;{t||(t=[],e=[]),t.push(o);let i=this.tokens.getMainToken(o);e.push(i.value,i.end)}}break}}if(!s.length){let e=t&&function(t){let e=null;for(let i of t){let t=i.p.stoppedAt;(i.pos==i.p.stream.end||null!=t&&i.pos>t)&&i.p.parser.stateFlag(i.state,2)&&(!e||e.score<i.score)&&(e=i)}return e}(t);if(e)return this.stackToTree(e);if(this.parser.strict)throw zu&&t&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+n);this.recovering||(this.recovering=5)}if(this.recovering&&t){let i=null!=this.stoppedAt&&t[0].pos>this.stoppedAt?t[0]:this.runRecovery(t,e,s);if(i)return this.stackToTree(i.forceAll())}if(this.recovering){let t=1==this.recovering?1:3*this.recovering;if(s.length>t)for(s.sort(((t,e)=>e.score-t.score));s.length>t;)s.pop();s.some((t=>t.reducePos>n))&&this.recovering--}else if(s.length>1)t:for(let t=0;t<s.length-1;t++){let e=s[t];for(let i=t+1;i<s.length;i++){let n=s[i];if(e.sameState(n)||e.buffer.length>500&&n.buffer.length>500){if(!((e.score-n.score||e.buffer.length-n.buffer.length)>0)){s.splice(t--,1);continue t}s.splice(i--,1)}}}this.minStackPos=s[0].pos;for(let t=1;t<s.length;t++)s[t].pos<this.minStackPos&&(this.minStackPos=s[t].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,i){let n=t.pos,{parser:s}=this,r=zu?this.stackID(t)+" -> ":"";if(null!=this.stoppedAt&&n>this.stoppedAt)return t.forceReduce()?t:null;if(this.fragments){let e=t.curContext&&t.curContext.tracker.strict,i=e?t.curContext.hash:0;for(let o=this.fragments.nodeAt(n);o;){let n=this.parser.nodeSet.types[o.type.id]==o.type?s.getGoto(t.state,o.type.id):-1;if(n>-1&&o.length&&(!e||(o.prop(uo.contextHash)||0)==i))return t.useNode(o,n),zu&&console.log(r+this.stackID(t)+` (via reuse of ${s.getName(o.type.id)})`),!0;if(!(o instanceof bo)||0==o.children.length||o.positions[0]>0)break;let l=o.children[0];if(!(l instanceof bo&&0==o.positions[0]))break;o=l}}let o=s.stateSlot(t.state,4);if(o>0)return t.reduce(o),zu&&console.log(r+this.stackID(t)+` (via always-reduce ${s.getName(65535&o)})`),!0;if(t.stack.length>=15e3)for(;t.stack.length>9e3&&t.forceReduce(););let l=this.tokens.getActions(t);for(let o=0;o<l.length;){let a=l[o++],h=l[o++],c=l[o++],u=o==l.length||!i,f=u?t:t.split();if(f.apply(a,h,c),zu&&console.log(r+this.stackID(f)+` (via ${0==(65536&a)?"shift":`reduce of ${s.getName(65535&a)}`} for ${s.getName(h)} @ ${n}${f==t?"":", split"})`),u)return!0;f.pos>n?e.push(f):i.push(f)}return!1}advanceFully(t,e){let i=t.pos;for(;;){if(!this.advanceStack(t,null,null))return!1;if(t.pos>i)return Ku(t,e),!0}}runRecovery(t,e,i){let n=null,s=!1;for(let r=0;r<t.length;r++){let o=t[r],l=e[r<<1],a=e[1+(r<<1)],h=zu?this.stackID(o)+" -> ":"";if(o.deadEnd){if(s)continue;if(s=!0,o.restart(),zu&&console.log(h+this.stackID(o)+" (restarted)"),this.advanceFully(o,i))continue}let c=o.split(),u=h;for(let t=0;c.forceReduce()&&t<10;t++){if(zu&&console.log(u+this.stackID(c)+" (via force-reduce)"),this.advanceFully(c,i))break;zu&&(u=this.stackID(c)+" -> ")}for(let t of o.recoverByInsert(l))zu&&console.log(h+this.stackID(t)+" (via recover-insert)"),this.advanceFully(t,i);this.stream.end>o.pos?(a==o.pos&&(a++,l=0),o.recoverByDelete(l,a),zu&&console.log(h+this.stackID(o)+` (via recover-delete ${this.parser.getName(l)})`),Ku(o,i)):(!n||n.score<o.score)&&(n=o)}return n}stackToTree(t){return t.close(),bo.build({buffer:Mu.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=(Nu||(Nu=new WeakMap)).get(t);return e||Nu.set(t,e=String.fromCodePoint(this.nextStackID++)),e+t}}function Ku(t,e){for(let i=0;i<e.length;i++){let n=e[i];if(n.pos==t.pos&&n.sameState(t))return void(e[i].score<t.score&&(e[i]=t))}e.push(t)}class tf{constructor(t,e,i){this.source=t,this.flags=e,this.disabled=i}allows(t){return!this.disabled||0==this.disabled[t]}}const ef=t=>t;class nf extends _o{constructor(t){if(super(),this.wrappers=[],14!=t.version)throw new RangeError(`Parser version (${t.version}) doesn't match runtime version (14)`);let e=t.nodeNames.split(" ");this.minRepeatTerm=e.length;for(let i=0;i<t.repeatNodeCount;i++)e.push("");let i=Object.keys(t.topRules).map((e=>t.topRules[e][1])),n=[];for(let t=0;t<e.length;t++)n.push([]);function s(t,e,i){n[t].push([e,e.deserialize(String(i))])}if(t.nodeProps)for(let e of t.nodeProps){let t=e[0];"string"==typeof t&&(t=uo[t]);for(let i=1;i<e.length;){let n=e[i++];if(n>=0)s(n,t,e[i++]);else{let r=e[i+-n];for(let o=-n;o>0;o--)s(e[i++],t,r);i++}}}this.nodeSet=new po(e.map(((e,s)=>Oo.define({name:s>=this.minRepeatTerm?void 0:e,id:s,props:n[s],top:i.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=ao;let r=Bu(t.tokenData);this.context=t.context,this.specializerSpecs=t.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let t=0;t<this.specializerSpecs.length;t++)this.specialized[t]=this.specializerSpecs[t].term;this.specializers=this.specializerSpecs.map(of),this.states=Bu(t.states,Uint32Array),this.data=Bu(t.stateData),this.goto=Bu(t.goto),this.maxTerm=t.maxTerm,this.tokenizers=t.tokenizers.map((t=>"number"==typeof t?new Eu(r,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,i){let n=new Ju(this,t,e,i);for(let s of this.wrappers)n=s(n,t,e,i);return n}getGoto(t,e,i=!1){let n=this.goto;if(e>=n[0])return-1;for(let s=n[e+1];;){let e=n[s++],r=1&e,o=n[s++];if(r&&i)return o;for(let i=s+(e>>1);s<i;s++)if(n[s]==t)return o;if(r)return-1}}hasAction(t,e){let i=this.data;for(let n=0;n<2;n++)for(let s,r=this.stateSlot(t,n?2:1);;r+=3){if(65535==(s=i[r])){if(1!=i[r+1]){if(2==i[r+1])return sf(i,r+2);break}s=i[r=sf(i,r+2)]}if(s==e||0==s)return sf(i,r+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){if(e==this.stateSlot(t,4))return!0;for(let i=this.stateSlot(t,1);;i+=3){if(65535==this.data[i]){if(1!=this.data[i+1])return!1;i=sf(this.data,i+2)}if(e==sf(this.data,i+1))return!0}}nextStates(t){let e=[];for(let i=this.stateSlot(t,1);;i+=3){if(65535==this.data[i]){if(1!=this.data[i+1])break;i=sf(this.data,i+2)}if(0==(1&this.data[i+2])){let t=this.data[i+1];e.some(((e,i)=>1&i&&e==t))||e.push(this.data[i],t)}}return e}overrides(t,e){let i=rf(this.data,this.tokenPrecTable,e);return i<0||rf(this.data,this.tokenPrecTable,t)<i}configure(t){let e=Object.assign(Object.create(nf.prototype),this);if(t.props&&(e.nodeSet=this.nodeSet.extend(...t.props)),t.top){let i=this.topRules[t.top];if(!i)throw new RangeError(`Invalid top rule name ${t.top}`);e.top=i}return t.tokenizers&&(e.tokenizers=this.tokenizers.map((e=>{let i=t.tokenizers.find((t=>t.from==e));return i?i.to:e}))),t.specializers&&(e.specializers=this.specializers.slice(),e.specializerSpecs=this.specializerSpecs.map(((i,n)=>{let s=t.specializers.find((t=>t.from==i.external));if(!s)return i;let r=Object.assign(Object.assign({},i),{external:s.to});return e.specializers[n]=of(r),r}))),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),i=e.map((()=>!1));if(t)for(let n of t.split(" ")){let t=e.indexOf(n);t>=0&&(i[t]=!0)}let n=null;for(let t=0;t<e.length;t++)if(!i[t])for(let i,s=this.dialects[e[t]];65535!=(i=this.data[s++]);)(n||(n=new Uint8Array(this.maxTerm+1)))[i]=1;return new tf(t,i,n)}static deserialize(t){return new nf(t)}}function sf(t,e){return t[e]|t[e+1]<<16}function rf(t,e,i){for(let n,s=e;65535!=(n=t[s]);s++)if(n==i)return s-e;return-1}function of(t){if(t.external){let e=t.extend?1:0;return(i,n)=>t.external(i,n)<<1|e}return t.get}const lf=295,af=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],hf=new class{constructor(t){this.start=t.start,this.shift=t.shift||ef,this.reduce=t.reduce||ef,this.reuse=t.reuse||ef,this.hash=t.hash||(()=>0),this.strict=!1!==t.strict}}({start:!1,shift:(t,e)=>5==e||6==e||299==e?t:300==e,strict:!1}),cf=new Gu(((t,e)=>{let{next:i}=t;(125==i||-1==i||e.context)&&e.canShift(297)&&t.acceptToken(297)}),{contextual:!0,fallback:!0}),uf=new Gu(((t,e)=>{let i,{next:n}=t;af.indexOf(n)>-1||(47!=n||47!=(i=t.peek(1))&&42!=i)&&125!=n&&59!=n&&-1!=n&&!e.context&&e.canShift(294)&&t.acceptToken(294)}),{contextual:!0}),ff=new Gu(((t,e)=>{let{next:i}=t;if((43==i||45==i)&&(t.advance(),i==t.next)){t.advance();let i=!e.context&&e.canShift(2);t.acceptToken(i?2:3)}}),{contextual:!0}),Of=new Gu((t=>{for(let e=!1,i=0;;i++){let{next:n}=t;if(n<0){i&&t.acceptToken(lf);break}if(96==n){i?t.acceptToken(lf):t.acceptToken(296,1);break}if(123==n&&e){1==i?t.acceptToken(4,1):t.acceptToken(lf,-1);break}if(10==n&&i){t.advance(),t.acceptToken(lf);break}92==n&&t.advance(),e=36==n,t.advance()}})),df=new Gu(((t,e)=>{if(101==t.next&&e.dialectEnabled(1)){t.advance();for(let e=0;e<6;e++){if(t.next!="xtends".charCodeAt(e))return;t.advance()}t.next>=57&&t.next<=65||t.next>=48&&t.next<=90||95==t.next||t.next>=97&&t.next<=122||t.next>160||t.acceptToken(1)}})),pf=Go({"get set async static":cl.modifier,"for while do if else switch try catch finally return throw break continue default case":cl.controlKeyword,"in of await yield void typeof delete instanceof":cl.operatorKeyword,"let var const function class extends":cl.definitionKeyword,"import export from":cl.moduleKeyword,"with debugger as new":cl.keyword,TemplateString:cl.special(cl.string),super:cl.atom,BooleanLiteral:cl.bool,this:cl.self,null:cl.null,Star:cl.modifier,VariableName:cl.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":cl.function(cl.variableName),VariableDefinition:cl.definition(cl.variableName),Label:cl.labelName,PropertyName:cl.propertyName,PrivatePropertyName:cl.special(cl.propertyName),"CallExpression/MemberExpression/PropertyName":cl.function(cl.propertyName),"FunctionDeclaration/VariableDefinition":cl.function(cl.definition(cl.variableName)),"ClassDeclaration/VariableDefinition":cl.definition(cl.className),PropertyDefinition:cl.definition(cl.propertyName),PrivatePropertyDefinition:cl.definition(cl.special(cl.propertyName)),UpdateOp:cl.updateOperator,LineComment:cl.lineComment,BlockComment:cl.blockComment,Number:cl.number,String:cl.string,ArithOp:cl.arithmeticOperator,LogicOp:cl.logicOperator,BitOp:cl.bitwiseOperator,CompareOp:cl.compareOperator,RegExp:cl.regexp,Equals:cl.definitionOperator,Arrow:cl.function(cl.punctuation),": Spread":cl.punctuation,"( )":cl.paren,"[ ]":cl.squareBracket,"{ }":cl.brace,"InterpolationStart InterpolationEnd":cl.special(cl.brace),".":cl.derefOperator,", ;":cl.separator,"@":cl.meta,TypeName:cl.typeName,TypeDefinition:cl.definition(cl.typeName),"type enum interface implements namespace module declare":cl.definitionKeyword,"abstract global Privacy readonly override":cl.modifier,"is keyof unique infer":cl.operatorKeyword,JSXAttributeValue:cl.attributeValue,JSXText:cl.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":cl.angleBracket,"JSXIdentifier JSXNameSpacedName":cl.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":cl.attributeName,"JSXBuiltin/JSXIdentifier":cl.standard(cl.tagName)}),mf={__proto__:null,export:18,as:23,from:29,default:32,async:37,function:38,this:50,true:58,false:58,null:68,void:72,typeof:76,super:92,new:126,await:143,yield:145,delete:146,class:156,extends:158,public:213,private:213,protected:213,readonly:215,instanceof:234,satisfies:237,in:238,const:240,import:272,keyof:327,unique:331,infer:337,is:373,abstract:393,implements:395,type:397,let:400,var:402,interface:409,enum:413,namespace:419,module:421,declare:425,global:429,for:450,of:459,while:462,with:466,do:470,if:474,else:476,switch:480,case:486,try:492,catch:496,finally:500,return:504,throw:508,break:512,continue:516,debugger:520},gf={__proto__:null,async:113,get:115,set:117,public:175,private:175,protected:175,static:177,abstract:179,override:181,readonly:187,accessor:189,new:377},Qf={__proto__:null,"<":133},bf=nf.deserialize({version:14,states:"$CWO`QdOOO$}QdOOO)WQ(C|O'#ChO)_OWO'#DYO+jQdO'#D_O+zQdO'#DjO$}QdO'#DtO.OQdO'#DzOOQ(C['#ET'#ETO.fQ`O'#EQOOQO'#IW'#IWO.nQ`O'#GgOOQO'#Ee'#EeO.yQ`O'#EdO/OQ`O'#EdO1QQ(C|O'#JQO3nQ(C|O'#JRO4_Q`O'#FSO4dQ!bO'#FkOOQ(C['#F['#F[O4oO#tO'#F[O4}Q&jO'#FrO6bQ`O'#FqOOQ(C['#JR'#JROOQ(CW'#JQ'#JQOOQS'#Jk'#JkO6gQ`O'#H{O6lQ(ChO'#H|OOQS'#Iu'#IuOOQS'#IO'#IOQ`QdOOO$}QdO'#DlO6tQ`O'#GgO6yQ&jO'#CmO7XQ`O'#EcO7dQ`O'#EnO7iQ&jO'#FZO8TQ`O'#GgO8YQ`O'#GkO8eQ`O'#GkO8sQ`O'#GnO8sQ`O'#GoO8sQ`O'#GqO6tQ`O'#GtO9dQ`O'#GwO:uQ`O'#CdO;VQ`O'#HUO;_Q`O'#H[O;_Q`O'#H^O`QdO'#H`O;_Q`O'#HbO;_Q`O'#HeO;dQ`O'#HkO;iQ(CjO'#HqO$}QdO'#HsO;tQ(CjO'#HuO<PQ(CjO'#HwO6lQ(ChO'#HyO<[Q(C|O'#ChO<xQ,UO'#DdQOQ`OOO=mQaO'#D{O6yQ&jO'#EcO={Q`O'#EcO>WQpO'#FZO$}QdO'#DZOOOW'#IQ'#IQO>`OWO,59tOOQ(C[,59t,59tO>kQdO'#IRO?OQ`O'#JSOAQQtO'#JSO)jQdO'#JSOAXQ`O,59yOAoQ`O'#EeOA|Q`O'#J`OBXQ`O'#J_OBXQ`O'#J_OBaQ`O,5;ROBfQ`O'#J^OOQ(C[,5:U,5:UOBmQdO,5:UODnQ(C|O,5:`OE_Q`O,5:fOEdQ`O'#J[OF^Q(ChO'#J]O8YQ`O'#J[OFeQ`O'#J[OFmQ`O,5;QOFrQ`O'#J[OOQ(C]'#Ch'#ChO$}QdO'#DzOGfQpO,5:lOOQO'#JX'#JXOOQO-E<U-E<UO6tQ`O,5=ROG|Q`O,5=ROHRQdO,5;OOJRQ&jO'#E`OKcQ`O,5;OOLxQ&jO'#DnOMPQdO'#DsOMZQ,UO,5;XOMcQ,UO,5;XO$}QdO,5;XOOQS'#Ez'#EzOOQS'#E|'#E|O$}QdO,5;YO$}QdO,5;YO$}QdO,5;YO$}QdO,5;YO$}QdO,5;YO$}QdO,5;YO$}QdO,5;YO$}QdO,5;YO$}QdO,5;YO$}QdO,5;YO$}QdO,5;YOOQS'#FQ'#FQOMqQdO,5;kOOQ(C[,5;p,5;pOOQ(C[,5;q,5;qO! qQ`O,5;qOOQ(C[,5;r,5;rO$}QdO'#I^O! yQ(ChO,5<_OJRQ&jO,5;YO!!hQ&jO,5;YO$}QdO,5;nO!!oQ!bO'#FaO!#lQ!bO'#JdO!#WQ!bO'#JdO!#sQ!bO'#JdOOQO'#Jd'#JdO!$XQ!bO,5;yOOOO,5<V,5<VO!$jQdO'#FmOOOO'#I]'#I]O4oO#tO,5;vO!$qQ!bO'#FoOOQ(C[,5;v,5;vO!%bQ7]O'#CsOOQ(C]'#Cv'#CvO!%uQ`O'#CvO!%zOWO'#CzO!&hQ&kO,5<[O!&oQ`O,5<^O!(RQMhO'#F|O!(`Q`O'#F}O!(eQ`O'#F}O!(jQMhO'#GRO!)iQ,UO'#GVO!*_Q7]O'#I}OOQ(C]'#I}'#I}O!+eQaO'#I|O!+sQ`O'#I{O!+{Q`O'#CrOOQ(C]'#Ct'#CtOOQ(C]'#C}'#C}OOQ(C]'#DP'#DPO.iQ`O'#DROKhQ&jO'#FtOKhQ&jO'#FvO!,TQ`O'#FxO!,YQ`O'#FyO!(eQ`O'#GPOKhQ&jO'#GUO!,_Q`O'#EfO!,yQ`O,5<]O`QdO,5>gOOQS'#Ix'#IxOOQS,5>h,5>hOOQS-E;|-E;|O!.xQ(C|O,5:WOOQ(CX'#Cp'#CpO!/lQ&kO,5=ROOQO'#Cf'#CfO!/}Q(ChO'#IyO6bQ`O'#IyO;dQ`O,59XO!0`Q!bO,59XO!0hQ&jO,59XO6yQ&jO,59XO!0sQ`O,5;OO!0{Q`O'#HTO!1ZQ`O'#JoO$}QdO,5;sO!1cQ,UO,5;uO!1hQ`O,5=nO!1mQ`O,5=nO!1rQ`O,5=nO6lQ(ChO,5=nO!2QQ`O'#EgO!2wQ,UO'#EhOOQ(CW'#J^'#J^O!3OQ(ChO'#JlO6lQ(ChO,5=VO8sQ`O,5=]OOQP'#Cs'#CsO!3ZQ!bO,5=YO!3cQ!cO,5=ZO!3nQ`O,5=]O!3sQpO,5=`O;dQ`O'#GyO6tQ`O'#G{O!3{Q`O'#G{O6yQ&jO'#HOO!4QQ`O'#HOOOQS,5=c,5=cO!4VQ`O'#HPO!4_Q`O'#CmO!4dQ`O,59OO!4nQ`O,59OO!6sQdO,59OOOQS,59O,59OO!7QQ(ChO,59OO$}QdO,59OO!7]QdO'#HWOOQS'#HX'#HXOOQS'#HY'#HYO`QdO,5=pO!7mQ`O,5=pO`QdO,5=vO`QdO,5=xO!7rQ`O,5=zO`QdO,5=|O!7wQ`O,5>PO!7|QdO,5>VOOQS,5>],5>]O$}QdO,5>]O6lQ(ChO,5>_OOQS,5>a,5>aO!<QQ`O,5>aOOQS,5>c,5>cO!<QQ`O,5>cOOQS,5>e,5>eO!<VQ!bO'#DWOOQ(CW'#JU'#JUO$}QdO'#JUO!<tQ!bO'#JUO!=cQ!bO'#DeO!=tQ,UO'#DeO!@PQdO'#DeO!@WQ`O'#JTO!@`Q`O,5:OO!@eQ`O'#EiO!@sQ`O'#JaO!@{Q`O,5;SO!AcQ,UO'#DeO!AmQ,UO'#EOOOQ(C[,5:g,5:gO$}QdO,5:gOJRQ&jO,5:gO!BjQaO,5:gO;dQ`O,5:}O!0`Q!bO,5:}O!0hQ&jO,5:}O6yQ&jO,5:}O!BuQpO,59uOOOW-E<O-E<OOOQ(C[1G/`1G/`O!BzQtO,5>mO)jQdO,5>mOOQO,5>s,5>sO!CUQdO'#IROOQO-E<P-E<PO!CcQ`O,5?nO!CkQtO,5?nO!CrQ`O,5?yOOQ(C[1G/e1G/eO$}QdO,5?zO!CzQ`O'#IXOOQO-E<V-E<VO!CrQ`O,5?yOOQ(CW1G0m1G0mOOQ(C[1G/p1G/pOOQ(C[1G0Q1G0QO!D`Q`O,5?vO8YQ`O,5?vO!DhQ`O,5?vOOQ(CW'#E_'#E_O$}QdO,5?wO!DvQ(ChO,5?wO!EXQ(ChO,5?wO!E`Q`O'#IZO!D`Q`O,5?vOOQ(CW1G0l1G0lOMZQ,UO,5:nOMfQ,UO,5:nOOQO,5:p,5:pO!E}Q`O,5:pO!FVQ&kO1G2mO6tQ`O1G2mOOQ(C[1G0j1G0jO!FhQ(C|O1G0jO!GmQ(CyO,5:zOOQ(C]'#F{'#F{O!JWQ(C}O'#I}OHRQdO1G0jO!J}Q&kO'#JVO!KXQ`O,5:YO!K^QtO'#JWO$}QdO'#JWO!KhQ`O,5:_OOQ(C]'#DW'#DWOOQ(C[1G0s1G0sO$}QdO1G0sOOQ(C[1G1]1G1]O!KmQ`O1G0sO!NUQ(C|O1G0tO!N]Q(C|O1G0tO#!vQ(C|O1G0tO#!}Q(C|O1G0tO#%XQ(C|O1G0tO#%oQ(C|O1G0tO#(iQ(C|O1G0tO#(pQ(C|O1G0tO#+ZQ(C|O1G0tO#+bQ(C|O1G0tO#-YQ(C|O1G0tO#0YQ!LUO'#ChO#2WQ!LUO1G1VO#4UQ!LUO'#JRO! tQ`O1G1]O#4iQ(C|O,5>xOOQ(CW-E<[-E<[O#5]Q(C}O1G0tOOQ(C[1G0t1G0tO#7hQ(C|O1G1YO#8[Q!bO,5;}O#8dQ!bO,5<OO#8lQ!bO'#FfO#9TQ`O'#FeOOQO'#Je'#JeOOQO'#I['#I[O#9YQ!bO1G1eOOQ(C[1G1e1G1eOOOO1G1p1G1pO#9kQ!LUO'#JQO#9uQ`O,5<XOMqQdO,5<XOOOO-E<Z-E<ZOOQ(C[1G1b1G1bOOQ(C[,5<Z,5<ZO#9zQ!bO,5<ZOOQ(C],59b,59bOJRQ&jO'#C|OOOW'#IP'#IPO#:POWO,59fOOQ(C],59f,59fO$}QdO1G1vO!,YQ`O'#I`O#:[Q`O,5<oOOQ(C],5<l,5<lOOQO'#Gb'#GbOKhQ&jO,5<{OOQO'#Gd'#GdOKhQ&jO,5<}OJRQ&jO,5=POOQO1G1x1G1xO#:gQqO'#CpO#:zQqO,5<hO#;RQ`O'#JhO6tQ`O'#JhO#;aQ`O,5<jOKhQ&jO,5<iO#;fQ`O'#GOO#;qQ`O,5<iO#;vQqO'#F{O#<TQqO'#JiO#<_Q`O'#JiOJRQ&jO'#JiO#<dQ`O,5<mOOQ(CW'#Di'#DiO#<iQ!bO'#GWO!)dQ,UO'#GWO#<zQ`O'#GYO#=PQ`O'#G[O!(eQ`O'#G_O#=UQ(ChO'#IbO#=aQ,UO,5<qOOQ(C],5<q,5<qO#=hQ,UO'#GWO#=vQ,UO'#GXO#>OQ,UO'#GXOOQ(C],5=Q,5=QOKhQ&jO,5?hOKhQ&jO,5?hO#>TQ`O'#IcO#>`Q`O,5?gO#>hQ`O,59^O#?XQ&kO,59mOOQ(C],59m,59mO#?zQ&kO,5<`O#@mQ&kO,5<bO#@wQ`O,5<dOOQ(C],5<e,5<eO#@|Q`O,5<kO#ARQ&kO,5<pOHRQdO1G1wO#AcQ`O1G1wOOQS1G4R1G4ROOQ(C[1G/r1G/rO! qQ`O1G/rOOQS1G2m1G2mOJRQ&jO1G2mO$}QdO1G2mOJRQ&jO1G2mO#AhQaO1G2mO#CQQ&jO'#E`OOQ(CW,5?e,5?eO#C[Q(ChO,5?eOOQS1G.s1G.sO;dQ`O1G.sO!0`Q!bO1G.sO!0hQ&jO1G.sO#CmQ`O1G0jO#CrQ`O'#ChO#C}Q`O'#JpO#DVQ`O,5=oO#D[Q`O'#JpO#DaQ`O'#JpO#DiQ`O'#IkO#DwQ`O,5@ZO#EPQtO1G1_OOQ(C[1G1a1G1aO6tQ`O1G3YO#EWQ`O1G3YO#E]Q`O1G3YO#EbQ`O1G3YOOQS1G3Y1G3YO8YQ`O'#J_O8YQ`O'#EiO$}QdO'#EiO8YQ`O'#IeO#EgQ(ChO,5@WOOQS1G2q1G2qO!3nQ`O1G2wOJRQ&jO1G2tO#ErQ`O1G2tOOQS1G2u1G2uOJRQ&jO1G2uO#EwQaO1G2uO#FPQ,UO'#GsOOQS1G2w1G2wO!)dQ,UO'#IgO!3sQpO1G2zOOQS1G2z1G2zOOQS,5=e,5=eO#FXQ&kO,5=gO6tQ`O,5=gO#=PQ`O,5=jO6bQ`O,5=jO!0`Q!bO,5=jO!0hQ&jO,5=jO6yQ&jO,5=jO#FjQ`O'#JnO#FuQ`O,5=kOOQS1G.j1G.jO#FzQ(ChO1G.jO#GVQ`O1G.jO#G[Q`O1G.jO6lQ(ChO1G.jO#GdQtO,5@]O#GnQ`O,5@]O#GyQdO,5=rO#HQQ`O,5=rO8YQ`O,5@]OOQS1G3[1G3[O`QdO1G3[OOQS1G3b1G3bOOQS1G3d1G3dO;_Q`O1G3fO#HVQdO1G3hO#LTQdO'#HgOOQS1G3k1G3kO#LbQ`O'#HmO;dQ`O'#HoOOQS1G3q1G3qO#LjQdO1G3qO6lQ(ChO1G3wOOQS1G3y1G3yOOQ(CW'#GS'#GSO6lQ(ChO1G3{O6lQ(ChO1G3}O$!kQ`O,5?pOMqQdO,5;TO8YQ`O,5;TO;dQ`O,5:POMqQdO,5:PO$}QdO'#JUO!0`Q!bO,5:PO$!pQ!LUO,5:POOQO,5;T,5;TO$!zQ,UO'#ISO$#bQ`O,5?oOOQ(C[1G/j1G/jO$#jQ,UO'#IYO$#tQ`O,5?{OOQ(CW1G0n1G0nO!=tQ,UO,5:PO$#|Q,UO'#E[OOQ(CW'#EZ'#EZO$$sQ(DjO'#E[O$%_Q,UO'#EPOOQO'#IV'#IVO$%pQ,UO,5:jOOQ(C[,5:j,5:jO$&mQ,UO'#EPO$&zQ,UO'#EPO$'[Q,UO'#EbO$'_Q,UO'#E[O$'xQ,UO'#E[O$%_Q,UO'#E[O$(iQ`O1G0RO$(nQqO1G0ROOQ(C[1G0R1G0RO$}QdO1G0ROJRQ&jO1G0ROOQ(C[1G0i1G0iO;dQ`O1G0iO!0`Q!bO1G0iO!0hQ&jO1G0iOOOW1G/a1G/aO$(uQpO,5<_O$(}QtO1G4XOOQO1G4_1G4_O$}QdO,5>mO$)XQ`O1G5YO$)aQ`O1G5eO$)iQtO1G5fO8YQ`O,5>sO$)sQ`O1G5bO$)sQ`O1G5bO8YQ`O1G5bO$){Q(C|O1G5cO$}QdO1G5cO$*]Q(ChO1G5cO$*nQ`O,5>uO8YQ`O,5>uOOQO,5>u,5>uO$+SQ`O,5>uOOQO-E<X-E<XOOQO1G0Y1G0YOOQO1G0[1G0[O! tQ`O1G0[OOQS7+(X7+(XOJRQ&jO7+(XO$}QdO7+(XOJRQ&jO7+(XO$+bQaO7+(XO$+pQ&kO7+(XO$,RQ(C}O,59mO$.ZQ(C}O,5<`O$0fQ(C}O,5<bO$2qQ(C}O,5<pOOQ(C[7+&U7+&UO$5SQ(C|O7+&UO$5vQ&jO'#ITO$6QQ`O,5?qOOQ(C]1G/t1G/tO$6YQdO'#IUO$6gQ`O,5?rO$6oQtO,5?rOOQ(C[1G/y1G/yO$6yQ`O7+&_OOQ(C[7+&_7+&_O$7OQ!LUO,5:`O$}QdO7+&qO$7YQ!LUO,5:WOOQ(C[7+&w7+&wOOQO1G1i1G1iOOQO1G1j1G1jO$7gQ$ISO,5<QOMqQdO,5<POOQO-E<Y-E<YOOQ(C[7+'P7+'POOOO7+'[7+'[OOOO1G1s1G1sO$7rQ`O1G1sOOQ(C[1G1u1G1uO$7wQqO,59hOOOW-E;}-E;}OOQ(C]1G/Q1G/QO$8OQ(C|O7+'bOOQ(C],5>z,5>zO$8rQ`O,5>zOOQ(C]1G2Z1G2ZP$8wQ`O'#I`POQ(C]-E<^-E<^O$9hQ&kO1G2gO$:ZQ&kO1G2iO$:eQqO1G2kOOQ(C]1G2S1G2SO$:lQ`O'#I_O$:zQ`O,5@SO$:zQ`O,5@SO$;SQ`O,5@SO$;_Q`O,5@SOOQO1G2U1G2UO$;mQ&kO1G2TOKhQ&jO1G2TO$;}QMhO'#IaO$<_Q`O,5@TOJRQ&jO,5@TO$<gQqO,5@TOOQ(C]1G2X1G2XOOQ(CW,5<r,5<rOOQ(CW,5<s,5<sO$<qQ`O,5<sO#<uQ`O,5<sO!0`Q!bO,5<rOOQO'#GZ'#GZO$<vQ`O,5<tOOQ(CW,5<v,5<vO$<qQ`O,5<yOOQO,5>|,5>|OOQO-E<`-E<`OOQ(C]1G2]1G2]O!)dQ,UO,5<rO$=OQ`O,5<sO#<zQ`O,5<tO!)dQ,UO,5<sO$=ZQ&kO1G5SO$=eQ&kO1G5SOOQO,5>},5>}OOQO-E<a-E<aOOQP1G.x1G.xO!1cQ,UO,59oO$}QdO,59oO$=rQ`O1G2OOKhQ&jO1G2VO$=wQ(C|O7+'cOOQ(C[7+'c7+'cOHRQdO7+'cOOQ(C[7+%^7+%^O$>kQqO'#JjO$(iQ`O7+(XO$>uQ`O7+(XO$>}QqO7+(XO$?XQ(CyO'#ChO$?lQ(CyO,5<wO$@^Q`O,5<wOOQ(CW1G5P1G5POOQS7+$_7+$_O;dQ`O7+$_O!0`Q!bO7+$_OHRQdO7+&UO$@cQ`O'#IjO$@tQ`O,5@[OOQO1G3Z1G3ZO6tQ`O,5@[O$@tQ`O,5@[O$@|Q`O,5@[OOQO,5?V,5?VOOQO-E<i-E<iOOQ(C[7+&y7+&yO$ARQ`O7+(tO6lQ(ChO7+(tO6tQ`O7+(tO$AWQ`O7+(tO$A]Q`O,5;TOOQ(CW,5?P,5?POOQ(CW-E<c-E<cOOQS7+(c7+(cO$AbQ(CyO7+(`OJRQ&jO7+(`O$AlQqO7+(aOOQS7+(a7+(aOJRQ&jO7+(aO$AsQ`O'#JmO$BOQ`O,5=_OOQO,5?R,5?ROOQO-E<e-E<eOOQS7+(f7+(fO$CUQ,UO'#G|OOQS1G3R1G3ROJRQ&jO1G3RO$}QdO1G3ROJRQ&jO1G3RO$C]QaO1G3RO$CkQ&kO1G3RO6lQ(ChO1G3UO#=PQ`O1G3UO6bQ`O1G3UO!0`Q!bO1G3UO!0hQ&jO1G3UO$C|Q`O'#IiO$DXQ`O,5@YO$DaQ,UO,5@YOOQ(CW1G3V1G3VOOQS7+$U7+$UO$DiQ`O7+$UO6lQ(ChO7+$UO$DnQ`O7+$UO$}QdO1G5wO$}QdO1G5xO$DsQdO1G3^O$DzQ`O1G3^O$EPQdO1G3^O$EWQ(ChO1G5wOOQS7+(v7+(vO6lQ(ChO7+)QO`QdO7+)SOOQS'#Js'#JsOOQS'#Il'#IlO$EbQdO,5>ROOQS,5>R,5>RO$}QdO'#HhO$EoQ`O'#HjOOQS,5>X,5>XO8YQ`O,5>XOOQS,5>Z,5>ZOOQS7+)]7+)]OOQS7+)c7+)cOOQS7+)g7+)gOOQS7+)i7+)iO$EtQ!bO1G5[O$FYQ!LUO1G0oO$FdQ`O1G0oOOQO1G/k1G/kO$FoQ!LUO1G/kO$FyQ`O,5?pO;dQ`O1G/kOMqQdO'#DeOOQO,5>n,5>nOOQO-E<Q-E<QOOQO,5>t,5>tOOQO-E<W-E<WO!0`Q!bO1G/kO$GOQ7[O,5:lO$HOQ(DjO,5:vO$%_Q,UO,5:kO$HjQ,UO,5:kO$HwQ,UO,5:kO$IXQ,UO,5:vO$IrQ,UO,5:vO$%_Q,UO,5:vO;dQ`O,5:kOOQO,5:v,5:vO$}QdO,5:vO$JcQ(ChO,5:vO$JnQ(ChO,5:vO!0`Q!bO,5:kOOQO-E<T-E<TOOQ(C[1G0U1G0UOOQO,5:|,5:|O$J|Q(ChO,5:vOOQ(C[7+%m7+%mO$(iQ`O7+%mO$(nQqO7+%mOOQ(C[7+&T7+&TO;dQ`O7+&TO!0`Q!bO7+&TO$KbQ`O7+*|O$KbQ`O7+*|O$KjQ(C|O7+*}O$}QdO7+*}OOQO1G4a1G4aO8YQ`O1G4aO$KzQ`O1G4aOOQO7+%v7+%vO$(iQ`O<<KsO$LYQ`O<<KsO$LbQqO<<KsOOQS<<Ks<<KsOJRQ&jO<<KsO$}QdO<<KsOJRQ&jO<<KsO$LlQaO<<KsO$LzQ(C}O1G2gO% VQ(C}O1G2iO%#bQ(C}O1G2TO%%sQ&kO,5>oOOQO-E<R-E<RO%%}QtO,5>pO$}QdO,5>pOOQO-E<S-E<SO%&XQ`O1G5^OOQ(C[<<Iy<<IyO%&aQ!LUO1G0jO%(kQ!LUO1G0tO%(rQ!LUO1G0tO%*vQ!LUO1G0tO%*}Q!LUO1G0tO%,rQ!LUO1G0tO%-YQ!LUO1G0tO%/mQ!LUO1G0tO%/tQ!LUO1G0tO%1xQ!LUO1G0tO%2PQ!LUO1G0tO%3wQ!LUO1G0tO%4[Q(C|O<<J]O%5aQ!LVO1G0tO%7VQ!LVO'#I}O%7aQ!LUO1G1YOMqQdO'#FhOOQO'#Jf'#JfOOQO1G1l1G1lO%7nQ`O1G1kO%7sQ!LUO,5>xOOOO7+'_7+'_OOOW1G/S1G/SOOQ(C]1G4f1G4fOKhQ&jO7+(VO%7}Q`O,5>yO6tQ`O,5>yOOQO-E<]-E<]O%8]Q`O1G5nO%8]Q`O1G5nO%8eQ`O1G5nO%8pQ&kO7+'oO%9QQqO,5>{O%9[Q`O,5>{OJRQ&jO,5>{OOQO-E<_-E<_O%9aQqO1G5oO%9kQ`O1G5oOOQ(CW1G2_1G2_O$<qQ`O1G2_OOQ(CW1G2^1G2^O%9sQ`O1G2`OJRQ&jO1G2`OOQ(CW1G2e1G2eO!0`Q!bO1G2^O#<uQ`O1G2_O%9xQ`O1G2`O%:QQ`O1G2_OKhQ&jO7+*nOOQ(C]1G/Z1G/ZO%:]Q`O1G/ZOOQ(C]7+'j7+'jO%:bQ&kO7+'qO%:rQ(C|O<<J}OOQ(C[<<J}<<J}OJRQ&jO'#IdO%;fQ`O,5@UOJRQ&jO1G2cOOQS<<Gy<<GyO;dQ`O<<GyO%;nQ(C|O<<IpOOQ(C[<<Ip<<IpOOQO,5?U,5?UO%<bQ`O,5?UO%<gQ`O,5?UOOQO-E<h-E<hO%<oQ`O1G5vO%<oQ`O1G5vO6tQ`O1G5vO%<wQ`O<<L`OOQS<<L`<<L`O%<|Q`O<<L`O6lQ(ChO<<L`O%=RQ`O1G0oOOQS<<Kz<<KzO$AbQ(CyO<<KzOOQS<<K{<<K{O$AlQqO<<K{O%=WQ,UO'#IfO%=cQ`O,5@XOMqQdO,5@XOOQS1G2y1G2yO%=kQ(DjO'#JUO%>VQdO'#JUO%>^Q,UO'#E[O%>tQ(ChO'#E[O$$sQ(DjO'#E[O$%hQ,UO'#G}OOQO'#Ih'#IhO%?YQ,UO,5=hOOQS,5=h,5=hO%?aQ,UO'#E[O%?rQ,UO'#E[O%@YQ,UO'#E[O%@vQ,UO'#G}O%AXQ`O7+(mO%A^Q`O7+(mO%AfQqO7+(mOOQS7+(m7+(mOJRQ&jO7+(mO$}QdO7+(mOJRQ&jO7+(mO%ApQaO7+(mOOQS7+(p7+(pO6lQ(ChO7+(pO#=PQ`O7+(pO6bQ`O7+(pO!0`Q!bO7+(pO%BOQ`O,5?TOOQO-E<g-E<gOOQO'#HQ'#HQO%BZQ`O1G5tO6lQ(ChO<<GpOOQS<<Gp<<GpO%BcQ`O<<GpO%BhQ`O7++cO%BmQ`O7++dOOQS7+(x7+(xO%BrQ`O7+(xO%BwQdO7+(xO%COQ`O7+(xO$}QdO7++cO$}QdO7++dOOQS<<Ll<<LlOOQS<<Ln<<LnOOQS-E<j-E<jOOQS1G3m1G3mO%CTQ`O,5>SOOQS,5>U,5>UO%CYQ`O1G3sO8YQ`O7+&ZOMqQdO7+&ZOOQ(CW1G5[1G5[OOQO7+%V7+%VO%C_Q!LUO1G5fO;dQ`O7+%VO;dQ`O1G0VOOQO1G0b1G0bO$}QdO1G0bO%CiQ(ChO1G0bO%CtQ(ChO1G0bO!0`Q!bO1G0VO$%_Q,UO1G0VO%DSQ,UO1G0VO%DaQ(DjO1G0bO%D{Q,UO1G0VO$%_Q,UO1G0bO%E]Q,UO1G0bO%EvQ(ChO1G0bOOQO1G0V1G0VO%F[Q(C|O1G0bOOQ(C[<<IX<<IXOOQ(C[<<Io<<IoO;dQ`O<<IoO%FfQ`O<<NhO%FnQ(C|O<<NiOOQO7+){7+){O8YQ`O7+){OOQSANA_ANA_OJRQ&jOANA_O$(iQ`OANA_O%GOQ`OANA_O%GWQqOANA_O$}QdOANA_OJRQ&jOANA_O%GbQ(C}O7+'oO%IsQ(C}O7+'qO%LUQtO1G4[O%L`Q!LUO7+&UO%MUQ!LVO,59mO& YQ!LVO,5<`O&#aQ!LVO,5<bO&%SQ!LVO,5<pO&&xQ!LUO7+'bO&'VQ!LUO7+'cO&'dQ`O,5<SOOQO7+'V7+'VO&'iQ&kO<<KqOOQO1G4e1G4eO&'pQ`O1G4eO&'{Q`O1G4eO&(ZQ`O7++YO&(ZQ`O7++YOJRQ&jO1G4gO&(cQqO1G4gO&(mQ`O7++ZOOQ(CW7+'y7+'yO$<qQ`O7+'zO&(uQqO7+'zOOQ(CW7+'x7+'xO$<qQ`O7+'yO&(|Q`O7+'zOJRQ&jO7+'zO#<uQ`O7+'yO&)RQ&kO<<NYOOQ(C]7+$u7+$uO&)]QqO,5?OOOQO-E<b-E<bO&)gQ(CyO7+'}OOQSAN=eAN=eO6tQ`O1G4pOOQO1G4p1G4pO&)wQ`O1G4pO&)|Q`O7++bO&)|Q`O7++bO6lQ(ChOANAzO&*UQ`OANAzOOQSANAzANAzOOQSANAfANAfOOQSANAgANAgO&*ZQ`O,5?QOOQO-E<d-E<dO&*fQ!LUO1G5sO#=PQ`O,5=iO6bQ`O,5=iO&,vQtO'#ChO&-QQ,UO,5:vO&-[Q,UO,5:vO!0`Q!bO,5=iOOQO-E<f-E<fOOQS1G3S1G3SO%>VQdO,5<tO%=kQ(DjO,5=iO$HOQ(DjO,5:vO$%hQ,UO,5=iO&-lQ,UO,5=iO&-}Q,UO,5:vOOQS<<LX<<LXOJRQ&jO<<LXO%AXQ`O<<LXO&.eQ`O<<LXO&.mQqO<<LXO$}QdO<<LXOJRQ&jO<<LXOOQS<<L[<<L[O6lQ(ChO<<L[O#=PQ`O<<L[O6bQ`O<<L[O&.wQ,UO1G4oO&/PQ`O7++`OOQSAN=[AN=[O6lQ(ChOAN=[OOQS<<N}<<N}OOQS<= O<= OOOQS<<Ld<<LdO&/XQ`O<<LdO&/^QdO<<LdO&/eQ`O<<N}O&/jQ`O<= OOOQS1G3n1G3nO;dQ`O7+)_O&/oQ`O<<IuO&/zQ!LUO<<IuOOQO<<Hq<<HqOOQO7+%q7+%qO%F[Q(C|O7+%|OOQO7+%|7+%|O$}QdO7+%|O&0UQ(ChO7+%|O;dQ`O7+%qO!0`Q!bO7+%qO$%_Q,UO7+%qO&0aQ(ChO7+%|O&0oQ,UO7+%qO&0|Q(ChO7+%|O&1bQ(DjO7+%|O&1lQ,UO7+%qO$%_Q,UO7+%|OOQ(C[AN?ZAN?ZOOQO<<Mg<<MgO$(iQ`OG26yOOQSG26yG26yOJRQ&jOG26yO&1|Q`OG26yO&2UQqOG26yO&2`Q!LUO<<J]O&2mQ!LVO1G2TO&4wQ!LVO1G2gO&7OQ!LVO1G2iO&8qQ!LUO<<J}O&9OQ!LUO<<IpOOQO1G1n1G1nOKhQ&jOANA]OOQO7+*P7+*PO&9]Q`O7+*PO&9hQ`O<<NtO&9pQqO7+*ROOQ(CW<<Kf<<KfO$<qQ`O<<KfOOQ(CW<<Ke<<KeO&9zQqO<<KfO$<qQ`O<<KeOOQO7+*[7+*[O6tQ`O7+*[O&:RQ`O<<N|OOQSG27fG27fO6lQ(ChOG27fOMqQdO1G4lO&:ZQ`O7++_O6lQ(ChO1G3TO#=PQ`O1G3TO&:cQ,UO1G0bO6bQ`O1G3TO!0`Q!bO1G3TO$%hQ,UO1G3TO%=kQ(DjO1G3TO%DaQ(DjO1G0bO&:mQ,UO1G3TO%AXQ`OANAsOOQSANAsANAsOJRQ&jOANAsO&;OQ`OANAsO&;WQqOANAsOOQSANAvANAvO6lQ(ChOANAvO#=PQ`OANAvOOQO'#HR'#HROOQO7+*Z7+*ZOOQSG22vG22vOOQSANBOANBOO&;bQ`OANBOOOQSANDiANDiOOQSANDjANDjOOQS<<Ly<<LyOMqQdOAN?aOOQO<<Ih<<IhO%F[Q(C|O<<IhO$}QdO<<IhOOQO<<I]<<I]O;dQ`O<<I]O!0`Q!bO<<I]O&;gQ(ChO<<IhO$%_Q,UO<<I]O&;rQ(ChO<<IhO&<QQ,UO<<I]O&<_Q(ChO<<IhOOQSLD,eLD,eO$(iQ`OLD,eOJRQ&jOLD,eO&<sQ!LVO7+'oO&>iQ!LVO7+'qO&@_Q&kOG26wOOQO<<Mk<<MkOOQ(CWANAQANAQO$<qQ`OANAQOOQ(CWANAPANAPOOQO<<Mv<<MvOOQSLD-QLD-QO&@oQ!LUO7+*WOOQO7+(o7+(oO6lQ(ChO7+(oO#=PQ`O7+(oO6bQ`O7+(oO!0`Q!bO7+(oO$%hQ,UO7+(oOOQSG27_G27_O%AXQ`OG27_OJRQ&jOG27_OOQSG27bG27bO6lQ(ChOG27bOOQSG27jG27jO&@yQ!LUOG24{OOQOAN?SAN?SO%F[Q(C|OAN?SOOQOAN>wAN>wO;dQ`OAN>wO$}QdOAN?SO!0`Q!bOAN>wO&ATQ(ChOAN?SO$%_Q,UOAN>wO&A`Q(ChOAN?SOOQS!$(!P!$(!PO$(iQ`O!$(!PO&AnQ(C}OG26wOOQ(CWG26lG26lOOQO<<LZ<<LZO6lQ(ChO<<LZO#=PQ`O<<LZO6bQ`O<<LZO!0`Q!bO<<LZOOQSLD,yLD,yO%AXQ`OLD,yOOQSLD,|LD,|OOQOG24nG24nOOQOG24cG24cO%F[Q(C|OG24nO;dQ`OG24cO$}QdOG24nO!0`Q!bOG24cO&DPQ(ChOG24nOOQS!)9Ek!)9EkO&DmQ7]O,5:zOOQOANAuANAuO6lQ(ChOANAuO#=PQ`OANAuO6bQ`OANAuOOQS!$(!e!$(!eOOQOLD*YLD*YOOQOLD)}LD)}O%F[Q(C|OLD*YO;dQ`OLD)}O$}QdOLD*YO&EpQ!LVOG26wO&GfQ7]O,59mO&HfQ7]O,5<`O&IfQ7]O,5<bO&JfQ7]O,5<pOOQOG27aG27aO6lQ(ChOG27aO#=PQ`OG27aOOQO!$'Mt!$'MtOOQO!$'Mi!$'MiO%F[Q(C|O!$'MtO&KiQ7]O1G2gO&LiQ7]O1G2iO&MiQ7]O1G2TOOQOLD,{LD,{O6lQ(ChOLD,{OOQO!)9C`!)9C`O&NlQ7]O7+'oO' oQ7]O7+'qOOQO!$(!g!$(!gO'!rQ7]OG26wOMqQdO'#DtO.fQ`O'#EQO'#uQtO'#JQOMqQdO'#DlO'#|QtO'#ChO'&dQtO'#ChO'&tQdO,5;OO'(tQ&jO'#E`OMqQdO,5;YOMqQdO,5;YOMqQdO,5;YOMqQdO,5;YOMqQdO,5;YOMqQdO,5;YOMqQdO,5;YOMqQdO,5;YOMqQdO,5;YOMqQdO,5;YOMqQdO,5;YOMqQdO'#I^O'*UQ`O,5<_O'*^Q&jO,5;YO'+nQ&jO,5;YOMqQdO,5;nO.iQ`O'#DRO.iQ`O'#DRO.iQ`O'#DROJRQ&jO'#FtO'(tQ&jO'#FtO'*^Q&jO'#FtOJRQ&jO'#FvO'(tQ&jO'#FvO'*^Q&jO'#FvOJRQ&jO'#GUO'(tQ&jO'#GUO'*^Q&jO'#GUOMqQdO,5?zO'&tQdO1G0jO'+uQ!LUO'#ChOMqQdO1G1vOJRQ&jO,5<{O'(tQ&jO,5<{O'*^Q&jO,5<{OJRQ&jO,5<}O'(tQ&jO,5<}O'*^Q&jO,5<}OJRQ&jO,5<iO'(tQ&jO,5<iO'*^Q&jO,5<iO'&tQdO1G1wOMqQdO7+&qOJRQ&jO1G2TO'(tQ&jO1G2TO'*^Q&jO1G2TOJRQ&jO1G2VO'(tQ&jO1G2VO'*^Q&jO1G2VO'&tQdO7+'cO'&tQdO7+&UO',PQ`O7+'zOJRQ&jOANA]O'(tQ&jOANA]O'*^Q&jOANA]O',PQ`O<<KfO',PQ`OANAQO',UQ`O'#EdO',ZQ`O'#EdO',cQ`O'#FSO',hQ`O'#EnO',mQ`O'#J`O',xQ`O'#J^O'-TQ`O,5;OO'-YQ&kO,5<[O'-aQ`O'#F}O'-fQ`O'#F}O'-kQ`O'#F}O'-pQ`O,5<]O'-xQ`O,5;OO'.QQ!LUO1G1VO'.XQ`O,5<iO'.^Q`O,5<iO'.cQ`O,5<iO'.hQ`O,5<kO'.mQ`O,5<kO'.rQ`O,5<kO'.wQ`O1G1wO'.|Q`O1G0jO'/RQ`O1G2`O'/WQ&kO<<KqO'/_Q&kO<<KqO'/fQ&kO<<KqO'/mQqO7+'zO'/tQ`O7+'zO'/yQqO<<KfO4}Q&jO'#FrO6bQ`O'#FqO={Q`O'#EcOMqQdO,5;kO!(eQ`O'#F}O!(eQ`O'#F}O!(eQ`O'#F}O!(eQ`O'#GPO!(eQ`O'#GPO!(eQ`O'#GPO'0QQ`O,5<tOKhQ&jO7+(VOKhQ&jO7+(VOKhQ&jO7+(VOJRQ&jO1G2`O'0YQ`O1G2`OJRQ&jO7+'zO$:eQqO1G2kO$:eQqO1G2kO$:eQqO1G2kOJRQ&jO,5=POJRQ&jO,5=POJRQ&jO,5=P",stateData:"'1c~O'gOS'hOSTOSUOS~OQUORUOX}O]gO_lObrOcqOigOkUOlgOmgOrgOtUOvUO{SO!OgO!PgO!VTO!aoO!fVO!iUO!jUO!kUO!lUO!mUO!ppO!uXO#lwO#|tO$QbO%[uO%^xO%`vO%avO%dyO%fzO%i{O%j{O%l|O%y!OO&P!PO&R!QO&T!RO&V!SO&Y!TO&`!UO&f!VO&h!WO&j!XO&l!YO&n!ZO'jQO'rRO'|WO(ZeO~OQUORUO]gOb!aOc!`OigOkUOlgOmgOrgOtUOvUO{SO!OgO!PgO!V!]O!aoO!fVO!iUO!jUO!kUO!lUO!mUO!p!_O#|!bO$QbO'j![O'rRO'|WO(ZeO~OQ[XZ[X_[Xk[Xx[Xy[X{[X!T[X!c[X!d[X!f[X!l[X#T[X#`dX#c[X#d[X#e[X#f[X#g[X#h[X#i[X#j[X#k[X#m[X#o[X#q[X#r[X#w[X'e[X'r[X'}[X(U[X(V[X~O!_$vX~P&}OS!cO'c!dO'd!fO~OQUORUO]gOb!aOc!`OigOkUOlgOmgOrgOtUOvUO{SO!OgO!PgO!V!]O!aoO!fVO!iUO!jUO!kUO!lUO!mUO!p!_O#|!bO$QbO'j;ZO'rRO'|WO(ZeO~O!S!jO!T!gO!Q'vP!Q(RP~P)jO!U!rO~P`OQUORUO]gOb!aOc!`OigOkUOlgOmgOrgOtUOvUO{SO!OgO!PgO!V!]O!aoO!fVO!iUO!jUO!kUO!lUO!mUO!p!_O#|!bO$QbO'rRO'|WO(ZeO~O!S!xO!uXO#^!{O#_!xO'j;[O!e(OP~P,RO!f!}O'j!|O~O!p#RO!uXO%[#SO~O#`#TO~O!_#UO#`#TO~OQ#lOZ#sOk#aOx#YOy#ZO{#[O!T#pO!c#cO!d#WO!f#XO!l#lO#c#_O#d#`O#e#`O#f#`O#g#bO#h#cO#i#cO#j#rO#k#cO#m#dO#o#fO#q#hO#r#iO'rRO'}#jO(U#]O(V#^O~O_'tX'e'tX'a'tX!e'tX!Q'tX!V'tX%]'tX!_'tX~P/WO#T#tO#w#tOQ'uXZ'uX_'uXk'uXx'uXy'uX{'uX!T'uX!c'uX!d'uX!f'uX!l'uX#c'uX#d'uX#e'uX#f'uX#g'uX#h'uX#i'uX#j'uX#m'uX#o'uX#q'uX#r'uX'r'uX'}'uX(U'uX(V'uX~O#k'uX'e'uX'a'uX!Q'uX!e'uXo'uX!V'uX%]'uX!_'uX~P1nO#T#tO~O$S#vO$U#uO$]#{O~O!V#|O$QbO$`#}O$b$PO~O]$SOi$cOk$TOl$SOm$SOr$dOt$eOv$fO{$[O!V$]O!a$kO!f$XO#_$lO#|$iO$i$gO$k$hO$n$jO'j$RO'n$bO'r$UOe'oP~O!f$mO~O!_$oO~O_$pO'e$pO~O'j$tO~O!f$mO'j$tO'k$vO'n$bO~Oc$|O!f$mO'j$tO~O#k#cO~O]%VOx%RO!V%OO!f%QO%^%UO'j$tO'k$vO^(cP~O!p#RO~O{%WO!V%XO'j$tO~O{%WO!V%XO%f%]O'j$tO~O'j%^O~O#lwO%^xO%`vO%avO%dyO%fzO%i{O%j{O~Ob%gOc%fO!p%dO%[%eO%n%cO~P8xOb%jOcqO!V%iO!ppO!uXO#lwO%[uO%`vO%avO%dyO%fzO%i{O%j{O%l|O~O`%mO#T%pO%^%kO'k$vO~P9wO!f%qO!i%uO~O!f!}O~O!VTO~O_$pO'b%}O'e$pO~O_$pO'b&QO'e$pO~O_$pO'b&SO'e$pO~O'a[Xo[X!Q[X!e[X%}[X!V[X%][X!_[X~P&}O]&XOl&XO{&WO!S&[O!Y&bO!Z&ZO![&ZO'k$vO's&UO!U'wP!U(TP~OP&fO!V&cO!q&eO'j$tO~Oc&kO!f$mO'j$tO~Ox%RO!f%QO~OS!cO'c!dO'd&nO~O!S&pO!Q&uX!Q&{X!T&uX!T&{X~P)jO!T&rO!Q'vX~OQ#lOZ#sOk#aOx#YOy#ZO{#[O!T&rO!c#cO!d#WO!f#XO!l#lO#c#_O#d#`O#e#`O#f#`O#g#bO#h#cO#i#cO#j#rO#k#cO#m#dO#o#fO#q#hO#r#iO'rRO'}#jO(U#]O(V#^O~O!Q'vX~P?WO!Q&wO~O!Q(QX!T(QX!_(QX!e(QX'}(QX~O#T(QX#`#XX!U(QX~PA^O#T&xO!Q(SX!T(SX~O!T&yO!Q(RX~O!Q&|O~O#T#tO~PA^O!U&}O~P`Ox#YOy#ZO{#[O!d#WO!f#XO'rROQ!haZ!hak!ha!T!ha!c!ha!l!ha#c!ha#d!ha#e!ha#f!ha#g!ha#h!ha#i!ha#j!ha#k!ha#m!ha#o!ha#q!ha#r!ha'}!ha(U!ha(V!ha~O_!ha'e!ha'a!ha!Q!ha!e!hao!ha!V!ha%]!ha!_!ha~PBtO!e'OO~O{%WO!V%XO!uXO#^'RO#_'QO'j$tO~O!_#UO#T'TO'}'SO!T(PX_(PX'e(PX~O!e(PX~PExO!T'WO!e(OX~O!e'YO~O{%WO!V%XO#_'QO'j$tO~Ox'ZOy'[O!d#WO!f#XO!u!ta{!ta~O!p!ta%[!ta!V!ta#^!ta#_!ta'j!ta~PGQO!p'`O~OQUORUO]gOb!aOc!`OigOkUOlgOmgOrgOtUOvUO{SO!OgO!PgO!VTO!aoO!fVO!iUO!jUO!kUO!lUO!mUO!p!_O#|!bO$QbO'j![O'rRO'|WO(ZeO~O]$SOi$cOk$TOl$SOm$SOr$dOt$eOv;oO{$[O!V$]O!a=`O!f$XO#_;xO#|$iO$i;rO$k;uO$n$jO'j'dO'n$bO'r$UO~O#`'fO~O]$SOi$cOk$TOl$SOm$SOr$dOt$eOv$fO{$[O!V$]O!a$kO!f$XO#_$lO#|$iO$i$gO$k$hO$n$jO'j'dO'n$bO'r$UO~Oe'yP~PKhO!S'jO!e'zP~P$}O's'lO'|WO~O{'nO!f#XO's'lO'|WO~OQ;VOR;VO]gOb=ZOc!`OigOk;VOlgOmgOrgOt;VOv;VO{SO!OgO!PgO!V!]O!a;YO!fVO!i;VO!j;VO!k;VO!l;VO!m;VO!p!_O#|!bO$QbO'j'|O'rRO'|WO(Z=XO~Oy(PO!f#XO~O!T#pO_$ga'e$ga'a$ga!e$ga!Q$ga!V$ga%]$ga!_$ga~O#l(TO~PJROx(WO!_(VO!V$TX$P$TX$S$TX$U$TX$]$TX~O!_(VO!V(WX$P(WX$S(WX$U(WX$](WX~Ox(WO~P!#WOx(WO!V(WX$P(WX$S(WX$U(WX$](WX~O!V(YO$P(^O$S(XO$U(XO$](_O~O!S(bO~PMqO$S#vO$U#uO$](eO~OP$oXx$oX{$oX!d$oX(U$oX(V$oX~OPgXegXe$oX!TgX#TgX~P!$|Ol(gO~OS(hO'c(iO'd(kO~OP(tOx(mO{(nO(U(pO(V(rO~Oe(lO~P!&VOe(uO~O]$SOi$cOk$TOl$SOm$SOr$dOt$eOv;oO{$[O!V$]O!a=`O!f$XO#_;xO#|$iO$i;rO$k;uO$n$jO'n$bO'r$UO~O!S(yO'j(vO!e([P~P!&tO#`({O~O!f(|O~O!S)RO'j)OO!Q(]P~P!&tOk)`O{)WO!Y)^O!Z)VO![)VO!f(|O#P)_O%S)YO'k$vO's)TO~O!U)]O~P!(wO!d#WOP'qXx'qX{'qX(U'qX(V'qX!T'qX#u'qX!U'qX~Oe'qX#T'qX]'qXl'qX!Y'qX!Z'qX!['qX!u'qX!y'qX!z'qX!{'qX#P'qX#Q'qX'k'qX's'qX'|'qX~P!)pOP)cO#T)bOe'pX!T'pX~O!T)dOe'oX~O'j%^Oe'oP~O!f)kO~O'j'dO~O{%WO!S!xO!V%XO!uXO#^!{O#_!xO'j$tO!e(OP~O!_#UO#`)oO~OQ#lOZ#sOk#aOx#YOy#ZO{#[O!c#cO!d#WO!f#XO!l#lO#c#_O#d#`O#e#`O#f#`O#g#bO#h#cO#i#cO#j#rO#k#cO#m#dO#o#fO#q#hO#r#iO'rRO'}#jO(U#]O(V#^O~O_!`a!T!`a'e!`a'a!`a!Q!`a!e!`ao!`a!V!`a%]!`a!_!`a~P!-ROP)wO!V&cO!q)vO%])uO'n$bO~O!_)yO!V'mX_'mX!T'mX'e'mX~O!f$mO'n$bO~O!f$mO'j$tO'n$bO~O!_#UO#`'fO~O]*UO%^*VO'j*RO!U(dP~O!T*WO^(cX~O's'lO~OZ*[O~O^*]O~O!V%OO'j$tO'k$vO^(cP~O{%WO!S*aO!T&yO!V%XO'j$tO!Q(RP~O]&_Ol&_O{*cO!S*bO's'lO~O!U(TP~P!2fO!T*dO_(`X'e(`X~O#T*hO'n$bO~OP*kO!V$]O'n$bO~O!V*mO~Ox*oO!VTO~O!p*tO~Oc*yO~O'j!|O!U(bP~Oc$|O~O%^xO'j%^O~P9wOZ+PO^+OO~OQUORUO]gObrOcqOigOkUOlgOmgOrgOtUOvUO{SO!OgO!PgO!aoO!fVO!iUO!jUO!kUO!lUO!mUO!ppO!uXO$QbO%[uO'rRO'|WO(ZeO~O!V!]O#|!bO'j![O~P!4vO^+OO_$pO'e$pO~O_+TO#l+VO%`+VO%a+VO~P$}O!f%qO~O&P+[O~O!V+^O~O&b+`O&d+aOQ&_aR&_aX&_a]&_a_&_ab&_ac&_ai&_ak&_al&_am&_ar&_at&_av&_a{&_a!O&_a!P&_a!V&_a!a&_a!f&_a!i&_a!j&_a!k&_a!l&_a!m&_a!p&_a!u&_a#l&_a#|&_a$Q&_a%[&_a%^&_a%`&_a%a&_a%d&_a%f&_a%i&_a%j&_a%l&_a%y&_a&P&_a&R&_a&T&_a&V&_a&Y&_a&`&_a&f&_a&h&_a&j&_a&l&_a&n&_a'a&_a'j&_a'r&_a'|&_a(Z&_a!U&_a&W&_a`&_a&]&_a~O'j+fO~O!TzX!T!]X!UzX!U!]X!_zX!_!]X!f!]X#TzX'n!]X~O!_+kO#T+jO!T#]X!T'xX!U#]X!U'xX!_'xX!f'xX'n'xX~O!_+mO!f$mO'n$bO!T!XX!U!XX~O]&VOl&VO{+nO's)TO~OQ;VOR;VO]gOb=ZOc!`OigOk;VOlgOmgOrgOt;VOv;VO{SO!OgO!PgO!V!]O!a;YO!fVO!i;VO!j;VO!k;VO!l;VO!m;VO!p!_O#|!bO$QbO'rRO'|WO(Z=XO~O'j;}O~P!>SO!T+rO!U'wX~O!U+tO~O!_+kO#T+jO!T#]X!U#]X~O!T+uO!U(TX~O!U+wO~O]&VOl&VO{+nO'k$vO's)TO~O!Z+xO![+xO~P!AQO_+}O!U,PO!Y,QO!Z+|O![+|O!u;WO!y,UO!z,SO!{,TO!|,RO#P,VO#Q,VO'|+zO~P!AQOP,[O!V&cO!q,ZO~Oo,aO~O!Q&ua!T&ua~P!-RO!S,eO!Q&uX!T&uX~P$}O!T&rO!Q'va~O!Q'va~P?WO!T&yO!Q(Ra~O{%WO!S,iO!V%XO'j$tO!Q&{X!T&{X~O!T'WO!e(Oa~O{%WO!V%XO#_,lO'j$tO~O#T,nO!T(Pa!e(Pa_(Pa'e(Pa~O!_#UO~P!DvO{%WO!S,qO!V%XO!uXO#^,sO#_,qO'j$tO!T&}X!e&}X~Oy,wO!f#XO~OP,{O!V&cO!q,zO%],yO'n$bO~O_#Wi!T#Wi'e#Wi'a#Wi!Q#Wi!e#Wio#Wi!V#Wi%]#Wi!_#Wi~P!-ROP=mOx(mO{(nO(U(pO(V(rO~O#`#Sa!T#Sa!e#Sa#T#Sa!V#Sa_#Sa'e#Sa!Q#Sa~P!G[O!d#WOP'qXx'qX{'qX(U'qX(V'qXQ'qXZ'qXk'qXy'qX!T'qX!c'qX!f'qX!l'qX#c'qX#d'qX#e'qX#f'qX#g'qX#h'qX#i'qX#j'qX#k'qX#m'qX#o'qX#q'qX#r'qX'r'qX'}'qX~O#`'qX_'qX'e'qX!e'qX!Q'qX'a'qX!V'qX#T'qXo'qX%]'qX!_'qX~P!HZO!T-UOe'yX~P!&VOe-WO~O!T-XO!e'zX~P!-RO!e-[O~O!Q-^O~OQ#lOx#YOy#ZO{#[O!d#WO!f#XO!l#lO'rROZ#bi_#bik#bi!T#bi!c#bi#d#bi#e#bi#f#bi#g#bi#h#bi#i#bi#j#bi#k#bi#m#bi#o#bi#q#bi#r#bi'e#bi'}#bi(U#bi(V#bi'a#bi!Q#bi!e#bio#bi!V#bi%]#bi!_#bi~O#c#bi~P!KrO#c#_O~P!KrOQ#lOx#YOy#ZO{#[O!d#WO!f#XO!l#lO#c#_O#d#`O#e#`O#f#`O'rROZ#bi_#bi!T#bi!c#bi#g#bi#h#bi#i#bi#j#bi#k#bi#m#bi#o#bi#q#bi#r#bi'e#bi'}#bi(U#bi(V#bi'a#bi!Q#bi!e#bio#bi!V#bi%]#bi!_#bi~Ok#bi~P!NdOk#aO~P!NdOQ#lOk#aOx#YOy#ZO{#[O!d#WO!f#XO!l#lO#c#_O#d#`O#e#`O#f#`O#g#bO'rRO_#bi!T#bi#m#bi#o#bi#q#bi#r#bi'e#bi'}#bi(U#bi(V#bi'a#bi!Q#bi!e#bio#bi!V#bi%]#bi!_#bi~OZ#bi!c#bi#h#bi#i#bi#j#bi#k#bi~P##UOZ#sO!c#cO#h#cO#i#cO#j#rO#k#cO~P##UOQ#lOZ#sOk#aOx#YOy#ZO{#[O!c#cO!d#WO!f#XO!l#lO#c#_O#d#`O#e#`O#f#`O#g#bO#h#cO#i#cO#j#rO#k#cO#m#dO'rRO_#bi!T#bi#o#bi#q#bi#r#bi'e#bi'}#bi(V#bi'a#bi!Q#bi!e#bio#bi!V#bi%]#bi!_#bi~O(U#bi~P#&VO(U#]O~P#&VOQ#lOZ#sOk#aOx#YOy#ZO{#[O!c#cO!d#WO!f#XO!l#lO#c#_O#d#`O#e#`O#f#`O#g#bO#h#cO#i#cO#j#rO#k#cO#m#dO#o#fO'rRO(U#]O_#bi!T#bi#q#bi#r#bi'e#bi'}#bi'a#bi!Q#bi!e#bio#bi!V#bi%]#bi!_#bi~O(V#bi~P#(wO(V#^O~P#(wOQ#lOZ#sOk#aOx#YOy#ZO{#[O!c#cO!d#WO!f#XO!l#lO#c#_O#d#`O#e#`O#f#`O#g#bO#h#cO#i#cO#j#rO#k#cO#m#dO#o#fO#q#hO'rRO(U#]O(V#^O~O_#bi!T#bi#r#bi'e#bi'}#bi'a#bi!Q#bi!e#bio#bi!V#bi%]#bi!_#bi~P#+iOQ[XZ[Xk[Xx[Xy[X{[X!c[X!d[X!f[X!l[X#T[X#`dX#c[X#d[X#e[X#f[X#g[X#h[X#i[X#j[X#k[X#m[X#o[X#q[X#r[X#w[X'r[X'}[X(U[X(V[X!T[X!U[X~O#u[X~P#.SOQ#lOZ;mOk;aOx#YOy#ZO{#[O!c;cO!d#WO!f#XO!l#lO#c;_O#d;`O#e;`O#f;`O#g;bO#h;cO#i;cO#j;lO#k;cO#m;dO#o;fO#q;hO#r;iO'rRO'}#jO(U#]O(V#^O~O#u-`O~P#0aOQ'uXZ'uXk'uXx'uXy'uX{'uX!c'uX!d'uX!f'uX!l'uX#c'uX#d'uX#e'uX#f'uX#g'uX#h'uX#i'uX#j'uX#m'uX#o'uX#q'uX#r'uX'r'uX'}'uX(U'uX(V'uX!T'uX~O#T;nO#w;nO#k'uX#u'uX!U'uX~P#2_O_'Qa!T'Qa'e'Qa'a'Qa!e'Qao'Qa!Q'Qa!V'Qa%]'Qa!_'Qa~P!-ROQ#biZ#bi_#bik#biy#bi!T#bi!c#bi!d#bi!f#bi!l#bi#c#bi#d#bi#e#bi#f#bi#g#bi#h#bi#i#bi#j#bi#k#bi#m#bi#o#bi#q#bi#r#bi'e#bi'r#bi'}#bi'a#bi!Q#bi!e#bio#bi!V#bi%]#bi!_#bi~P!G[O_#vi!T#vi'e#vi'a#vi!Q#vi!e#vio#vi!V#vi%]#vi!_#vi~P!-RO$S-cO$U-cO~O$S-dO$U-dO~O!_(VO#T-eO!V$YX$P$YX$S$YX$U$YX$]$YX~O!S-fO~O!V(YO$P-hO$S(XO$U(XO$]-iO~O!T;jO!U'tX~P#0aO!U-jO~O$]-lO~OS(hO'c(iO'd-oO~O]-rOl-rO!Q-sO~O!TdX!_dX!edX!e$oX'}dX~P!$|O!e-yO~P!G[O!T-zO!_#UO'}'SO!e([X~O!e.PO~O!S(yO'j$tO!e([P~O#`.RO~O!Q$oX!T$oX!_$vX~P!$|O!T.SO!Q(]X~P!G[O!_.UO~O!Q.WO~Ok.[O!_#UO!f$mO'n$bO'}'SO~O'j.^O~O!_)yO~O_$pO!T.bO'e$pO~O!U.dO~P!(wO!Z.eO![.eO'k$vO's)TO~O{.gO's)TO~O#P.hO~O'j%^Oe'VX!T'VX~O!T)dOe'oa~Oe.mO~Ox.nOy.nO{.oOPua(Uua(Vua!Tua#Tua~Oeua#uua~P#>mOx(mO{(nOP$ha(U$ha(V$ha!T$ha#T$ha~Oe$ha#u$ha~P#?cOx(mO{(nOP$ja(U$ja(V$ja!T$ja#T$ja~Oe$ja#u$ja~P#@UO].pO~O#`.qO~Oe$xa!T$xa#T$xa#u$xa~P!&VO#`.tO~OP,{O!V&cO!q,zO%],yO~O]$SOk$TOl$SOm$SOr$dOt$eOv;oO{$[O!V$]O!a=`O!f$XO#_;xO#|$iO$i;rO$k;uO$n$jO'n$bO'r$UO~Oi.{O'j.zO~P#AvO!_)yO!V'ma_'ma!T'ma'e'ma~O#`/RO~OZ[X!TdX!UdX~O!T/SO!U(dX~O!U/UO~OZ/VO~O]/XO'j*RO~O!V%OO'j$tO^'_X!T'_X~O!T*WO^(ca~O!e/[O~P!-RO]/^O~OZ/_O~O^/`O~O!T*dO_(`a'e(`a~O#T/fO~OP/iO!V$]O~O's'lO!U(aP~OP/sO!V/oO!q/rO%]/qO'n$bO~OZ/}O!T/{O!U(bX~O!U0OO~O^0QO_$pO'e$pO~O]0RO~O]0SO'j!|O~O#k0TO%}0UO~P1nO#T#tO#k0TO%}0UO~O_0VO~P$}O_0XO~O&W0]OQ&UiR&UiX&Ui]&Ui_&Uib&Uic&Uii&Uik&Uil&Uim&Uir&Uit&Uiv&Ui{&Ui!O&Ui!P&Ui!V&Ui!a&Ui!f&Ui!i&Ui!j&Ui!k&Ui!l&Ui!m&Ui!p&Ui!u&Ui#l&Ui#|&Ui$Q&Ui%[&Ui%^&Ui%`&Ui%a&Ui%d&Ui%f&Ui%i&Ui%j&Ui%l&Ui%y&Ui&P&Ui&R&Ui&T&Ui&V&Ui&Y&Ui&`&Ui&f&Ui&h&Ui&j&Ui&l&Ui&n&Ui'a&Ui'j&Ui'r&Ui'|&Ui(Z&Ui!U&Ui`&Ui&]&Ui~O`0cO!U0aO&]0bO~P`O!VTO!f0eO~O&d+aOQ&_iR&_iX&_i]&_i_&_ib&_ic&_ii&_ik&_il&_im&_ir&_it&_iv&_i{&_i!O&_i!P&_i!V&_i!a&_i!f&_i!i&_i!j&_i!k&_i!l&_i!m&_i!p&_i!u&_i#l&_i#|&_i$Q&_i%[&_i%^&_i%`&_i%a&_i%d&_i%f&_i%i&_i%j&_i%l&_i%y&_i&P&_i&R&_i&T&_i&V&_i&Y&_i&`&_i&f&_i&h&_i&j&_i&l&_i&n&_i'a&_i'j&_i'r&_i'|&_i(Z&_i!U&_i&W&_i`&_i&]&_i~O!Q0kO~O!T!Xa!U!Xa~P#0aO!S0rO!Y&bO!Z&ZO![&ZO!T&vX!U&vX~P!AQO!T+rO!U'wa~O!T&|X!U&|X~P!2fO!T+uO!U(Ta~O!Y0{O!Z0zO![0zO!u;WO!y1OO!z0}O!{0}O!|0|O#P1PO#Q1PO'|+zO~P!AQO_$pO!_#UO!f$mO!l1UO#T1SO'e$pO'n$bO'}'SO~O]&VOl&VO{+nO's)TO'|+zO~O_+}O!U1XO!Y,QO!Z+|O![+|O!u;WO!y,UO!z,SO!{,TO!|,RO#P,VO#Q,VO'|+zO~P!AQO!Z0zO![0zO'|+zO~P!AQO!Y0{O!Z0zO![0zO'|+zO~P!AQO!VTO!Y0{O!Z0zO![0zO!|0|O#P1PO#Q1PO'|+zO~P!AQO!Y0{O!Z0zO![0zO!z0}O!{0}O!|0|O#P1PO#Q1PO'|+zO~P!AQO!V&cO~O!V&cO~P!G[O!T#pOo$ga~O!Q&ui!T&ui~P!-RO!T&rO!Q'vi~O!T&yO!Q(Ri~O!Q(Si!T(Si~P!-RO!T'WO!e(Oi~O!T(Pi!e(Pi_(Pi'e(Pi~P!-RO#T1eO!T(Pi!e(Pi_(Pi'e(Pi~O{%WO!V%XO!uXO#^1hO#_1gO'j$tO~O{%WO!V%XO#_1gO'j$tO~OP1pO!V&cO!q1oO%]1nO~OP1pO!V&cO!q1oO%]1nO'n$bO~O#`uaQuaZua_uakua!cua!dua!fua!lua#cua#dua#eua#fua#gua#hua#iua#jua#kua#mua#oua#qua#rua'eua'rua'}ua!eua!Qua'aua!Vuaoua%]ua!_ua~P#>mO#`$haQ$haZ$ha_$hak$hay$ha!c$ha!d$ha!f$ha!l$ha#c$ha#d$ha#e$ha#f$ha#g$ha#h$ha#i$ha#j$ha#k$ha#m$ha#o$ha#q$ha#r$ha'e$ha'r$ha'}$ha!e$ha!Q$ha'a$ha!V$hao$ha%]$ha!_$ha~P#?cO#`$jaQ$jaZ$ja_$jak$jay$ja!c$ja!d$ja!f$ja!l$ja#c$ja#d$ja#e$ja#f$ja#g$ja#h$ja#i$ja#j$ja#k$ja#m$ja#o$ja#q$ja#r$ja'e$ja'r$ja'}$ja!e$ja!Q$ja'a$ja!V$jao$ja%]$ja!_$ja~P#@UO#`$xaQ$xaZ$xa_$xak$xay$xa!T$xa!c$xa!d$xa!f$xa!l$xa#c$xa#d$xa#e$xa#f$xa#g$xa#h$xa#i$xa#j$xa#k$xa#m$xa#o$xa#q$xa#r$xa'e$xa'r$xa'}$xa!e$xa!Q$xa'a$xa!V$xa#T$xao$xa%]$xa!_$xa~P!G[O_#Wq!T#Wq'e#Wq'a#Wq!Q#Wq!e#Wqo#Wq!V#Wq%]#Wq!_#Wq~P!-ROe&wX!T&wX~PKhO!T-UOe'ya~O!S1xO!T&xX!e&xX~P$}O!T-XO!e'za~O!T-XO!e'za~P!-RO!Q1{O~O#u!ha!U!ha~PBtO#u!`a!T!`a!U!`a~P#0aO!V2^O$QbO$Z2_O~O!U2cO~Oo2dO~P!G[O_$dq!T$dq'e$dq'a$dq!Q$dq!e$dqo$dq!V$dq%]$dq!_$dq~P!-RO!Q2eO~O]-rOl-rO~Ox(mO{(nO(V(rOP%Ti(U%Ti!T%Ti#T%Ti~Oe%Ti#u%Ti~P$9POx(mO{(nOP%Vi(U%Vi(V%Vi!T%Vi#T%Vi~Oe%Vi#u%Vi~P$9rO'}#jO~P!G[O!S2hO'j$tO!T'RX!e'RX~O!T-zO!e([a~O!T-zO!_#UO!e([a~O!T-zO!_#UO'}'SO!e([a~Oe$qi!T$qi#T$qi#u$qi~P!&VO!S2pO'j)OO!Q'TX!T'TX~P!&tO!T.SO!Q(]a~O!T.SO!Q(]a~P!G[O!_#UO~O!_#UO#k2xO~Ok2{O!_#UO'}'SO~Oe'pi!T'pi~P!&VO#T3OOe'pi!T'pi~P!&VO!e3RO~O_$eq!T$eq'e$eq'a$eq!Q$eq!e$eqo$eq!V$eq%]$eq!_$eq~P!-RO!T3VO!V(^X~P!G[O!V&cO%]1nO~O!V&cO%]1nO~P!G[O!V$oX%Q[X_$oX!T$oX'e$oX~P!$|O%Q3XOPhXxhX{hX!VhX(UhX(VhX_hX!ThX'ehX~O%Q3XO~O]3_O%^3`O'j*RO!T'^X!U'^X~O!T/SO!U(da~OZ3dO~O^3eO~O]3hO~O!Q3iO~O_$pO'e$pO~P!G[O!V$]O~P!G[O!T3nO#T3pO!U(aX~O!U3qO~O]&VOl&VO{3sO!Y4OO!Z3wO![3wO!u;WO!y3}O!z3|O!{3|O#P3{O#Q,VO'k$vO's)TO'|+zO~O!U3zO~P$BTOP4VO!V/oO!q4UO%]4TO~OP4VO!V/oO!q4UO%]4TO'n$bO~O'j!|O!T']X!U']X~O!T/{O!U(ba~O]4aO's4`O~O]4bO~O^4dO~O!e4gO~P$}O_4iO~O_4iO~P$}O#k4kO%}4lO~PExO`0cO!U4pO&]0bO~P`O!_4rO~O!_4tO!T'xi!U'xi!_'xi!f'xi'n'xi~O!T#]i!U#]i~P#0aO#T4uO!T#]i!U#]i~O!T!Xi!U!Xi~P#0aO!Q4vO~O]!tal!ta!Y!ta!Z!ta![!ta!y!ta!z!ta!{!ta!|!ta#P!ta#Q!ta'k!ta's!ta'|!ta~PGQO_$pO!_#UO!f$mO!l5OO#T4|O'e$pO'n$bO'}'SO~O!Z5QO![5QO'|+zO~P!AQO!Y5RO!Z5QO![5QO'|+zO~P!AQO!Y5RO!Z5QO![5QO!|5TO#P5UO#Q5UO'|+zO~P!AQO!Y5RO!Z5QO![5QO!z5VO!{5VO!|5TO#P5UO#Q5UO'|+zO~P!AQO_$pO#T4|O'e$pO~O_$pO!_#UO#T4|O'e$pO~O_$pO!_#UO!l5OO#T4|O'e$pO'}'SO~O!T'WO!e(Oq~O!T(Pq!e(Pq_(Pq'e(Pq~P!-RO{%WO!V%XO#_5aO'j$tO~O!V&cO%]5cO~O!V&cO%]5cO~P!G[OP5hO!V&cO!q5gO%]5cO~O#`%TiQ%TiZ%Ti_%Tik%Tiy%Ti!c%Ti!d%Ti!f%Ti!l%Ti#c%Ti#d%Ti#e%Ti#f%Ti#g%Ti#h%Ti#i%Ti#j%Ti#k%Ti#m%Ti#o%Ti#q%Ti#r%Ti'e%Ti'r%Ti'}%Ti!e%Ti!Q%Ti'a%Ti!V%Tio%Ti%]%Ti!_%Ti~P$9PO#`%ViQ%ViZ%Vi_%Vik%Viy%Vi!c%Vi!d%Vi!f%Vi!l%Vi#c%Vi#d%Vi#e%Vi#f%Vi#g%Vi#h%Vi#i%Vi#j%Vi#k%Vi#m%Vi#o%Vi#q%Vi#r%Vi'e%Vi'r%Vi'}%Vi!e%Vi!Q%Vi'a%Vi!V%Vio%Vi%]%Vi!_%Vi~P$9rO#`$qiQ$qiZ$qi_$qik$qiy$qi!T$qi!c$qi!d$qi!f$qi!l$qi#c$qi#d$qi#e$qi#f$qi#g$qi#h$qi#i$qi#j$qi#k$qi#m$qi#o$qi#q$qi#r$qi'e$qi'r$qi'}$qi!e$qi!Q$qi'a$qi!V$qi#T$qio$qi%]$qi!_$qi~P!G[Oe&wa!T&wa~P!&VO!T&xa!e&xa~P!-RO!T-XO!e'zi~O#u#Wi!T#Wi!U#Wi~P#0aOQ#lOx#YOy#ZO{#[O!d#WO!f#XO!l#lO'rROZ#bik#bi!c#bi#d#bi#e#bi#f#bi#g#bi#h#bi#i#bi#j#bi#k#bi#m#bi#o#bi#q#bi#r#bi#u#bi'}#bi(U#bi(V#bi!T#bi!U#bi~O#c#bi~P%&nO#c;_O~P%&nOQ#lOx#YOy#ZO{#[O!d#WO!f#XO!l#lO#c;_O#d;`O#e;`O#f;`O'rROZ#bi!c#bi#g#bi#h#bi#i#bi#j#bi#k#bi#m#bi#o#bi#q#bi#r#bi#u#bi'}#bi(U#bi(V#bi!T#bi!U#bi~Ok#bi~P%(yOk;aO~P%(yOQ#lOk;aOx#YOy#ZO{#[O!d#WO!f#XO!l#lO#c;_O#d;`O#e;`O#f;`O#g;bO'rRO#m#bi#o#bi#q#bi#r#bi#u#bi'}#bi(U#bi(V#bi!T#bi!U#bi~OZ#bi!c#bi#h#bi#i#bi#j#bi#k#bi~P%+UOZ;mO!c;cO#h;cO#i;cO#j;lO#k;cO~P%+UOQ#lOZ;mOk;aOx#YOy#ZO{#[O!c;cO!d#WO!f#XO!l#lO#c;_O#d;`O#e;`O#f;`O#g;bO#h;cO#i;cO#j;lO#k;cO#m;dO'rRO#o#bi#q#bi#r#bi#u#bi'}#bi(V#bi!T#bi!U#bi~O(U#bi~P%-pO(U#]O~P%-pOQ#lOZ;mOk;aOx#YOy#ZO{#[O!c;cO!d#WO!f#XO!l#lO#c;_O#d;`O#e;`O#f;`O#g;bO#h;cO#i;cO#j;lO#k;cO#m;dO#o;fO'rRO(U#]O#q#bi#r#bi#u#bi'}#bi!T#bi!U#bi~O(V#bi~P%/{O(V#^O~P%/{OQ#lOZ;mOk;aOx#YOy#ZO{#[O!c;cO!d#WO!f#XO!l#lO#c;_O#d;`O#e;`O#f;`O#g;bO#h;cO#i;cO#j;lO#k;cO#m;dO#o;fO#q;hO'rRO(U#]O(V#^O~O#r#bi#u#bi'}#bi!T#bi!U#bi~P%2WO_#sy!T#sy'e#sy'a#sy!Q#sy!e#syo#sy!V#sy%]#sy!_#sy~P!-ROP=oOx(mO{(nO(U(pO(V(rO~OQ#biZ#bik#biy#bi!c#bi!d#bi!f#bi!l#bi#c#bi#d#bi#e#bi#f#bi#g#bi#h#bi#i#bi#j#bi#k#bi#m#bi#o#bi#q#bi#r#bi#u#bi'r#bi'}#bi!T#bi!U#bi~P%5OO#u'qX!U'qX~P!HZO#u#vi!T#vi!U#vi~P#0aO!U5tO~O!T'Qa!U'Qa~P#0aO!_#UO'}'SO!T'Ra!e'Ra~O!T-zO!e([i~O!T-zO!_#UO!e([i~Oe$qq!T$qq#T$qq#u$qq~P!&VO!Q'Ta!T'Ta~P!G[O!_5{O~O!T.SO!Q(]i~P!G[O!T.SO!Q(]i~O!Q6PO~O!_#UO#k6UO~Ok6VO!_#UO'}'SO~O!Q6XO~Oe$sq!T$sq#T$sq#u$sq~P!&VO_$ey!T$ey'e$ey'a$ey!Q$ey!e$eyo$ey!V$ey%]$ey!_$ey~P!-RO!T3VO!V(^a~O_#Wy!T#Wy'e#Wy'a#Wy!Q#Wy!e#Wyo#Wy!V#Wy%]#Wy!_#Wy~P!-ROZ6^O~O]6`O'j*RO~O!T/SO!U(di~O]6cO~O^6dO~O!_4tO~O's'lO!T'YX!U'YX~O!T3nO!U(aa~O!f$mO'n$bO_'xX!_'xX!l'xX#T'xX'e'xX'}'xX~O'j6mO~P,RO!u;WO!y6oO!z6nO!{6nO#P1PO#Q1PO~P$%_O_$pO!_#UO!l1UO#T1SO'e$pO'}'SO~O!U6rO~P$BTO]&VOl&VO{6sO's)TO'|+zO~O!Y6wO!Z6vO![6vO#P1PO#Q1PO'|+zO~P!AQO!Y6wO!Z6vO![6vO!z6xO!{6xO#P1PO#Q1PO'|+zO~P!AQO!Z6vO![6vO'k$vO's)TO'|+zO~O!V/oO~O!V/oO%]6zO~O!V/oO%]6zO~P!G[OP7PO!V/oO!q7OO%]6zO~OZ7UO!T']a!U']a~O!T/{O!U(bi~O]7XO~O!e7YO~O!e7ZO~O!e7[O~O!e7[O~P$}O_7^O~O!_7aO~O!e7bO~O!T(Si!U(Si~P#0aO_$pO#T7iO'e$pO~O_$pO!_#UO#T7iO'e$pO~O!Z7mO![7mO'|+zO~P!AQO_$pO!_#UO!f$mO!l7nO#T7iO'e$pO'n$bO'}'SO~O!Y7oO!Z7mO![7mO'|+zO~P!AQO!Y7oO!Z7mO![7mO!|7rO#P7sO#Q7sO'|+zO~P!AQO_$pO!_#UO!l7nO#T7iO'e$pO'}'SO~O_$pO'e$pO~P!-RO!T'WO!e(Oy~O!T(Py!e(Py_(Py'e(Py~P!-RO!V&cO%]7xO~O!V&cO%]7xO~P!G[O#`$qqQ$qqZ$qq_$qqk$qqy$qq!T$qq!c$qq!d$qq!f$qq!l$qq#c$qq#d$qq#e$qq#f$qq#g$qq#h$qq#i$qq#j$qq#k$qq#m$qq#o$qq#q$qq#r$qq'e$qq'r$qq'}$qq!e$qq!Q$qq'a$qq!V$qq#T$qqo$qq%]$qq!_$qq~P!G[O#`$sqQ$sqZ$sq_$sqk$sqy$sq!T$sq!c$sq!d$sq!f$sq!l$sq#c$sq#d$sq#e$sq#f$sq#g$sq#h$sq#i$sq#j$sq#k$sq#m$sq#o$sq#q$sq#r$sq'e$sq'r$sq'}$sq!e$sq!Q$sq'a$sq!V$sq#T$sqo$sq%]$sq!_$sq~P!G[O!T&xi!e&xi~P!-RO#u#Wq!T#Wq!U#Wq~P#0aOx.nOy.nO{.oOPua(Uua(Vua!Uua~OQuaZuakua!cua!dua!fua!lua#cua#dua#eua#fua#gua#hua#iua#jua#kua#mua#oua#qua#rua#uua'rua'}ua!Tua~P%LmOx(mO{(nOP$ha(U$ha(V$ha!U$ha~OQ$haZ$hak$hay$ha!c$ha!d$ha!f$ha!l$ha#c$ha#d$ha#e$ha#f$ha#g$ha#h$ha#i$ha#j$ha#k$ha#m$ha#o$ha#q$ha#r$ha#u$ha'r$ha'}$ha!T$ha~P%NtOx(mO{(nOP$ja(U$ja(V$ja!U$ja~OQ$jaZ$jak$jay$ja!c$ja!d$ja!f$ja!l$ja#c$ja#d$ja#e$ja#f$ja#g$ja#h$ja#i$ja#j$ja#k$ja#m$ja#o$ja#q$ja#r$ja#u$ja'r$ja'}$ja!T$ja~P&!{OQ$xaZ$xak$xay$xa!c$xa!d$xa!f$xa!l$xa#c$xa#d$xa#e$xa#f$xa#g$xa#h$xa#i$xa#j$xa#k$xa#m$xa#o$xa#q$xa#r$xa#u$xa'r$xa'}$xa!T$xa!U$xa~P%5OO#u$dq!T$dq!U$dq~P#0aO#u$eq!T$eq!U$eq~P#0aO!U8RO~O#u8SO~P!&VO!_#UO!T'Ri!e'Ri~O!_#UO'}'SO!T'Ri!e'Ri~O!T-zO!e([q~O!Q'Ti!T'Ti~P!G[O!T.SO!Q(]q~O!Q8YO~P!G[O!Q8YO~Oe'py!T'py~P!&VO!T'Wa!V'Wa~P!G[O!V%Pq_%Pq!T%Pq'e%Pq~P!G[OZ8_O~O!T/SO!U(dq~O]8bO~O#T8cO!T'Ya!U'Ya~O!T3nO!U(ai~P#0aOQ[XZ[Xk[Xx[Xy[X{[X!Q[X!T[X!c[X!d[X!f[X!l[X#T[X#`dX#c[X#d[X#e[X#f[X#g[X#h[X#i[X#j[X#k[X#m[X#o[X#q[X#r[X#w[X'r[X'}[X(U[X(V[X~O!_$}X#k$}X~P&*pO#P5UO#Q5UO~P$%_O!z8gO!{8gO#P5UO#Q5UO~P$%_O!Z8jO![8jO'k$vO's)TO'|+zO~O!Y8mO!Z8jO![8jO#P5UO#Q5UO'|+zO~P!AQO!V/oO%]8pO~O!V/oO%]8pO~P!G[O]8wO's8vO~O!T/{O!U(bq~O!e8yO~O!e8yO~P$}O!e8{O~O!e8|O~O#T9OO!T#]y!U#]y~O!T#]y!U#]y~P#0aO_$pO#T9RO'e$pO~O_$pO!_#UO#T9RO'e$pO~O!Z9WO![9WO'|+zO~P!AQO_$pO!_#UO!l9XO#T9RO'e$pO'}'SO~O!f$mO'n$bO~P&0|O!Y9YO!Z9WO![9WO'|+zO~P!AQO!V&cO%]9^O~O!V&cO%]9^O~P!G[O#u#sy!T#sy!U#sy~P#0aOQ$qiZ$qik$qiy$qi!c$qi!d$qi!f$qi!l$qi#c$qi#d$qi#e$qi#f$qi#g$qi#h$qi#i$qi#j$qi#k$qi#m$qi#o$qi#q$qi#r$qi#u$qi'r$qi'}$qi!T$qi!U$qi~P%5OOx(mO{(nO(V(rOP%Ti(U%Ti!U%Ti~OQ%TiZ%Tik%Tiy%Ti!c%Ti!d%Ti!f%Ti!l%Ti#c%Ti#d%Ti#e%Ti#f%Ti#g%Ti#h%Ti#i%Ti#j%Ti#k%Ti#m%Ti#o%Ti#q%Ti#r%Ti#u%Ti'r%Ti'}%Ti!T%Ti~P&4cOx(mO{(nOP%Vi(U%Vi(V%Vi!U%Vi~OQ%ViZ%Vik%Viy%Vi!c%Vi!d%Vi!f%Vi!l%Vi#c%Vi#d%Vi#e%Vi#f%Vi#g%Vi#h%Vi#i%Vi#j%Vi#k%Vi#m%Vi#o%Vi#q%Vi#r%Vi#u%Vi'r%Vi'}%Vi!T%Vi~P&6jO#u$ey!T$ey!U$ey~P#0aO#u#Wy!T#Wy!U#Wy~P#0aO!_#UO!T'Rq!e'Rq~O!T-zO!e([y~O!Q'Tq!T'Tq~P!G[O!Q9dO~P!G[O!T/SO!U(dy~O!T3nO!U(aq~O#P7sO#Q7sO~P$%_O!Z9nO![9nO'k$vO's)TO'|+zO~O!V/oO%]9qO~O!V/oO%]9qO~P!G[O!e9tO~O_$pO#T9zO'e$pO~O_$pO!_#UO#T9zO'e$pO~O!Z9}O![9}O'|+zO~P!AQO_$pO!_#UO!l:OO#T9zO'e$pO'}'SO~OQ$qqZ$qqk$qqy$qq!c$qq!d$qq!f$qq!l$qq#c$qq#d$qq#e$qq#f$qq#g$qq#h$qq#i$qq#j$qq#k$qq#m$qq#o$qq#q$qq#r$qq#u$qq'r$qq'}$qq!T$qq!U$qq~P%5OOQ$sqZ$sqk$sqy$sq!c$sq!d$sq!f$sq!l$sq#c$sq#d$sq#e$sq#f$sq#g$sq#h$sq#i$sq#j$sq#k$sq#m$sq#o$sq#q$sq#r$sq#u$sq'r$sq'}$sq!T$sq!U$sq~P%5OOe%X!Z!T%X!Z#T%X!Z#u%X!Z~P!&VO!T'Yq!U'Yq~P#0aO!T#]!Z!U#]!Z~P#0aO_$pO#T:aO'e$pO~O_$pO!_#UO#T:aO'e$pO~O#`%X!ZQ%X!ZZ%X!Z_%X!Zk%X!Zy%X!Z!T%X!Z!c%X!Z!d%X!Z!f%X!Z!l%X!Z#c%X!Z#d%X!Z#e%X!Z#f%X!Z#g%X!Z#h%X!Z#i%X!Z#j%X!Z#k%X!Z#m%X!Z#o%X!Z#q%X!Z#r%X!Z'e%X!Z'r%X!Z'}%X!Z!e%X!Z!Q%X!Z'a%X!Z!V%X!Z#T%X!Zo%X!Z%]%X!Z!_%X!Z~P!G[O_$pO#T:oO'e$pO~OP=nOx(mO{(nO(U(pO(V(rO~O]#Sal#Sa!U#Sa!Y#Sa!Z#Sa![#Sa!u#Sa!y#Sa!z#Sa!{#Sa#P#Sa#Q#Sa'k#Sa's#Sa'|#Sa~P&D[OQ%X!ZZ%X!Zk%X!Zy%X!Z!c%X!Z!d%X!Z!f%X!Z!l%X!Z#c%X!Z#d%X!Z#e%X!Z#f%X!Z#g%X!Z#h%X!Z#i%X!Z#j%X!Z#k%X!Z#m%X!Z#o%X!Z#q%X!Z#r%X!Z#u%X!Z'r%X!Z'}%X!Z!T%X!Z!U%X!Z~P%5OO]ualua!Yua!Zua![ua!uua!yua!zua!{ua#Pua#Qua'kua'sua'|ua~P%LmO]$hal$ha!Y$ha!Z$ha![$ha!u$ha!y$ha!z$ha!{$ha#P$ha#Q$ha'k$ha's$ha'|$ha~P%NtO]$jal$ja!Y$ja!Z$ja![$ja!u$ja!y$ja!z$ja!{$ja#P$ja#Q$ja'k$ja's$ja'|$ja~P&!{O]$xal$xa!U$xa!Y$xa!Z$xa![$xa!u$xa!y$xa!z$xa!{$xa#P$xa#Q$xa'k$xa's$xa'|$xa~P&D[O]%Til%Ti!Y%Ti!Z%Ti![%Ti!u%Ti!y%Ti!z%Ti!{%Ti#P%Ti#Q%Ti'k%Ti's%Ti'|%Ti~P&4cO]%Vil%Vi!Y%Vi!Z%Vi![%Vi!u%Vi!y%Vi!z%Vi!{%Vi#P%Vi#Q%Vi'k%Vi's%Vi'|%Vi~P&6jO]$qil$qi!U$qi!Y$qi!Z$qi![$qi!u$qi!y$qi!z$qi!{$qi#P$qi#Q$qi'k$qi's$qi'|$qi~P&D[O]$qql$qq!U$qq!Y$qq!Z$qq![$qq!u$qq!y$qq!z$qq!{$qq#P$qq#Q$qq'k$qq's$qq'|$qq~P&D[O]$sql$sq!U$sq!Y$sq!Z$sq![$sq!u$sq!y$sq!z$sq!{$sq#P$sq#Q$sq'k$sq's$sq'|$sq~P&D[O]%X!Zl%X!Z!U%X!Z!Y%X!Z!Z%X!Z![%X!Z!u%X!Z!y%X!Z!z%X!Z!{%X!Z#P%X!Z#Q%X!Z'k%X!Z's%X!Z'|%X!Z~P&D[Oo'tX~P/WO!QdX!TdX#TdX~P&*pOQ[XZ[Xk[Xx[Xy[X{[X!T[X!TdX!c[X!d[X!f[X!l[X#T[X#TdX#`dX#c[X#d[X#e[X#f[X#g[X#h[X#i[X#j[X#k[X#m[X#o[X#q[X#r[X#w[X'r[X'}[X(U[X(V[X~O!_dX!e[X!edX'}dX~P'$ZOQ;VOR;VO]gOb=ZOc!`OigOk;VOlgOmgOrgOt;VOv;VO{SO!OgO!PgO!VTO!a;YO!fVO!i;VO!j;VO!k;VO!l;VO!m;VO!p!_O#|!bO$QbO'j'|O'rRO'|WO(Z=XO~O]$SOi$cOk$TOl$SOm$SOr$dOt$eOv;pO{$[O!V$]O!a=aO!f$XO#_;yO#|$iO$i;sO$k;vO$n$jO'j'dO'n$bO'r$UO~O!T;jO!U$ga~O]$SOi$cOk$TOl$SOm$SOr$dOt$eOv;qO{$[O!V$]O!a=bO!f$XO#_;zO#|$iO$i;tO$k;wO$n$jO'j'dO'n$bO'r$UO~O#l(TO~P'*^O!U[X!UdX~P'$ZO!_;^O~O#`;]O~O!_#UO#`;]O~O#T;nO~O#k;cO~O#T;{O!T(SX!U(SX~O#T;nO!T(QX!U(QX~O#`;|O~Oe<OO~P!&VO#`<VO~O#`<WO~O#`<XO~O!_#UO#`<YO~O!_#UO#`;|O~O#u<ZO~P#0aO#`<[O~O#`<]O~O#`<^O~O#`<_O~O#`<`O~O#`<aO~O#`<bO~O#`<cO~O!Q<dO~O#u<eO~P!&VO#u<fO~P!&VO#u<gO~P!&VO!Q<hO~P!G[O!Q<hO~O!Q<iO~P!G[O!_#UO#k=gO~O!_#UO#k=iO~O$Q~!d!y!{!|#P#^#_#j(Z$i$k$n%Q%[%]%^%d%f%i%j%l%n~UT$Q(Z#d!P'g'k#el#c#fkx'h's'h'j$S$U$S~",goto:"$(n(hPPPPPPPP(iP(yP*tPPPP.mPP/SP4y9R9fP9fPPP9fP;l9fP9fP9fP;pPP;vP<a@}PPPARPPPPARC|PPPDSE|PARPHdPPPPJbARPPPPPLlARPP! z!#O!#SP!#s!#w!#sPPPP!&|!(wPP!)P!*VP!#OARAR!-m!0q!5r!5r!9cPPP!9jARPPPPPPPPPPP!<iP!=|PPAR!?]PARPARARARARPAR!@tPP!CvP!FtP!Fx!GQ!GU!GUP!CsP!GY!GYP!JWP!J[ARAR!Jb!M_9fP9fP9f9fP!Ni9f9f#!y9f#%v9f#(Q9f9f#(n#+Q#+Q#+U#+^#+Q#+jP#+QP9f#,f9f#.T9f9f.mPPP#/vPP#0`#0`P#0`P#0u#0`PP#0{P#0rP#0r#1_!({#0r#1|#2S#2V(i#2Y(iP#2a#2a#2aP(iP(iP(iP(iPP(iP#2g#2jP#2j(iP#2nP#2qP(iP(iP(iP(iP(iP(i(iP#2w#3R#3X#3_#3m#3s#3y#4T#4Z#5U#5e#5k#5}#6T#6Z#6i#7O#8w#9V#9]#9c#9i#9o#9y#:P#:V#:a#:s#:yPPPPPPPP#;PPP#;s#?TP#@o#@v#AOPP#Fp#If$ o$ r$ u$#h$#k$#nPP$#t$#x$$q$%q$%u$&ZPP$&_$&e$&iP$&l$&p$&s$'f$'|$(R$(U$(X$(_$(b$(f$(jmlOTn!R!s$o%t%v%w%y+X+^0]0`Q${qQ%StQ%l}S&Z!]+rQ&j!`S)V$])[Q*P$|Q*^%UQ*x%fQ+x&bS+|&c,OQ,`&kQ.e)^Q/z*y[0z+y,Q,R,S,T,US3w/o3yW5Q0{0|0}1OU6v3|3}4OU7m5R5T5VS8j6w6xS9W7o7rQ9n8mR9}9Y%Q`OPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#p#t$o%Q%m%p%t%v%w%y%}&W&e&p&r&x'T'f'j'n(l)o)v*c+T+X+^+n,Z,e,n,z-X-`.o.t/R/r0T0U0V0X0]0`0b1S1e1o1x3s4U4i4k4l4|5g6s7O7^7i9R9z:a:oS#PX;W!l(O#k#|&[(b+j+m-f0r2^3p4u8c9O;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[Q)g$fQ*U%OQ*z%iQ+R%qQ-O;oQ.|)yQ/X*VQ0S+PQ3_/SQ4^/{Q5m;qQ6`3`R:q;ppiOTn}!R!s$o%k%t%v%w%y+X+^0]0`R*|%m&j[OPTUnor!R!W!a!c!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#k#p#t#|$o%Q%m%p%q%t%v%w%y%}&W&e&r&x'T'f'j'n(b(l)o)v*c+T+X+^+j+m+n,Z,e,n,z-X-`-f.o.t/R/r0T0U0V0X0]0`0b0r1S1e1o1x2^3p3s4U4i4k4l4u4|5g6s7O7^7i8c9O9R9z:a:o;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=Z=[[!lSV!g!j&[&pQ$upQ$zqS%Pt%U!U%Yvw!v!x!{$m%W&y'Q'R'W*a*b*d+V+k,i,l,p,q,s0e1g1h4t5aQ%b{Q&g!_Q&i!`Q'_#RS(x$X(|S*O${$|Q*S%OQ*s%dQ*w%fS,_&j&kQ,}'`Q.O(yQ/Q*PQ/W*VQ/Y*WQ/]*[Q/u*tS/y*x*yQ1a,`Q2g-zQ3^/SQ3b/VQ3g/_Q4]/zQ5x2hQ6_3`Q6b3dQ8^6^R9f8_x$Ze#W$g$h$l(q(s({)b)c-U.R.q2f3O8S=X=d=e=f!^$xq!`$z${$|&Y&i&j&k)U*O*P+o+{,_,`.]/Q0w0y1V1a2z5P5S7l7q9U9{:bQ)x$uQ*i%_Q*l%`Q*v%fQ,|'_Q/t*sU/x*w*x*yQ1q,}Q4W/uS4[/y/zS6l3r3vQ7T4]U8h6p6t6uU9l8i8k8lQ:W9mQ:i:X#b=]#U#r#s$X$[&f(h(t)R)u)w)y*h*k,[,y,{.S.U/f/i/q/s1n1p2p2x3V3X4T4V5c5h5{6U6z7P7x8p9^9q;r;u;x<P<S<V<[<_<e=g=i=m=n=od=^;^;s;v;y<Q<T<W<]<`<fg=_;l;m;t;w;z<R<U<X<^<a<gW$`e$b)d=XS%_x%kQ%`yQ%azR*g%]%X$_e#U#W#r#s$X$[$g$h$l&f(h(q(s(t({)R)b)c)u)w)y*h*k,[,y,{-U.R.S.U.q/f/i/q/s1n1p2f2p2x3O3V3X4T4V5c5h5{6U6z7P7x8S8p9^9q;^;l;m;r;s;t;u;v;w;x;y;z<P<Q<R<S<T<U<V<W<X<[<]<^<_<`<a<e<f<g=X=d=e=f=g=i=m=n=oT(i$U(jX)h$f;o;p;qU&_!]%X+uS'm#Y#ZQ*Z%RS,u'Z'[Q/j*mQ3P.nR6h3n&pgOPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#k#p#t#|$o%Q%m%p%q%t%v%w%y%}&W&[&e&p&r&x'T'f'j'n(b(l)o)v*c+T+X+^+j+m+n,Z,e,n,z-X-`-f.o.t/R/r0T0U0V0X0]0`0b0r1S1e1o1x2^3p3s4U4i4k4l4u4|5g6s7O7^7i8c9O9R9z:a:o;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[$a#o_!i!t$s&o&u'b'i'q'r's't'u'v'w'x'y'z'{'}(Q(U(`*Y+p,c,h,m-T-Z-_-a-p.r0l0o1d1w1|1}2O2P2Q2R2S2T2U2V2W2X2Y2]2b3T3[4x5Y5_5k5l5q5r6j7d7g7{8P8Q9Q9h9u9w:_:m:z;X<wT!dR!e&qgOPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#k#p#t#|$o%Q%m%p%q%t%v%w%y%}&W&[&e&p&r&x'T'f'j'n(b(l)o)v*c+T+X+^+j+m+n,Z,e,n,z-X-`-f.o.t/R/r0T0U0V0X0]0`0b0r1S1e1o1x2^3p3s4U4i4k4l4u4|5g6s7O7^7i8c9O9R9z:a:o;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[Q&]!]R0s+r!n&V!]&Z&b&c+r+x+y+|,O,Q,R,S,T,U,V0z0{0|0}1O1P3t3{5Q5R5T5U5V6n6o7m7o7r7s8g9W9Y9}S)U$])[S.])V)^Q.f)_Q/l*oQ2z.eQ2}.hS3r/o3yS6p3w4OS6t3|3}S8i6v6wQ8k6xS9m8j8mR:X9nllOTn!R!s$o%t%v%w%y+X+^0]0`Q%{!US'a#T;]Q)|$yQ*q%bQ*r%cQ,]&hS-S'f;|S.s)o<YQ/O)}Q/n*pQ0d+`Q0f+aQ0n+lQ1Y,SQ1_,^S3U.t<bQ3Y/PS3]/R<cQ4w0qQ5X1QQ5[1`Q6]3ZQ7e4yQ7f4zQ7t5]Q8}7bQ9S7kQ9x9TQ:^9yQ:l:`R:y:n$[#n_!i!t&o&u'b'i'q'r's't'u'v'w'x'y'z'{'}(Q(U(`*Y+p,c,h,m-T-Z-_-p.r0l0o1d1w1|1}2O2P2Q2R2S2T2U2V2W2X2Y2]2b3T3[4x5Y5_5k5l5q5r6j7d7g7{8P8Q9Q9h9u9w:_:m:z;X<wS'^#O0xU)a$^'e2[T)s$s-a$[#m_!i!t&o&u'b'i'q'r's't'u'v'w'x'y'z'{'}(Q(U(`*Y+p,c,h,m-T-Z-_-p.r0l0o1d1w1|1}2O2P2Q2R2S2T2U2V2W2X2Y2]2b3T3[4x5Y5_5k5l5q5r6j7d7g7{8P8Q9Q9h9u9w:_:m:z;X<wS']#O0xS'o#Z#nS)r$s-aS,v'['^Q-b(PQ.u)sR1i,w&pgOPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#k#p#t#|$o%Q%m%p%q%t%v%w%y%}&W&[&e&p&r&x'T'f'j'n(b(l)o)v*c+T+X+^+j+m+n,Z,e,n,z-X-`-f.o.t/R/r0T0U0V0X0]0`0b0r1S1e1o1x2^3p3s4U4i4k4l4u4|5g6s7O7^7i8c9O9R9z:a:o;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[S#PX;WQ%v!PQ%w!QQ%y!SQ%z!TR0[+[Q&d!_Q)t$uQ,Y&gS,x'_)xS1[,W,XY1m,|,}.w.x.yS5Z1]1^W5b1j1k1l1qU7w5d5e5fU9[7v7y7zQ:P9]R:d:QT+}&c,O!]YOTVZn}!R!s!v$m$o%k%m%t%v%w%y&c'W+X+^+y,O,p/o0]0`3t3yT#PX;W%SsOPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#p#t$o%Q%m%p%q%t%v%w%y%}&W&e&p&r&x'T'f'j'n(l)o)v*c+T+X+^+n,Z,e,n,z-X-`.o.t/R/r0T0U0V0X0]0`0b1S1e1o1x3s4U4i4k4l4|5g6s7O7^7i9R9z:a:oS'm#Y#ZS,u'Z'[!m<m#k#|&[(b+j+m-f0r2^3p4u8c9O;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[S+{&c,OW0y+y,S,T,UU1V+|,Q,RU1Z,V3t3{S3v/o3yU5P0z0{0|S5S0}1OU5W1P6n6oS6p3w4OS6u3|3}U7l5Q5R5TS7p5U8gQ7q5VS8i6v6wQ8l6xU9U7m7o7rQ9Z7sS9m8j8mS9{9W9YQ:X9nR:b9}S+}&c,OT3x/o3yS'V!w0YQ-}(xQ.Z)UU1U+{3u3vQ2l.OS2u.[.fU5O0y1Z6uQ5w2gS6S2{2}U7n5S5W8lQ8U5xQ8]6VS9X7p7qR:O9ZQ#V^S'U!w0YQ)p$nQ)z$wQ*Q$}Q,o'VQ-|(xQ.Y)UQ.`)XQ.}){Q/v*uU1T+{3u3vS2k-}.OS2t.Z.fQ2w._Q2y.aQ4Y/wW4}0y1U1Z6uQ5v2gQ5z2lS6O2u2}Q6T2|Q7R4ZW7j5O5S5W8lS8T5w5xS8X6P<dQ8Z6SQ8e6kQ8t7SU9V7n7p7qQ9b8US9c8Y<hQ9e8]Q9j8fQ9s8uS9|9X9ZS:S9d<iQ:U9kQ:c:OQ:g:VQ:v:hQ;P:wQ<p<kQ=O<uQ=P<vQ=Q=cR=V=h%S]OPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#p#t$o%Q%m%p%q%t%v%w%y%}&W&e&p&r&x'T'f'j'n(l)o)v*c+T+X+^+n,Z,e,n,z-X-`.o.t/R/r0T0U0V0X0]0`0b1S1e1o1x3s4U4i4k4l4|5g6s7O7^7i9R9z:a:oS#Vr!a!l<j#k#|&[(b+j+m-f0r2^3p4u8c9O;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[R<p=Z%S^OPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#p#t$o%Q%m%p%q%t%v%w%y%}&W&e&p&r&x'T'f'j'n(l)o)v*c+T+X+^+n,Z,e,n,z-X-`.o.t/R/r0T0U0V0X0]0`0b1S1e1o1x3s4U4i4k4l4|5g6s7O7^7i9R9z:a:oQ$nf!^$wq!`$z${$|&Y&i&j&k)U*O*P+o+{,_,`.]/Q0w0y1V1a2z5P5S7l7q9U9{:bS$}r!aQ){$xQ*u%fW/w*v*w*x*yU4Z/x/y/zS6k3r3vS7S4[4]W8f6l6p6t6uQ8u7TW9k8h8i8k8lS:V9l9mS:h:W:XQ:w:i!l<k#k#|&[(b+j+m-f0r2^3p4u8c9O;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[Q<u=YR<v=Z$vaOPTUno!R!W!c!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#p#t$o%Q%m%p%t%v%w%y%}&W&e&r&x'T'f'j'n(l)o)v*c+T+X+^+n,Z,e,n,z-X-`.o.t/R/r0T0U0V0X0]0`0b1S1e1o1x3s4U4i4k4l4|5g6s7O7^7i9R9z:a:oY!qSV!g!j&p!U%Yvw!v!x!{$m%W&y'Q'R'W*a*b*d+V+k,i,l,p,q,s0e1g1h4t5aQ+S%q!j<l#k#|(b+j+m-f0r2^3p4u8c9O;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[R<o&[S&`!]%XR0u+u%Q`OPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#p#t$o%Q%m%p%t%v%w%y%}&W&e&p&r&x'T'f'j'n(l)o)v*c+T+X+^+n,Z,e,n,z-X-`.o.t/R/r0T0U0V0X0]0`0b1S1e1o1x3s4U4i4k4l4|5g6s7O7^7i9R9z:a:o!l(O#k#|&[(b+j+m-f0r2^3p4u8c9O;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[R+R%q!j#e_!i$s&o&u'b'i'x'y'z'{(Q(U*Y,c,h,m-T-Z-p.r1d1w2Y3T3[5Y5_5k7g9Q9w:_:m:z;X!T;e'}(`+p-a0l0o1|2U2V2W2X2]2b4x5l5q5r6j7d7{8P8Q9h9u<w!f#g_!i$s&o&u'b'i'z'{(Q(U*Y,c,h,m-T-Z-p.r1d1w2Y3T3[5Y5_5k7g9Q9w:_:m:z;X!P;g'}(`+p-a0l0o1|2W2X2]2b4x5l5q5r6j7d7{8P8Q9h9u<w!b#k_!i$s&o&u'b'i(Q(U*Y,c,h,m-T-Z-p.r1d1w2Y3T3[5Y5_5k7g9Q9w:_:m:z;XQ2f-xz=['}(`+p-a0l0o1|2]2b4x5l5q5r6j7d7{8P8Q9h9u<wQ=d=jQ=e=kR=f=l&pgOPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#k#p#t#|$o%Q%m%p%q%t%v%w%y%}&W&[&e&p&r&x'T'f'j'n(b(l)o)v*c+T+X+^+j+m+n,Z,e,n,z-X-`-f.o.t/R/r0T0U0V0X0]0`0b0r1S1e1o1x2^3p3s4U4i4k4l4u4|5g6s7O7^7i8c9O9R9z:a:o;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[S#}d$OR2_-e&wcOPSTUVdno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#k#p#t#|$O$o%Q%m%p%q%t%v%w%y%}&W&[&e&p&r&x'T'f'j'n(b(l)o)v*c+T+X+^+j+m+n,Z,e,n,z-X-`-e-f.o.t/R/r0T0U0V0X0]0`0b0r1S1e1o1x2^3p3s4U4i4k4l4u4|5g6s7O7^7i8c9O9R9z:a:o;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[T#yb$PS#wb$PT(X#z(]T#xb$PT(Z#z(]&wdOPSTUVdno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#k#p#t#|$O$o%Q%m%p%q%t%v%w%y%}&W&[&e&p&r&x'T'f'j'n(b(l)o)v*c+T+X+^+j+m+n,Z,e,n,z-X-`-e-f.o.t/R/r0T0U0V0X0]0`0b0r1S1e1o1x2^3p3s4U4i4k4l4u4|5g6s7O7^7i8c9O9R9z:a:o;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[T#}d$OQ$QdR(d$O%SfOPSTUVno!R!W!c!g!j!s!}#T#X#[#_#`#a#b#c#d#e#f#g#h#i#p#t$o%Q%m%p%q%t%v%w%y%}&W&e&p&r&x'T'f'j'n(l)o)v*c+T+X+^+n,Z,e,n,z-X-`.o.t/R/r0T0U0V0X0]0`0b1S1e1o1x3s4U4i4k4l4|5g6s7O7^7i9R9z:a:o!m=Y#k#|&[(b+j+m-f0r2^3p4u8c9O;V;Y;];_;`;a;b;c;d;e;f;g;h;i;j;n;{;|<O<Y<Z<b<c=[#ahOPTVn!R!W!c!s!}#[#|$o%m%p%q%t%v%w%y%}&W&e'n(b)v*c+T+X+^+n,Z,z-f.o/r0T0U0V0X0]0`0b1o2^3s4U4i4k4l5g6s7O7^!^$^e#W$g$h$l(q(s({)b)c-U.R.q2f3O8S;^;s;v;y<Q<T<W<]<`<f=X=d=e=f#b'e#U#r#s$X$[&f(h(t)R)u)w)y*h*k,[,y,{.S.U/f/i/q/s1n1p2p2x3V3X4T4V5c5h5{6U6z7P7x8p9^9q;r;u;x<P<S<V<[<_<e=g=i=m=n=oQ)l$jQ-q(mg2[;l;m;t;w;z<R<U<X<^<a<gx$Ye#W$g$h$l(q(s({)b)c-U.R.q2f3O8S=X=d=e=fQ(}$ZS)X$])[Q)m$kQ.a)Y#b<r#U#r#s$X$[&f(h(t)R)u)w)y*h*k,[,y,{.S.U/f/i/q/s1n1p2p2x3V3X4T4V5c5h5{6U6z7P7x8p9^9q;r;u;x<P<S<V<[<_<e=g=i=m=n=od<s;^;s;v;y<Q<T<W<]<`<ff<t;l;m;t;w;z<R<U<X<^<a<gQ<x=]Q<y=^Q<z=_Q<{=`Q<|=aR<}=b!^$^e#W$g$h$l(q(s({)b)c-U.R.q2f3O8S;^;s;v;y<Q<T<W<]<`<f=X=d=e=f#b'e#U#r#s$X$[&f(h(t)R)u)w)y*h*k,[,y,{.S.U/f/i/q/s1n1p2p2x3V3X4T4V5c5h5{6U6z7P7x8p9^9q;r;u;x<P<S<V<[<_<e=g=i=m=n=og2[;l;m;t;w;z<R<U<X<^<a<gljOTn!R!s$o%t%v%w%y+X+^0]0`Q)Q$[Q+g&QQ+h&SR2o.S%W$_e#U#W#r#s$X$[$g$h$l&f(h(q(s(t({)R)b)c)u)w)y*h*k,[,y,{-U.R.S.U.q/f/i/q/s1n1p2f2p2x3O3V3X4T4V5c5h5{6U6z7P7x8S8p9^9q;^;l;m;r;s;t;u;v;w;x;y;z<P<Q<R<S<T<U<V<W<X<[<]<^<_<`<a<e<f<g=X=d=e=f=g=i=m=n=oQ*j%`Q/h*lQ3l/gR6g3mT)Z$])[S)Z$])[T3x/o3yQ._)WQ2|.gQ=c3sR=h6sQ)z$wQ.`)XQ.}){Q/v*uQ4Y/wQ7R4ZQ8e6kQ8t7SQ9j8fQ9s8uQ:U9kQ:g:VQ:v:hR;P:wp(q$V'g)n.Q.i.j1u2m3S5u6W9a<q=R=S=T!p<P'c(S(w)P,X-R-m-x.V.v.y/e/g1^1l1t2n2r3k3m4R5f5i5j5|6Q6Y6[6}7z8W8[8r:R=U=W=j=k=l[<Q:e:t:};R;S;U]<R2Z5p7|9_9`:pr(s$V'g)n-v.Q.i.j1u2m3S5u6W9a<q=R=S=T!r<S'c(S(w)P,X-R-m-x.V.v.y/e/g1^1l1r1t2n2r3k3m4R5f5i5j5|6Q6Y6[6}7z8W8[8r:R=U=W=j=k=l^<T:e:t:{:};R;S;U_<U2Z5p7|7}9_9`:ppiOTn}!R!s$o%k%t%v%w%y+X+^0]0`Q%h|R+T%qpiOTn}!R!s$o%k%t%v%w%y+X+^0]0`R%h|Q*n%aR/d*gqiOTn}!R!s$o%k%t%v%w%y+X+^0]0`Q/p*sS4S/t/uW6y4P4Q4R4WU8o6{6|6}U9o8n8q8rQ:Y9pR:j:ZQ%o}R*}%kR4a/}R8w7US%Pt%UR/Y*WQ%t!OR+X%uR+_%zT0^+^0`R+c%{Q+b%{R0g+cQnOQ!sTT$rn!sQ(j$UR-n(jQ!eRR&m!eQ!hSU&s!h&t,fQ&t!iR,f&uQ+s&]R0t+sQ-V'gR1v-VQ-Y'iS1y-Y1zR1z-ZQ,O&cR1W,OrZOTn}!R!s$o%k%m%t%v%w%y+X+^0]0`S!vV$mY#QZ!v+y,p3tS+y&c,OQ,p'WT3t/o3yS!nS%WU&z!n&{,gQ&{!oR,g&vQ+v&`R0v+vQ'X!yQ,j'PW,t'X,j1b5^Q1b,kR5^1cQ(]#zR-g(]Q$OdR(c$OQ#q_U(R#q,b;kQ,b;XR;k(`Q-{(xW2i-{2j5y8VU2j-|-}.OS5y2k2lR8V5z$m(o$V'c'g(S(w)P)i)j)n,X-P-Q-R-m-v-w-x.Q.V.i.j.v.y/e/g1^1l1r1s1t1u2Z2m2n2r3S3k3m4R5f5i5j5n5o5p5u5|6Q6W6Y6[6}7z7|7}8O8W8[8r9_9`9a:R:e:p:r:s:t:{:|:};R;S;U<q=R=S=T=U=W=j=k=lQ.T)PU2q.T2s5}Q2s.VR5}2rQ)[$]R.c)[Q)e$aR.l)eQ3W.vR6Z3WQ*e%ZR/c*eQ3o/jS6i3o8dR8d6jQ*p%bR/m*pQ3y/oR6q3yQ/|*zS4_/|7VR7V4aQ/T*SW3a/T3c6a8`Q3c/WQ6a3bR8`6bQ*X%PR/Z*XQ0`+^R4o0`WmOTn!sQ%x!RQ)q$oQ+W%tQ+Y%vQ+Z%wQ+]%yQ0Z+XS0^+^0`R4n0]Q$qkQ%|!VQ&P!XQ&R!YQ&T!ZQ*`%VQ*f%[Q*|%oQ+e&OQ.b)ZS0P*}+QQ0h+dQ0i+gQ0j+hU1R+{3u3vQ3f/^Q3j/eQ4X/vQ4c0RQ4m0[Y4{0y1T1U1Z6uQ6e3hQ6f3kQ7Q4YQ7W4b[7h4}5O5S5W5Y8lQ8a6cQ8s7RQ8x7XY9P7g7j7n7p7qQ9g8bQ9i8eQ9r8tW9v9Q9V9X9ZQ:T9jQ:[9sU:]9w9|:OQ:f:US:k:_:cQ:u:gQ:x:mQ;O:vQ;Q:zR;T;PQ$yqQ&h!`U)}$z${$|Q+l&YU,^&i&j&kQ.X)US/P*O*PQ0q+oQ1Q+{S1`,_,`Q2v.]Q3Z/QQ4y0wS4z0y1VQ5]1aQ6R2zS7k5P5SS9T7l7qQ9y9UQ:`9{R:n:bS$We=XR)f$bU$ae$b=XR.k)dQ$VeS'c#U)yQ'g#WS(S#r#sQ(w$XQ)P$[Q)i$gQ)j$hQ)n$lQ,X&fQ-P;rQ-Q;uQ-R;xQ-m(hQ-v(qQ-w(sQ-x(tQ.Q({Q.V)RQ.i)bQ.j)cf.v)u,y/q1n4T5c6z7x8p9^9qQ.y)wQ/e*hQ/g*kQ1^,[Q1l,{Q1r<PQ1s<SQ1t<VQ1u-US2Z;l;mQ2m.RQ2n.SQ2r.UQ3S.qQ3k/fQ3m/iQ4R/sQ5f1pQ5i<[Q5j<_Q5n;tQ5o;wQ5p;zQ5u2fQ5|2pQ6Q2xQ6W3OQ6Y3VQ6[3XQ6}4VQ7z5hQ7|<XQ7}<RQ8O<UQ8W5{Q8[6UQ8r7PQ9_<^Q9`<aQ9a8SQ:R<eQ:e;^Q:p<gQ:r;sQ:s;vQ:t;yQ:{<QQ:|<TQ:}<WQ;R<]Q;S<`Q;U<fQ<q=XQ=R=dQ=S=eQ=T=fQ=U=gQ=W=iQ=j=mQ=k=nR=l=olkOTn!R!s$o%t%v%w%y+X+^0]0`Q!^PS!uV!}Q&O!WQ&l!cQ'p#[Q(a#|S+Q%m%pQ+U%qQ+d%}Q+i&WQ,W&eQ-]'nQ-k(bQ.x)vQ/a*cQ0W+TU0p+n3s6sQ1],ZQ1k,zQ2a-fQ3Q.oQ4Q/rQ4e0TQ4f0UQ4h0VQ4j0XQ4q0bQ5e1oQ5s2^Q6|4UQ7]4iQ7_4kQ7`4lQ7y5gQ8q7OR8z7^#U_OPTVn!R!W!s!}#[$o%m%p%q%t%v%w%y%}&W&e'n)v*c+T+X+^+n,Z,z.o/r0T0U0V0X0]0`0b1o3s4U4i4k4l5g6s7O7^Q!iSQ!tUQ$soS&o!g&rQ&u!jQ'b#TQ'i#XQ'q#_Q'r#`Q's#aQ't#bQ'u#cQ'v#dQ'w#eQ'x#fQ'y#gQ'z#hQ'{#iQ'}#kQ(Q#pQ(U#tW(`#|(b-f2^Q*Y%QS+p&[0rS,c&p,eQ,h&xQ,m'TQ-T'fQ-Z'jQ-_;VQ-a;YQ-p(lQ.r)oQ0l+jQ0o+mQ1d,nQ1w-XQ1|;]Q1};_Q2O;`Q2P;aQ2Q;bQ2R;cQ2S;dQ2T;eQ2U;fQ2V;gQ2W;hQ2X;iQ2Y-`Q2];nQ2b;jQ3T.tQ3[/RQ4x;{Q5Y1SQ5_1eQ5k1xQ5l;|Q5q<OQ5r<YQ6j3pQ7d4uQ7g4|Q7{<ZQ8P<bQ8Q<cQ9Q7iQ9h8cQ9u9OQ9w9RQ:_9zQ:m:aQ:z:oQ;X!cR<w=[R!kSR&^!]S&Y!]+rS+o&Z&bS+{&c,OQ0w+xW0y+y,S,T,UU1V+|,Q,RY1Z,V3t3{3|3}S3u/o3yU5P0z0{0|S5S0}1OW5W1P6n6o6xU7l5Q5R5TS7p5U8gQ7q5VU9U7m7o7rQ9Z7sS9{9W9YR:b9}R'h#WR'k#XQ#OXR0x;WT!zV$mS!yV$mU%Zvw+VU'P!v!x!{S,k'Q'RQ,r'WQ/b*dQ1c,lU1f,p,q,sS5`1g1hR7u5a`!mS!g!j%W&p&y*a,it!wVvw!v!x!{$m'Q'R'W*d,l,p,q,s1g1h5aQ0Y+VQ0m+kQ4s0eQ7c4tT<n&[*bT!pS%WS!oS%WS&q!g&yS&v!j*aS+q&[*bT,d&p,iT&a!]%XQ#zbR(f$PT([#z(]R2`-eT(z$X(|R)S$[Q.w)uQ1j,yQ4P/qQ5d1nQ6{4TQ7v5cQ8n6zQ9]7xQ9p8pQ:Q9^R:Z9qllOTn!R!s$o%t%v%w%y+X+^0]0`Q%n}R*|%kV%[vw+VR/k*mR*{%iQ%TtR*_%UR*T%OT%r!O%uT%s!O%uT0_+^0`",nodeNames:"⚠ extends ArithOp ArithOp InterpolationStart LineComment BlockComment Script ExportDeclaration export Star as VariableName String from ; default FunctionDeclaration async function VariableDefinition > TypeParamList TypeDefinition ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation NullType null VoidType void TypeofType typeof MemberExpression . ?. PropertyName [ TemplateString Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewExpression new TypeArgList CompareOp < ) ( ArgList UnaryExpression await yield delete LogicOp BitOp ParenthesizedExpression ClassExpression class extends ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXStartTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody MethodDeclaration AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression",maxTerm:345,context:hf,nodeProps:[["closedBy",4,"InterpolationEnd",43,"]",53,"}",68,")",140,"JSXSelfCloseEndTag JSXEndTag",156,"JSXEndTag"],["group",-26,8,15,17,60,195,199,202,203,205,208,211,222,224,230,232,234,236,239,245,251,253,255,257,259,261,262,"Statement",-30,12,13,25,28,29,34,44,46,47,49,54,62,70,76,77,99,100,109,110,127,130,132,133,134,135,137,138,158,159,161,"Expression",-23,24,26,30,33,35,37,162,164,166,167,169,170,171,173,174,175,177,178,179,189,191,193,194,"Type",-3,81,92,98,"ClassItem"],["openedBy",31,"InterpolationStart",48,"[",52,"{",67,"(",139,"JSXStartTag",151,"JSXStartTag JSXStartCloseTag"]],propSources:[pf],skippedNodes:[0,5,6],repeatNodeCount:29,tokenData:"#2k~R!bOX%ZXY%uYZ'kZ[%u[]%Z]^'k^p%Zpq%uqr(Rrs)mst7]tu9guv<avw=bwx>lxyJcyzJyz{Ka{|Lm|}MW}!OLm!O!PMn!P!Q!$v!Q!R!Er!R![!G_![!]!Nc!]!^!N{!^!_# c!_!`#!`!`!a##d!a!b#%s!b!c#'h!c!}9g!}#O#(O#O#P%Z#P#Q#(f#Q#R#(|#R#S9g#S#T#)g#T#o#)}#o#p#,w#p#q#,|#q#r#-j#r#s#.S#s$f%Z$f$g%u$g#BY9g#BY#BZ#.j#BZ$IS9g$IS$I_#.j$I_$I|9g$I|$I}#1X$I}$JO#1X$JO$JT9g$JT$JU#.j$JU$KV9g$KV$KW#.j$KW&FU9g&FU&FV#.j&FV;'S9g;'S;=`<Z<%l?HT9g?HT?HU#.j?HUO9gW%`T$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%ZW%rP;=`<%l%Z7Z%|i$`W'g7ROX%ZXY%uYZ%ZZ[%u[p%Zpq%uq!^%Z!_#o%Z#p$f%Z$f$g%u$g#BY%Z#BY#BZ%u#BZ$IS%Z$IS$I_%u$I_$JT%Z$JT$JU%u$JU$KV%Z$KV$KW%u$KW&FU%Z&FU&FV%u&FV;'S%Z;'S;=`%o<%l?HT%Z?HT?HU%u?HUO%Z7Z'rT$`W'h7RO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z&y(YU$`W!l&qO!^%Z!_!`(l!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z&t(sU#m&l$`WO!^%Z!_!`)V!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z&t)^T#m&l$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z1i)t]$`W]&ZOY)mYZ*mZr)mrs,js!^)m!^!_-S!_#O)m#O#P1q#P#o)m#o#p-S#p;'S)m;'S;=`7V<%lO)m,^*rX$`WOr*mrs+_s!^*m!^!_+u!_#o*m#o#p+u#p;'S*m;'S;=`,d<%lO*m,^+fT$Z,U$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z,U+xTOr+urs,Xs;'S+u;'S;=`,^<%lO+u,U,^O$Z,U,U,aP;=`<%l+u,^,gP;=`<%l*m1i,sT$Z,U$`W]&ZO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z1a-XX]&ZOY-SYZ+uZr-Srs-ts#O-S#O#P-{#P;'S-S;'S;=`1k<%lO-S1a-{O$Z,U]&Z1a.OUOr-Srs.bs;'S-S;'S;=`0y;=`<%l/R<%lO-S1a.iW$Z,U]&ZOY/RZr/Rrs/ps#O/R#O#P/u#P;'S/R;'S;=`0s<%lO/R&Z/WW]&ZOY/RZr/Rrs/ps#O/R#O#P/u#P;'S/R;'S;=`0s<%lO/R&Z/uO]&Z&Z/xRO;'S/R;'S;=`0R;=`O/R&Z0WX]&ZOY/RZr/Rrs/ps#O/R#O#P/u#P;'S/R;'S;=`0s;=`<%l/R<%lO/R&Z0vP;=`<%l/R1a1OX]&ZOY/RZr/Rrs/ps#O/R#O#P/u#P;'S/R;'S;=`0s;=`<%l-S<%lO/R1a1nP;=`<%l-S1i1vY$`WOr)mrs2fs!^)m!^!_-S!_#o)m#o#p-S#p;'S)m;'S;=`6e;=`<%l/R<%lO)m1i2o]$Z,U$`W]&ZOY3hYZ%ZZr3hrs4hs!^3h!^!_/R!_#O3h#O#P5O#P#o3h#o#p/R#p;'S3h;'S;=`6_<%lO3h&c3o]$`W]&ZOY3hYZ%ZZr3hrs4hs!^3h!^!_/R!_#O3h#O#P5O#P#o3h#o#p/R#p;'S3h;'S;=`6_<%lO3h&c4oT$`W]&ZO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c5TW$`WO!^3h!^!_/R!_#o3h#o#p/R#p;'S3h;'S;=`5m;=`<%l/R<%lO3h&c5rX]&ZOY/RZr/Rrs/ps#O/R#O#P/u#P;'S/R;'S;=`0s;=`<%l3h<%lO/R&c6bP;=`<%l3h1i6jX]&ZOY/RZr/Rrs/ps#O/R#O#P/u#P;'S/R;'S;=`0s;=`<%l)m<%lO/R1i7YP;=`<%l)m#]7b]$`WOt%Ztu8Zu!^%Z!_!c%Z!c!}8Z!}#R%Z#R#S8Z#S#T%Z#T#o8Z#p$g%Z$g;'S8Z;'S;=`9a<%lO8Z#]8b_$`W'|#TOt%Ztu8Zu!Q%Z!Q![8Z![!^%Z!_!c%Z!c!}8Z!}#R%Z#R#S8Z#S#T%Z#T#o8Z#p$g%Z$g;'S8Z;'S;=`9a<%lO8Z#]9dP;=`<%l8Z,T9ra$`W's#S'j)s$SSOt%Ztu9gu}%Z}!O:w!O!Q%Z!Q![9g![!^%Z!_!c%Z!c!}9g!}#R%Z#R#S9g#S#T%Z#T#o9g#p$g%Z$g;'S9g;'S;=`<Z<%lO9g[;Oa$`W$SSOt%Ztu:wu}%Z}!O:w!O!Q%Z!Q![:w![!^%Z!_!c%Z!c!}:w!}#R%Z#R#S:w#S#T%Z#T#o:w#p$g%Z$g;'S:w;'S;=`<T<%lO:w[<WP;=`<%l:w,T<^P;=`<%l9g&t<hU$`W#e&lO!^%Z!_!`<z!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z&t=RT$`W#w&lO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z(h=iW(V(`$`WOv%Zvw>Rw!^%Z!_!`<z!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z&t>YU$`W#q&lO!^%Z!_!`<z!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z1i>s]$`W]&ZOY>lYZ?lZw>lwx,jx!^>l!^!_@|!_#O>l#O#PE_#P#o>l#o#p@|#p;'S>l;'S;=`J]<%lO>l,^?qX$`WOw?lwx+_x!^?l!^!_@^!_#o?l#o#p@^#p;'S?l;'S;=`@v<%lO?l,U@aTOw@^wx,Xx;'S@^;'S;=`@p<%lO@^,U@sP;=`<%l@^,^@yP;=`<%l?l1aARX]&ZOY@|YZ@^Zw@|wx-tx#O@|#O#PAn#P;'S@|;'S;=`EX<%lO@|1aAqUOw@|wxBTx;'S@|;'S;=`Dg;=`<%lBt<%lO@|1aB[W$Z,U]&ZOYBtZwBtwx/px#OBt#O#PCc#P;'SBt;'S;=`Da<%lOBt&ZByW]&ZOYBtZwBtwx/px#OBt#O#PCc#P;'SBt;'S;=`Da<%lOBt&ZCfRO;'SBt;'S;=`Co;=`OBt&ZCtX]&ZOYBtZwBtwx/px#OBt#O#PCc#P;'SBt;'S;=`Da;=`<%lBt<%lOBt&ZDdP;=`<%lBt1aDlX]&ZOYBtZwBtwx/px#OBt#O#PCc#P;'SBt;'S;=`Da;=`<%l@|<%lOBt1aE[P;=`<%l@|1iEdY$`WOw>lwxFSx!^>l!^!_@|!_#o>l#o#p@|#p;'S>l;'S;=`Ik;=`<%lBt<%lO>l1iF]]$Z,U$`W]&ZOYGUYZ%ZZwGUwx4hx!^GU!^!_Bt!_#OGU#O#PHU#P#oGU#o#pBt#p;'SGU;'S;=`Ie<%lOGU&cG]]$`W]&ZOYGUYZ%ZZwGUwx4hx!^GU!^!_Bt!_#OGU#O#PHU#P#oGU#o#pBt#p;'SGU;'S;=`Ie<%lOGU&cHZW$`WO!^GU!^!_Bt!_#oGU#o#pBt#p;'SGU;'S;=`Hs;=`<%lBt<%lOGU&cHxX]&ZOYBtZwBtwx/px#OBt#O#PCc#P;'SBt;'S;=`Da;=`<%lGU<%lOBt&cIhP;=`<%lGU1iIpX]&ZOYBtZwBtwx/px#OBt#O#PCc#P;'SBt;'S;=`Da;=`<%l>l<%lOBt1iJ`P;=`<%l>l,TJjT!f+{$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z$PKQT!e#w$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z)ZKjW$`W'k#e#f&lOz%Zz{LS{!^%Z!_!`<z!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z&tLZU$`W#c&lO!^%Z!_!`<z!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z*qLtU$`Wk*iO!^%Z!_!`<z!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z,TM_T!T+{$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z,TMuX$`Wx(dO!O%Z!O!PNb!P!Q%Z!Q![! d![!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z$oNgV$`WO!O%Z!O!PN|!P!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z$o! TT!S$g$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c! k]$`Wl&ZO!Q%Z!Q![! d![!^%Z!_!g%Z!g!h!!d!h#R%Z#R#S! d#S#X%Z#X#Y!!d#Y#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!!i]$`WO{%Z{|!#b|}%Z}!O!#b!O!Q%Z!Q![!$S![!^%Z!_#R%Z#R#S!$S#S#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!#gX$`WO!Q%Z!Q![!$S![!^%Z!_#R%Z#R#S!$S#S#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!$ZX$`Wl&ZO!Q%Z!Q![!$S![!^%Z!_#R%Z#R#S!$S#S#o%Z#p;'S%Z;'S;=`%o<%lO%Z7Z!$}b$`W#d&lOY!&VYZ%ZZz!&Vz{!-n{!P!&V!P!Q!BV!Q!^!&V!^!_!(f!_!`!Ch!`!a!Dm!a!}!&V!}#O!+T#O#P!,v#P#o!&V#o#p!(f#p;'S!&V;'S;=`!-h<%lO!&VX!&^^$`W!PPOY!&VYZ%ZZ!P!&V!P!Q!'Y!Q!^!&V!^!_!(f!_!}!&V!}#O!+T#O#P!,v#P#o!&V#o#p!(f#p;'S!&V;'S;=`!-h<%lO!&VX!'aa$`W!PPO!^%Z!_#Z%Z#Z#[!'Y#[#]%Z#]#^!'Y#^#a%Z#a#b!'Y#b#g%Z#g#h!'Y#h#i%Z#i#j!'Y#j#m%Z#m#n!'Y#n#o%Z#p;'S%Z;'S;=`%o<%lO%ZP!(kX!PPOY!(fZ!P!(f!P!Q!)W!Q!}!(f!}#O!)o#O#P!*n#P;'S!(f;'S;=`!*}<%lO!(fP!)]U!PP#Z#[!)W#]#^!)W#a#b!)W#g#h!)W#i#j!)W#m#n!)WP!)rVOY!)oZ#O!)o#O#P!*X#P#Q!(f#Q;'S!)o;'S;=`!*h<%lO!)oP!*[SOY!)oZ;'S!)o;'S;=`!*h<%lO!)oP!*kP;=`<%l!)oP!*qSOY!(fZ;'S!(f;'S;=`!*}<%lO!(fP!+QP;=`<%l!(fX!+Y[$`WOY!+TYZ%ZZ!^!+T!^!_!)o!_#O!+T#O#P!,O#P#Q!&V#Q#o!+T#o#p!)o#p;'S!+T;'S;=`!,p<%lO!+TX!,TX$`WOY!+TYZ%ZZ!^!+T!^!_!)o!_#o!+T#o#p!)o#p;'S!+T;'S;=`!,p<%lO!+TX!,sP;=`<%l!+TX!,{X$`WOY!&VYZ%ZZ!^!&V!^!_!(f!_#o!&V#o#p!(f#p;'S!&V;'S;=`!-h<%lO!&VX!-kP;=`<%l!&V7Z!-u`$`W!PPOY!-nYZ!.wZz!-nz{!2U{!P!-n!P!Q!@m!Q!^!-n!^!_!4m!_!}!-n!}#O!;l#O#P!?o#P#o!-n#o#p!4m#p;'S!-n;'S;=`!@g<%lO!-n7Z!.|X$`WOz!.wz{!/i{!^!.w!^!_!0w!_#o!.w#o#p!0w#p;'S!.w;'S;=`!2O<%lO!.w7Z!/nZ$`WOz!.wz{!/i{!P!.w!P!Q!0a!Q!^!.w!^!_!0w!_#o!.w#o#p!0w#p;'S!.w;'S;=`!2O<%lO!.w7Z!0hT$`WU7RO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z7R!0zTOz!0wz{!1Z{;'S!0w;'S;=`!1x<%lO!0w7R!1^VOz!0wz{!1Z{!P!0w!P!Q!1s!Q;'S!0w;'S;=`!1x<%lO!0w7R!1xOU7R7R!1{P;=`<%l!0w7Z!2RP;=`<%l!.w7Z!2]`$`W!PPOY!-nYZ!.wZz!-nz{!2U{!P!-n!P!Q!3_!Q!^!-n!^!_!4m!_!}!-n!}#O!;l#O#P!?o#P#o!-n#o#p!4m#p;'S!-n;'S;=`!@g<%lO!-n7Z!3ha$`WU7R!PPO!^%Z!_#Z%Z#Z#[!'Y#[#]%Z#]#^!'Y#^#a%Z#a#b!'Y#b#g%Z#g#h!'Y#h#i%Z#i#j!'Y#j#m%Z#m#n!'Y#n#o%Z#p;'S%Z;'S;=`%o<%lO%Z7R!4r[!PPOY!4mYZ!0wZz!4mz{!5h{!P!4m!P!Q!:b!Q!}!4m!}#O!6|#O#P!9r#P;'S!4m;'S;=`!:[<%lO!4m7R!5m[!PPOY!4mYZ!0wZz!4mz{!5h{!P!4m!P!Q!6c!Q!}!4m!}#O!6|#O#P!9r#P;'S!4m;'S;=`!:[<%lO!4m7R!6jUU7R!PP#Z#[!)W#]#^!)W#a#b!)W#g#h!)W#i#j!)W#m#n!)W7R!7PYOY!6|YZ!0wZz!6|z{!7o{#O!6|#O#P!9S#P#Q!4m#Q;'S!6|;'S;=`!9l<%lO!6|7R!7r[OY!6|YZ!0wZz!6|z{!7o{!P!6|!P!Q!8h!Q#O!6|#O#P!9S#P#Q!4m#Q;'S!6|;'S;=`!9l<%lO!6|7R!8mVU7ROY!)oZ#O!)o#O#P!*X#P#Q!(f#Q;'S!)o;'S;=`!*h<%lO!)o7R!9VVOY!6|YZ!0wZz!6|z{!7o{;'S!6|;'S;=`!9l<%lO!6|7R!9oP;=`<%l!6|7R!9uVOY!4mYZ!0wZz!4mz{!5h{;'S!4m;'S;=`!:[<%lO!4m7R!:_P;=`<%l!4m7R!:ga!PPOz!0wz{!1Z{#Z!0w#Z#[!:b#[#]!0w#]#^!:b#^#a!0w#a#b!:b#b#g!0w#g#h!:b#h#i!0w#i#j!:b#j#m!0w#m#n!:b#n;'S!0w;'S;=`!1x<%lO!0w7Z!;q^$`WOY!;lYZ!.wZz!;lz{!<m{!^!;l!^!_!6|!_#O!;l#O#P!>q#P#Q!-n#Q#o!;l#o#p!6|#p;'S!;l;'S;=`!?i<%lO!;l7Z!<r`$`WOY!;lYZ!.wZz!;lz{!<m{!P!;l!P!Q!=t!Q!^!;l!^!_!6|!_#O!;l#O#P!>q#P#Q!-n#Q#o!;l#o#p!6|#p;'S!;l;'S;=`!?i<%lO!;l7Z!={[$`WU7ROY!+TYZ%ZZ!^!+T!^!_!)o!_#O!+T#O#P!,O#P#Q!&V#Q#o!+T#o#p!)o#p;'S!+T;'S;=`!,p<%lO!+T7Z!>vZ$`WOY!;lYZ!.wZz!;lz{!<m{!^!;l!^!_!6|!_#o!;l#o#p!6|#p;'S!;l;'S;=`!?i<%lO!;l7Z!?lP;=`<%l!;l7Z!?tZ$`WOY!-nYZ!.wZz!-nz{!2U{!^!-n!^!_!4m!_#o!-n#o#p!4m#p;'S!-n;'S;=`!@g<%lO!-n7Z!@jP;=`<%l!-n7Z!@te$`W!PPOz!.wz{!/i{!^!.w!^!_!0w!_#Z!.w#Z#[!@m#[#]!.w#]#^!@m#^#a!.w#a#b!@m#b#g!.w#g#h!@m#h#i!.w#i#j!@m#j#m!.w#m#n!@m#n#o!.w#o#p!0w#p;'S!.w;'S;=`!2O<%lO!.w7Z!B^X$`WT7ROY!BVYZ%ZZ!^!BV!^!_!By!_#o!BV#o#p!By#p;'S!BV;'S;=`!Cb<%lO!BV7R!COST7ROY!ByZ;'S!By;'S;=`!C[<%lO!By7R!C_P;=`<%l!By7Z!CeP;=`<%l!BV&u!Cq^$`W#w&l!PPOY!&VYZ%ZZ!P!&V!P!Q!'Y!Q!^!&V!^!_!(f!_!}!&V!}#O!+T#O#P!,v#P#o!&V#o#p!(f#p;'S!&V;'S;=`!-h<%lO!&V]!Dv^$PS$`W!PPOY!&VYZ%ZZ!P!&V!P!Q!'Y!Q!^!&V!^!_!(f!_!}!&V!}#O!+T#O#P!,v#P#o!&V#o#p!(f#p;'S!&V;'S;=`!-h<%lO!&V&c!Eyf$`Wl&ZO!O%Z!O!P! d!P!Q%Z!Q![!G_![!^%Z!_!g%Z!g!h!!d!h#R%Z#R#S!G_#S#U%Z#U#V!IR#V#X%Z#X#Y!!d#Y#b%Z#b#c!Hk#c#d!Js#d#l%Z#l#m!L_#m#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!Gfa$`Wl&ZO!O%Z!O!P! d!P!Q%Z!Q![!G_![!^%Z!_!g%Z!g!h!!d!h#R%Z#R#S!G_#S#X%Z#X#Y!!d#Y#b%Z#b#c!Hk#c#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!HrT$`Wl&ZO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!IWY$`WO!Q%Z!Q!R!Iv!R!S!Iv!S!^%Z!_#R%Z#R#S!Iv#S#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!I}[$`Wl&ZO!Q%Z!Q!R!Iv!R!S!Iv!S!^%Z!_#R%Z#R#S!Iv#S#b%Z#b#c!Hk#c#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!JxX$`WO!Q%Z!Q!Y!Ke!Y!^%Z!_#R%Z#R#S!Ke#S#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!KlZ$`Wl&ZO!Q%Z!Q!Y!Ke!Y!^%Z!_#R%Z#R#S!Ke#S#b%Z#b#c!Hk#c#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!Ld]$`WO!Q%Z!Q![!M]![!^%Z!_!c%Z!c!i!M]!i#R%Z#R#S!M]#S#T%Z#T#Z!M]#Z#o%Z#p;'S%Z;'S;=`%o<%lO%Z&c!Md_$`Wl&ZO!Q%Z!Q![!M]![!^%Z!_!c%Z!c!i!M]!i#R%Z#R#S!M]#S#T%Z#T#Z!M]#Z#b%Z#b#c!Hk#c#o%Z#p;'S%Z;'S;=`%o<%lO%Z(m!NlT!_V$`W#u(^O!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z!P# ST_w$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z6i# nR'n$Y!c(O$Q,_(ZP!P!Q# w!^!_# |!_!`#!ZW# |O$bW&l#!RP#g&l!_!`#!U&l#!ZO#w&l&l#!`O#h&l(m#!gV#T(e$`WO!^%Z!_!`(l!`!a#!|!a#o%Z#p;'S%Z;'S;=`%o<%lO%Z&u##TT#`&m$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z(m##oVe!s#h&l$]S$`WO!^%Z!_!`#$U!`!a#$l!a#o%Z#p;'S%Z;'S;=`%o<%lO%Z&t#$]T#h&l$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z&t#$sV#g&l$`WO!^%Z!_!`<z!`!a#%Y!a#o%Z#p;'S%Z;'S;=`%o<%lO%Z&t#%aU#g&l$`WO!^%Z!_!`<z!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z(m#%zX'}&q$`WO!O%Z!O!P#&g!P!^%Z!_!a%Z!a!b#&}!b#o%Z#p;'S%Z;'S;=`%o<%lO%Z(i#&nTy(a$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z&t#'UU$`W#r&lO!^%Z!_!`<z!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z#_#'oT!u#V$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z,P#(VT{+w$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z$P#(mT!Q#w$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z&t#)TU#o&l$`WO!^%Z!_!`<z!`#o%Z#p;'S%Z;'S;=`%o<%lO%Z){#)nT$`W'r)sO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z,T#*Ya$`W's#S'j)s$USOt%Ztu#)}u}%Z}!O#+_!O!Q%Z!Q![#)}![!^%Z!_!c%Z!c!}#)}!}#R%Z#R#S#)}#S#T%Z#T#o#)}#p$g%Z$g;'S#)};'S;=`#,q<%lO#)}[#+fa$`W$USOt%Ztu#+_u}%Z}!O#+_!O!Q%Z!Q![#+_![!^%Z!_!c%Z!c!}#+_!}#R%Z#R#S#+_#S#T%Z#T#o#+_#p$g%Z$g;'S#+_;'S;=`#,k<%lO#+_[#,nP;=`<%l#+_,T#,tP;=`<%l#)}~#,|O!V~(h#-TV(U(`$`WO!^%Z!_!`<z!`#o%Z#p#q#&}#q;'S%Z;'S;=`%o<%lO%Z(}#-sT!U(soQ$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%ZX#.ZT!mP$`WO!^%Z!_#o%Z#p;'S%Z;'S;=`%o<%lO%Z7Z#.wt$`W'g7R's#S'j)s$SSOX%ZXY%uYZ%ZZ[%u[p%Zpq%uqt%Ztu9gu}%Z}!O:w!O!Q%Z!Q![9g![!^%Z!_!c%Z!c!}9g!}#R%Z#R#S9g#S#T%Z#T#o9g#p$f%Z$f$g%u$g#BY9g#BY#BZ#.j#BZ$IS9g$IS$I_#.j$I_$JT9g$JT$JU#.j$JU$KV9g$KV$KW#.j$KW&FU9g&FU&FV#.j&FV;'S9g;'S;=`<Z<%l?HT9g?HT?HU#.j?HUO9g7Z#1fa$`W'h7R's#S'j)s$SSOt%Ztu9gu}%Z}!O:w!O!Q%Z!Q![9g![!^%Z!_!c%Z!c!}9g!}#R%Z#R#S9g#S#T%Z#T#o9g#p$g%Z$g;'S9g;'S;=`<Z<%lO9g",tokenizers:[df,uf,ff,Of,0,1,2,3,4,5,6,7,8,9,cf],topRules:{Script:[0,7],SingleExpression:[1,263]},dialects:{jsx:13404,ts:13406},dynamicPrecedences:{159:1,187:1},specialized:[{term:302,get:t=>mf[t]||-1},{term:311,get:t=>gf[t]||-1},{term:65,get:t=>Qf[t]||-1}],tokenPrec:13429}),Sf=[iu("function ${name}(${params}) {\n\t${}\n}",{label:"function",detail:"definition",type:"keyword"}),iu("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n\t${}\n}",{label:"for",detail:"loop",type:"keyword"}),iu("for (let ${name} of ${collection}) {\n\t${}\n}",{label:"for",detail:"of loop",type:"keyword"}),iu("do {\n\t${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),iu("while (${}) {\n\t${}\n}",{label:"while",detail:"loop",type:"keyword"}),iu("try {\n\t${}\n} catch (${error}) {\n\t${}\n}",{label:"try",detail:"/ catch block",type:"keyword"}),iu("if (${}) {\n\t${}\n}",{label:"if",detail:"block",type:"keyword"}),iu("if (${}) {\n\t${}\n} else {\n\t${}\n}",{label:"if",detail:"/ else block",type:"keyword"}),iu("class ${name} {\n\tconstructor(${params}) {\n\t\t${}\n\t}\n}",{label:"class",detail:"definition",type:"keyword"}),iu('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),iu('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],yf=new qo,wf=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function vf(t){return(e,i)=>{let n=e.node.getChild("VariableDefinition");return n&&i(n,t),!0}}const xf=["FunctionDeclaration"],kf={FunctionDeclaration:vf("function"),ClassDeclaration:vf("class"),ClassExpression:()=>!0,EnumDeclaration:vf("constant"),TypeAliasDeclaration:vf("type"),NamespaceDeclaration:vf("namespace"),VariableDefinition(t,e){t.matchContext(xf)||e(t,"variable")},TypeDefinition(t,e){e(t,"type")},__proto__:null};function $f(t,e){let i=yf.get(e);if(i)return i;let n=[],s=!0;function r(e,i){let s=t.sliceString(e.from,e.to);n.push({label:s,type:i})}return e.cursor(Qo.IncludeAnonymous).iterate((e=>{if(s)s=!1;else if(e.name){let t=kf[e.name];if(t&&t(e,r)||wf.has(e.name))return!1}else if(e.to-e.from>8192){for(let i of $f(t,e.node))n.push(i);return!1}})),yf.set(e,n),n}const Tf=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,Pf=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName"];function Cf(t){let e=ml(t.state).resolveInner(t.pos,-1);if(Pf.indexOf(e.name)>-1)return null;let i="VariableName"==e.name||e.to-e.from<20&&Tf.test(t.state.sliceDoc(e.from,e.to));if(!i&&!t.explicit)return null;let n=[];for(let i=e;i;i=i.parent)wf.has(i.name)&&(n=n.concat($f(t.state.doc,i)));return{options:n,from:i?e.from:t.pos,validFor:Tf}}const Zf=pl.define({name:"javascript",parser:bf.configure({props:[Xl.add({IfStatement:Wl({except:/^\s*({|else\b)/}),TryStatement:Wl({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:t=>t.baseIndent,SwitchBody:t=>{let e=t.textAfter,i=/^\s*\}/.test(e),n=/^\s*(case|default)\b/.test(e);return t.baseIndent+(i?0:n?1:2)*t.unit},Block:Dl({closing:"}"}),ArrowFunction:t=>t.baseIndent+t.unit,"TemplateString BlockComment":()=>null,"Statement Property":Wl({except:/^{/}),JSXElement(t){let e=/^\s*<\//.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},JSXEscape(t){let e=/\s*\}/.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},"JSXOpenTag JSXSelfClosingTag":t=>t.column(t.node.from)+t.unit}),Gl.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression":function(t){let e=t.firstChild,i=t.lastChild;return e&&e.to<i.from?{from:e.to,to:i.type.isError?t.to:i.from}:null},BlockComment:t=>({from:t.from+2,to:t.to-2})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),Af=Zf.configure({dialect:"ts"},"typescript"),Rf=Zf.configure({dialect:"jsx"}),Xf=Zf.configure({dialect:"jsx ts"},"typescript"),Uf="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map((t=>({label:t,type:"keyword"})));function qf(t={}){let e=t.jsx?t.typescript?Xf:Rf:t.typescript?Af:Zf;return new $l(e,[Zf.data.of({autocomplete:(i=Pf,n=uc(Sf.concat(Uf)),t=>{for(let e=ml(t.state).resolveInner(t.pos,-1);e;e=e.parent)if(i.indexOf(e.name)>-1)return null;return n(t)})}),Zf.data.of({autocomplete:Cf}),t.jsx?Mf:[]]);var i,n}function Vf(t,e,i=t.length){if(!e)return"";let n=e.getChild("JSXIdentifier");return n?t.sliceString(n.from,Math.min(n.to,i)):""}const _f="object"==typeof navigator&&/Android\b/.test(navigator.userAgent),Mf=Ps.inputHandler.of(((t,e,i,n)=>{if((_f?t.composing:t.compositionStarted)||t.state.readOnly||e!=i||">"!=n&&"/"!=n||!Zf.isActiveAt(t.state,e,-1))return!1;let{state:s}=t,r=s.changeByRange((t=>{var e,i,r;let o,{head:l}=t,a=ml(s).resolveInner(l,-1);if("JSXStartTag"==a.name&&(a=a.parent),">"==n&&"JSXFragmentTag"==a.name)return{range:R.cursor(l+1),changes:{from:l,insert:"><>"}};if(">"==n&&"JSXIdentifier"==a.name){if("JSXEndTag"!=(null===(i=null===(e=a.parent)||void 0===e?void 0:e.lastChild)||void 0===i?void 0:i.name)&&(o=Vf(s.doc,a.parent,l)))return{range:R.cursor(l+1),changes:{from:l,insert:`></${o}>`}}}else if("/"==n&&"JSXFragmentTag"==a.name){let t=a.parent,e=null==t?void 0:t.parent;if(t.from==l-1&&"JSXEndTag"!=(null===(r=e.lastChild)||void 0===r?void 0:r.name)&&(o=Vf(s.doc,null==e?void 0:e.firstChild,l))){let t=`/${o}>`;return{range:R.cursor(l+t.length),changes:{from:l,insert:t}}}}return{range:t}}));return!r.changes.empty&&(t.dispatch(r,{userEvent:"input.type",scrollIntoView:!0}),!0)}));return t.createEditorState=function(t,e={}){let i=[Lr(),Hr,hr(),La(),aa(),zs(),Pl.of("    "),vt.allowMultipleSelections.of(!0),vt.transactionFilter.of((t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let i=t.newDoc,{head:n}=t.newSelection.main,s=i.lineAt(n);if(n>s.from+200)return t;let r=i.sliceString(s.from,n);if(!e.some((t=>t.test(r))))return t;let{state:o}=t,l=-1,a=[];for(let{head:t}of o.selection.ranges){let e=o.doc.lineAt(t);if(e.from==l)continue;l=e.from;let i=Al(o,e.from);if(null==i)continue;let n=/^\s*/.exec(e.text)[0],s=Zl(o,i);n!=s&&a.push({from:e.from,to:e.from+n.length,insert:s})}return a.length?[t,{changes:a,sequential:!0}]:t})),$a(),[Ou,au],wu(),Qr(),yr(),dr,io(),Vs.of([ac,...du,...lc,...ch,...ea,...vu]),qf(),da(ga,{fallback:!0})];return e.oneDark&&i.push(Xu),vt.create({doc:t,extensions:i})},t.createEditorView=function(t,e){return new Ps({state:t,parent:e})},t}({});
diff --git a/assets/blog/micropython/example_micropython.py b/assets/blog/micropython/example_micropython.py
new file mode 100644
index 0000000..fba81f8
--- /dev/null
+++ b/assets/blog/micropython/example_micropython.py
@@ -0,0 +1,108 @@
+import gc
+import struct
+import time
+from array import array
+
+import console
+import display
+import fonts
+import framebuf
+
+WHITE = 255
+
+
+def palette_from_colors(*args):
+    pbuf = array("H", range(len(args)))
+    struct.pack_into(">HH", pbuf, 0, *args)
+    p = framebuf.FrameBuffer(
+        pbuf, len(args), 1, framebuf.RGB565
+    )
+    return p
+
+
+def str_width(string, font, xpad=0):
+    return sum(font.get_ch(c)[2] + xpad for c in string)
+
+
+def print_buf(
+    framebuffer,
+    string,
+    x,
+    y,
+    color,
+    font,
+    ha="left",
+    va="top",
+    bg=WHITE,
+    xpad=0,
+):
+    total_width = str_width(string, font, xpad)
+    if ha == "center":
+        x -= total_width // 2
+    elif ha == "right":
+        x -= total_width
+    if va == "center":
+        y -= font.height() // 2
+    elif va == "bottom":
+        y -= font.height()
+    p = palette_from_colors(bg, color)
+
+    for c in string:
+        b, height, width = font.get_ch(c)
+        c_fbuf = framebuf.FrameBuffer(
+            array("B", b), width, height, framebuf.MONO_HLSB
+        )
+        framebuffer.blit(c_fbuf, x, y, bg, p)
+        x += width + xpad
+    return x, y
+
+
+print(
+    "This is μPython saying hello from the on page console!"
+)
+console.log(
+    "This is μPython saying hello from the JS console!"
+)
+
+print(
+    f"Stack: alloc'd: {gc.mem_alloc()} free {gc.mem_free()} total {gc.mem_alloc() + gc.mem_free()}"
+)
+
+w, h = 240, 240
+buf = bytearray(w * h)
+fbuf = framebuf.FrameBuffer(buf, w, h, framebuf.GS8)
+
+i = 0
+while True:
+    i += 1
+    fbuf.rect(0, 0, 240, 240, 255, True)
+    fbuf.pixel(120, 120, 128)
+    x, y = print_buf(
+        fbuf,
+        str(i % 150),
+        140,
+        145,
+        255,
+        font=fonts.gunship50,
+        ha="right",
+        va="bottom",
+        bg=0,
+    )
+
+    x, y = print_buf(
+        fbuf,
+        "mW",
+        x,
+        145,
+        255,
+        font=fonts.gunship30,
+        ha="left",
+        va="bottom",
+        bg=0,
+    )
+
+    display.draw(buf)
+    # The 'await' is necessary here to yield back to the JS event loop
+    # I tried to figure out how to hide this inside the JS implementation of sleep but
+    # couldn't make it work.
+    await time.sleep(0.2)
diff --git a/assets/blog/micropython/four_picos.jpg b/assets/blog/micropython/four_picos.jpg
new file mode 100644
index 0000000..f0646f5
Binary files /dev/null and b/assets/blog/micropython/four_picos.jpg differ
diff --git a/assets/blog/micropython/micropython.min.mjs b/assets/blog/micropython/micropython.min.mjs
new file mode 100644
index 0000000..e96181c
--- /dev/null
+++ b/assets/blog/micropython/micropython.min.mjs
@@ -0,0 +1 @@
+var _scriptName,_createMicroPythonModule=(_scriptName=import.meta.url,async function(moduleArg={}){var moduleRtn,readyPromiseResolve,readyPromiseReject,Module=moduleArg,readyPromise=new Promise(((resolve,reject)=>{readyPromiseResolve=resolve,readyPromiseReject=reject}));["_free","_malloc","_mp_js_init","_mp_js_repl_init","_mp_js_repl_process_char","_mp_hal_get_interrupt_char","_mp_sched_keyboard_interrupt","_mp_js_do_exec","_mp_js_do_exec_async","_mp_js_do_import","_mp_js_register_js_module","_proxy_c_free_obj","_proxy_c_init","_proxy_c_to_js_call","_proxy_c_to_js_delete_attr","_proxy_c_to_js_dir","_proxy_c_to_js_get_array","_proxy_c_to_js_get_dict","_proxy_c_to_js_get_iter","_proxy_c_to_js_get_type","_proxy_c_to_js_has_attr","_proxy_c_to_js_iternext","_proxy_c_to_js_lookup_attr","_proxy_c_to_js_resume","_proxy_c_to_js_store_attr","_proxy_convert_mp_to_js_obj_cside","_memory","___indirect_function_table","_proxy_convert_mp_to_js_then_js_to_mp_obj_jsside","_proxy_convert_mp_to_js_then_js_to_js_then_js_to_mp_obj_jsside","_js_get_proxy_js_ref_info","_has_attr","_lookup_attr","_store_attr","_call0","_call1","_call2","_calln","_call0_kwarg","_call1_kwarg","_js_reflect_construct","_js_get_iter","_js_iter_next","_js_subscr_load","_js_subscr_store","_proxy_js_free_obj","_js_get_error_info","_js_then_resolve","_js_then_reject","_js_then_continue","_create_promise","onRuntimeInitialized"].forEach((prop=>{Object.getOwnPropertyDescriptor(readyPromise,prop)||Object.defineProperty(readyPromise,prop,{get:()=>abort("You are getting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),set:()=>abort("You are setting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")})}));var ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url)}var readAsync,readBinary,moduleOverrides=Object.assign({},Module),quit_=(status,toThrow)=>{throw toThrow},scriptDirectory="";if(ENVIRONMENT_IS_NODE){if("undefined"==typeof process||!process.release||"node"!==process.release.name)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var nodeVersion=process.versions.node,numericVersion=nodeVersion.split(".").slice(0,3);if((numericVersion=1e4*numericVersion[0]+100*numericVersion[1]+1*numericVersion[2].split("-")[0])<16e4)throw new Error("This emscripten-generated code requires node v16.0.0 (detected v"+nodeVersion+")");var fs=require("fs"),nodePath=require("path");scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url)),readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return assert(ret.buffer),ret},readAsync=(filename,binary=!0)=>(filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename),new Promise(((resolve,reject)=>{fs.readFile(filename,binary?void 0:"utf8",((err,data)=>{err?reject(err):resolve(binary?data.buffer:data)}))}))),!Module.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),quit_=(status,toThrow)=>{throw process.exitCode=status,toThrow}}else if(ENVIRONMENT_IS_SHELL){if("object"==typeof process&&"function"==typeof require||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)")}else{if(!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER)throw new Error("environment detection error");if(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:"undefined"!=typeof document&&document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptName&&(scriptDirectory=_scriptName),scriptDirectory=scriptDirectory.startsWith("blob:")?"":scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1),"object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");ENVIRONMENT_IS_WORKER&&(readBinary=url=>{var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=url=>isFileURI(url)?new Promise(((reject,resolve)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=()=>{(200==xhr.status||0==xhr.status&&xhr.response)&&resolve(xhr.response),reject(xhr.status)},xhr.onerror=reject,xhr.send(null)})):fetch(url,{credentials:"same-origin"}).then((response=>response.ok?response.arrayBuffer():Promise.reject(new Error(response.status+" : "+response.url))))}var prop,wasmBinary,wasmMemory,out=Module.print||console.log.bind(console),err=Module.printErr||console.error.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,prop="fetchSettings",Object.getOwnPropertyDescriptor(Module,prop)&&abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`),Module.arguments&&Module.arguments,legacyModuleProp("arguments","arguments_"),Module.thisProgram&&Module.thisProgram,legacyModuleProp("thisProgram","thisProgram"),Module.quit&&(quit_=Module.quit),legacyModuleProp("quit","quit_"),assert(void 0===Module.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.read,"Module.read option was removed"),assert(void 0===Module.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),assert(void 0===Module.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),assert(void 0===Module.setWindowTitle,"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),assert(void 0===Module.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),legacyModuleProp("asm","wasmExports"),legacyModuleProp("readAsync","readAsync"),legacyModuleProp("readBinary","readBinary"),legacyModuleProp("setWindowTitle","setWindowTitle"),assert(!ENVIRONMENT_IS_SHELL,"shell environment detected but not enabled at build time.  Add `shell` to `-sENVIRONMENT` to enable."),Module.wasmBinary&&(wasmBinary=Module.wasmBinary),legacyModuleProp("wasmBinary","wasmBinary"),"object"!=typeof WebAssembly&&err("no native wasm support detected");var EXITSTATUS,HEAP8,HEAPU8,HEAP16,HEAP32,HEAPU32,HEAPF32,HEAPF64,ABORT=!1;function assert(condition,text){condition||abort("Assertion failed"+(text?": "+text:""))}function checkStackCookie(){if(!ABORT){var max=_emscripten_stack_get_end();0==max&&(max+=4);var cookie1=HEAPU32[max>>2],cookie2=HEAPU32[max+4>>2];34821223==cookie1&&2310721022==cookie2||abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`),1668509029!=HEAPU32[0]&&abort("Runtime error: The application has corrupted its heap memory area (address zero)!")}}assert(!Module.STACK_SIZE,"STACK_SIZE can no longer be set at runtime.  Use -sSTACK_SIZE at link time"),assert("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),assert(!Module.wasmMemory,"Use of `wasmMemory` detected.  Use -sIMPORTED_MEMORY to define wasmMemory externally"),assert(!Module.INITIAL_MEMORY,"Detected runtime INITIAL_MEMORY setting.  Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var h16=new Int16Array(1),h8=new Int8Array(h16.buffer);if(h16[0]=25459,115!==h8[0]||99!==h8[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var __ATPRERUN__=[],__ATINIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;assert(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null,runDependencyTracking={};function getUniqueRunDependency(id){for(var orig=id;;){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++,Module.monitorRunDependencies?.(runDependencies),id?(assert(!runDependencyTracking[id]),runDependencyTracking[id]=1,null===runDependencyWatcher&&"undefined"!=typeof setInterval&&(runDependencyWatcher=setInterval((()=>{if(ABORT)return clearInterval(runDependencyWatcher),void(runDependencyWatcher=null);var shown=!1;for(var dep in runDependencyTracking)shown||(shown=!0,err("still waiting on run dependencies:")),err(`dependency: ${dep}`);shown&&err("(end of list)")}),1e4))):err("warning: run dependency added without ID")}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),id?(assert(runDependencyTracking[id]),delete runDependencyTracking[id]):err("warning: run dependency removed without ID"),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}function abort(what){Module.onAbort?.(what),err(what="Aborted("+what+")"),ABORT=!0,EXITSTATUS=1,what.indexOf("RuntimeError: unreachable")>=0&&(what+='. "unreachable" may be due to ASYNCIFY_STACK_SIZE not being large enough (try increasing it)');var e=new WebAssembly.RuntimeError(what);throw readyPromiseReject(e),e}var wasmBinaryFile,tempDouble,tempI64,isDataURI=filename=>filename.startsWith("data:application/octet-stream;base64,"),isFileURI=filename=>filename.startsWith("file://");function createExportWrapper(name,nargs){return(...args)=>{assert(runtimeInitialized,`native function \`${name}\` called before runtime initialization`);var f=wasmExports[name];return assert(f,`exported native function \`${name}\` not found`),assert(args.length<=nargs,`native function \`${name}\` called with ${args.length} args but expects ${nargs}`),f(...args)}}function findWasmBinary(){if(Module.locateFile){var f="micropython.wasm";return isDataURI(f)?f:(path=f,Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path)}var path;return new URL("micropython.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(file);throw"both async and sync fetching of the wasm failed"}function instantiateArrayBuffer(binaryFile,imports,receiver){return function(binaryFile){return wasmBinary?Promise.resolve().then((()=>getBinarySync(binaryFile))):readAsync(binaryFile).then((response=>new Uint8Array(response)),(()=>getBinarySync(binaryFile)))}(binaryFile).then((binary=>WebAssembly.instantiate(binary,imports))).then(receiver,(reason=>{err(`failed to asynchronously prepare wasm: ${reason}`),isFileURI(wasmBinaryFile)&&err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`),abort(reason)}))}function legacyModuleProp(prop,newName,incoming=!0){Object.getOwnPropertyDescriptor(Module,prop)||Object.defineProperty(Module,prop,{configurable:!0,get(){abort(`\`Module.${prop}\` has been replaced by \`${newName}\``+(incoming?" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)":""))}})}function isExportedByForceFilesystem(name){return"FS_createPath"===name||"FS_createDataFile"===name||"FS_createPreloadedFile"===name||"FS_unlink"===name||"addRunDependency"===name||"FS_createLazyFile"===name||"FS_createDevice"===name||"removeRunDependency"===name}function missingGlobal(sym,msg){"undefined"!=typeof globalThis&&Object.defineProperty(globalThis,sym,{configurable:!0,get(){warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`)}})}function unexportedRuntimeSymbol(sym){Object.getOwnPropertyDescriptor(Module,sym)||Object.defineProperty(Module,sym,{configurable:!0,get(){var msg=`'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;isExportedByForceFilesystem(sym)&&(msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),abort(msg)}})}function ExitStatus(status){this.name="ExitStatus",this.message=`Program terminated with exit(${status})`,this.status=status}missingGlobal("buffer","Please use HEAP8.buffer or wasmMemory.buffer"),missingGlobal("asm","Please use wasmExports instead");var callRuntimeCallbacks=callbacks=>{for(;callbacks.length>0;)callbacks.shift()(Module)};function getValue(ptr,type="i8"){switch(type.endsWith("*")&&(type="*"),type){case"i1":case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module.noExitRuntime||!0,ptrToString=ptr=>(assert("number"==typeof ptr),"0x"+(ptr>>>=0).toString(16).padStart(8,"0")),stackRestore=val=>__emscripten_stack_restore(val),stackSave=()=>_emscripten_stack_get_current(),warnOnce=text=>{warnOnce.shown||={},warnOnce.shown[text]||(warnOnce.shown[text]=1,ENVIRONMENT_IS_NODE&&(text="warning: "+text),err(text))},PATH={isAbs:path=>"/"===path.charAt(0),splitPath:filename=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(filename).slice(1),normalizeArray:(parts,allowAboveRoot)=>{for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];"."===last?parts.splice(i,1):".."===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash="/"===path.substr(-1);return(path=PATH.normalizeArray(path.split("/").filter((p=>!!p)),!isAbsolute).join("/"))||isAbsolute||(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];return root||dir?(dir&&(dir=dir.substr(0,dir.length-1)),root+dir):"."},basename:path=>{if("/"===path)return"/";var lastSlash=(path=(path=PATH.normalize(path)).replace(/\/$/,"")).lastIndexOf("/");return-1===lastSlash?path:path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)},randomFill=view=>(randomFill=(()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return view=>crypto.getRandomValues(view);if(ENVIRONMENT_IS_NODE)try{var crypto_module=require("crypto");if(crypto_module.randomFillSync)return view=>crypto_module.randomFillSync(view);var randomBytes=crypto_module.randomBytes;return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: (array) => { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")})())(view),PATH_FS={resolve:(...args)=>{for(var resolvedPath="",resolvedAbsolute=!1,i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if("string"!=typeof path)throw new TypeError("Arguments to path.resolve must be strings");if(!path)return"";resolvedPath=path+"/"+resolvedPath,resolvedAbsolute=PATH.isAbs(path)}return(resolvedAbsolute?"/":"")+(resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((p=>!!p)),!resolvedAbsolute).join("/"))||"."},relative:(from,to)=>{function trim(arr){for(var start=0;start<arr.length&&""===arr[start];start++);for(var end=arr.length-1;end>=0&&""===arr[end];end--);return start>end?[]:arr.slice(start,end-start+1)}from=PATH_FS.resolve(from).substr(1),to=PATH_FS.resolve(to).substr(1);for(var fromParts=trim(from.split("/")),toParts=trim(to.split("/")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length,i=0;i<length;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}var outputParts=[];for(i=samePartsLength;i<fromParts.length;i++)outputParts.push("..");return(outputParts=outputParts.concat(toParts.slice(samePartsLength))).join("/")}},UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder:void 0,UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{for(var endIdx=idx+maxBytesToRead,endPtr=idx;heapOrArray[endPtr]&&!(endPtr>=endIdx);)++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder)return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr));for(var str="";idx<endPtr;){var u0=heapOrArray[idx++];if(128&u0){var u1=63&heapOrArray[idx++];if(192!=(224&u0)){var u2=63&heapOrArray[idx++];if(224==(240&u0)?u0=(15&u0)<<12|u1<<6|u2:(240!=(248&u0)&&warnOnce("Invalid UTF-8 leading byte "+ptrToString(u0)+" encountered when deserializing a UTF-8 string in wasm memory to a JS string!"),u0=(7&u0)<<18|u1<<12|u2<<6|63&heapOrArray[idx++]),u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|1023&ch)}}else str+=String.fromCharCode((31&u0)<<6|u1)}else str+=String.fromCharCode(u0)}return str},FS_stdin_getChar_buffer=[],lengthBytesUTF8=str=>{for(var len=0,i=0;i<str.length;++i){var c=str.charCodeAt(i);c<=127?len++:c<=2047?len+=2:c>=55296&&c<=57343?(len+=4,++i):len+=3}return len},stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(assert("string"==typeof str,`stringToUTF8Array expects a string (got ${typeof str})`),!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343&&(u=65536+((1023&u)<<10)|1023&str.charCodeAt(++i)),u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|63&u}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|63&u}else{if(outIdx+3>=endIdx)break;u>1114111&&warnOnce("Invalid Unicode code point "+ptrToString(u)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|63&u}}return heap[outIdx]=0,outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1,u8array=new Array(len),numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);return dontAddNull&&(u8array.length=numBytesWritten),u8array}var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops},FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty)throw new FS.ErrnoError(43);stream.tty=tty,stream.seekable=!1},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char)throw new FS.ErrnoError(60);for(var bytesRead=0,i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(void 0===result&&0===bytesRead)throw new FS.ErrnoError(6);if(null==result)break;bytesRead++,buffer[offset+i]=result}return bytesRead&&(stream.node.timestamp=Date.now()),bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char)throw new FS.ErrnoError(60);try{for(var i=0;i<length;i++)stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}return length&&(stream.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:tty=>(()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var buf=Buffer.alloc(256),bytesRead=0,fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,256)}catch(e){if(!e.toString().includes("EOF"))throw e;bytesRead=0}bytesRead>0&&(result=buf.slice(0,bytesRead).toString("utf-8"))}else"undefined"!=typeof window&&"function"==typeof window.prompt&&null!==(result=window.prompt("Input: "))&&(result+="\n");if(!result)return null;FS_stdin_getChar_buffer=intArrayFromString(result,!0)}return FS_stdin_getChar_buffer.shift()})(),put_char(tty,val){null===val||10===val?(out(UTF8ArrayToString(tty.output,0)),tty.output=[]):0!=val&&tty.output.push(val)},fsync(tty){tty.output&&tty.output.length>0&&(out(UTF8ArrayToString(tty.output,0)),tty.output=[])},ioctl_tcgets:tty=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(tty,optional_actions,data)=>0,ioctl_tiocgwinsz:tty=>[24,80]},default_tty1_ops:{put_char(tty,val){null===val||10===val?(err(UTF8ArrayToString(tty.output,0)),tty.output=[]):0!=val&&tty.output.push(val)},fsync(tty){tty.output&&tty.output.length>0&&(err(UTF8ArrayToString(tty.output,0)),tty.output=[])}}},mmapAlloc=size=>{abort("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")},MEMFS={ops_table:null,mount:mount=>MEMFS.createNode(null,"/",16895,0),createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode))throw new FS.ErrnoError(63);MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);return FS.isDir(node.mode)?(node.node_ops=MEMFS.ops_table.dir.node,node.stream_ops=MEMFS.ops_table.dir.stream,node.contents={}):FS.isFile(node.mode)?(node.node_ops=MEMFS.ops_table.file.node,node.stream_ops=MEMFS.ops_table.file.stream,node.usedBytes=0,node.contents=null):FS.isLink(node.mode)?(node.node_ops=MEMFS.ops_table.link.node,node.stream_ops=MEMFS.ops_table.link.stream):FS.isChrdev(node.mode)&&(node.node_ops=MEMFS.ops_table.chrdev.node,node.stream_ops=MEMFS.ops_table.chrdev.stream),node.timestamp=Date.now(),parent&&(parent.contents[name]=node,parent.timestamp=node.timestamp),node},getFileDataAsTypedArray:node=>node.contents?node.contents.subarray?node.contents.subarray(0,node.usedBytes):new Uint8Array(node.contents):new Uint8Array(0),expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(!(prevCapacity>=newCapacity)){newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<1048576?2:1.125)>>>0),0!=prevCapacity&&(newCapacity=Math.max(newCapacity,256));var oldContents=node.contents;node.contents=new Uint8Array(newCapacity),node.usedBytes>0&&node.contents.set(oldContents.subarray(0,node.usedBytes),0)}},resizeFileStorage(node,newSize){if(node.usedBytes!=newSize)if(0==newSize)node.contents=null,node.usedBytes=0;else{var oldContents=node.contents;node.contents=new Uint8Array(newSize),oldContents&&node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes))),node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};return attr.dev=FS.isChrdev(node.mode)?node.id:1,attr.ino=node.id,attr.mode=node.mode,attr.nlink=1,attr.uid=0,attr.gid=0,attr.rdev=node.rdev,FS.isDir(node.mode)?attr.size=4096:FS.isFile(node.mode)?attr.size=node.usedBytes:FS.isLink(node.mode)?attr.size=node.link.length:attr.size=0,attr.atime=new Date(node.timestamp),attr.mtime=new Date(node.timestamp),attr.ctime=new Date(node.timestamp),attr.blksize=4096,attr.blocks=Math.ceil(attr.size/attr.blksize),attr},setattr(node,attr){void 0!==attr.mode&&(node.mode=attr.mode),void 0!==attr.timestamp&&(node.timestamp=attr.timestamp),void 0!==attr.size&&MEMFS.resizeFileStorage(node,attr.size)},lookup(parent,name){throw FS.genericErrors[44]},mknod:(parent,name,mode,dev)=>MEMFS.createNode(parent,name,mode,dev),rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node)for(var i in new_node.contents)throw new FS.ErrnoError(55)}delete old_node.parent.contents[old_node.name],old_node.parent.timestamp=Date.now(),old_node.name=new_name,new_dir.contents[new_name]=old_node,new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name],parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents)throw new FS.ErrnoError(55);delete parent.contents[name],parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents))entries.push(key);return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,41471,0);return node.link=oldpath,node},readlink(node){if(!FS.isLink(node.mode))throw new FS.ErrnoError(28);return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(assert(size>=0),size>8&&contents.subarray)buffer.set(contents.subarray(position,position+size),offset);else for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i];return size},write(stream,buffer,offset,length,position,canOwn){if(assert(!(buffer instanceof ArrayBuffer)),!length)return 0;var node=stream.node;if(node.timestamp=Date.now(),buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn)return assert(0===position,"canOwn must imply no weird position inside the file"),node.contents=buffer.subarray(offset,offset+length),node.usedBytes=length,length;if(0===node.usedBytes&&0===position)return node.contents=buffer.slice(offset,offset+length),node.usedBytes=length,length;if(position+length<=node.usedBytes)return node.contents.set(buffer.subarray(offset,offset+length),position),length}if(MEMFS.expandFileStorage(node,position+length),node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else for(var i=0;i<length;i++)node.contents[position+i]=buffer[offset+i];return node.usedBytes=Math.max(node.usedBytes,position+length),length},llseek(stream,offset,whence){var position=offset;if(1===whence?position+=stream.position:2===whence&&FS.isFile(stream.node.mode)&&(position+=stream.node.usedBytes),position<0)throw new FS.ErrnoError(28);return position},allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length),stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);var ptr,allocated,contents=stream.node.contents;if(2&flags||contents.buffer!==HEAP8.buffer){if((position>0||position+length<contents.length)&&(contents=contents.subarray?contents.subarray(position,position+length):Array.prototype.slice.call(contents,position,position+length)),allocated=!0,!(ptr=mmapAlloc()))throw new FS.ErrnoError(48);HEAP8.set(contents,ptr)}else allocated=!1,ptr=contents.byteOffset;return{ptr:ptr,allocated:allocated}},msync:(stream,buffer,offset,length,mmapFlags)=>(MEMFS.stream_ops.write(stream,buffer,0,length,offset,!1),0)}},preloadPlugins=Module.preloadPlugins||[],FS_getMode=(canRead,canWrite)=>{var mode=0;return canRead&&(mode|=365),canWrite&&(mode|=146),mode},UTF8ToString=(ptr,maxBytesToRead)=>(assert("number"==typeof ptr,`UTF8ToString expects a number (got ${typeof ptr})`),ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""),ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class extends Error{constructor(errno){for(var key in super(runtimeInitialized?(errno=>UTF8ToString(_strerror(errno)))(errno):""),this.name="ErrnoError",this.errno=errno,ERRNO_CODES)if(ERRNO_CODES[key]===errno){this.code=key;break}}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return 1!=(2097155&this.flags)}get isWrite(){return!!(2097155&this.flags)}get isAppend(){return 1024&this.flags}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){parent||(parent=this),this.parent=parent,this.mount=parent.mount,this.mounted=null,this.id=FS.nextInode++,this.name=name,this.mode=mode,this.node_ops={},this.stream_ops={},this.rdev=rdev,this.readMode=365,this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!(path=PATH_FS.resolve(path)))return{path:"",node:null};if((opts=Object.assign({follow_mount:!0,recurse_count:0},opts)).recurse_count>8)throw new FS.ErrnoError(32);for(var parts=path.split("/").filter((p=>!!p)),current=FS.root,current_path="/",i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent)break;if(current=FS.lookupNode(current,parts[i]),current_path=PATH.join2(current_path,parts[i]),FS.isMountpoint(current)&&(!islast||islast&&opts.follow_mount)&&(current=current.mounted.root),!islast||opts.follow)for(var count=0;FS.isLink(current.mode);){var link=FS.readlink(current_path);if(current_path=PATH_FS.resolve(PATH.dirname(current_path),link),current=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1}).node,count++>40)throw new FS.ErrnoError(32)}}return{path:current_path,node:current}},getPath(node){for(var path;;){if(FS.isRoot(node)){var mount=node.mount.mountpoint;return path?"/"!==mount[mount.length-1]?`${mount}/${path}`:mount+path:mount}path=path?`${node.name}/${path}`:node.name,node=node.parent}},hashName(parentid,name){for(var hash=0,i=0;i<name.length;i++)hash=(hash<<5)-hash+name.charCodeAt(i)|0;return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash],FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node)FS.nameTable[hash]=node.name_next;else for(var current=FS.nameTable[hash];current;){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode)throw new FS.ErrnoError(errCode);for(var hash=FS.hashName(parent.id,name),node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name)return node}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){assert("object"==typeof parent);var node=new FS.FSNode(parent,name,mode,rdev);return FS.hashAddNode(node),node},destroyNode(node){FS.hashRemoveNode(node)},isRoot:node=>node===node.parent,isMountpoint:node=>!!node.mounted,isFile:mode=>32768==(61440&mode),isDir:mode=>16384==(61440&mode),isLink:mode=>40960==(61440&mode),isChrdev:mode=>8192==(61440&mode),isBlkdev:mode=>24576==(61440&mode),isFIFO:mode=>4096==(61440&mode),isSocket:mode=>!(49152&~mode),flagsToPermissionString(flag){var perms=["r","w","rw"][3&flag];return 512&flag&&(perms+="w"),perms},nodePermissions:(node,perms)=>FS.ignorePermissions||(!perms.includes("r")||292&node.mode)&&(!perms.includes("w")||146&node.mode)&&(!perms.includes("x")||73&node.mode)?0:2,mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");return errCode||(dir.node_ops.lookup?0:2)},mayCreate(dir,name){try{return FS.lookupNode(dir,name),20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode)return errCode;if(isdir){if(!FS.isDir(node.mode))return 54;if(FS.isRoot(node)||FS.getPath(node)===FS.cwd())return 10}else if(FS.isDir(node.mode))return 31;return 0},mayOpen:(node,flags)=>node?FS.isLink(node.mode)?32:FS.isDir(node.mode)&&("r"!==FS.flagsToPermissionString(flags)||512&flags)?31:FS.nodePermissions(node,FS.flagsToPermissionString(flags)):44,MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++)if(!FS.streams[fd])return fd;throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>(assert(fd>=-1),stream=Object.assign(new FS.FSStream,stream),-1==fd&&(fd=FS.nextfd()),stream.fd=fd,FS.streams[fd]=stream,stream),closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);return stream.stream_ops?.dup?.(stream),stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops,stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>255&dev,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){for(var mounts=[],check=[mount];check.length;){var m=check.pop();mounts.push(m),check.push(...m.mounts)}return mounts},syncfs(populate,callback){"function"==typeof populate&&(callback=populate,populate=!1),FS.syncFSRequests++,FS.syncFSRequests>1&&err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var mounts=FS.getMounts(FS.root.mount),completed=0;function doCallback(errCode){return assert(FS.syncFSRequests>0),FS.syncFSRequests--,callback(errCode)}function done(errCode){if(errCode)return done.errored?void 0:(done.errored=!0,doCallback(errCode));++completed>=mounts.length&&doCallback(null)}mounts.forEach((mount=>{if(!mount.type.syncfs)return done(null);mount.type.syncfs(mount,populate,done)}))},mount(type,opts,mountpoint){if("string"==typeof type)throw type;var node,root="/"===mountpoint,pseudo=!mountpoint;if(root&&FS.root)throw new FS.ErrnoError(10);if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:!1});if(mountpoint=lookup.path,node=lookup.node,FS.isMountpoint(node))throw new FS.ErrnoError(10);if(!FS.isDir(node.mode))throw new FS.ErrnoError(54)}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]},mountRoot=type.mount(mount);return mountRoot.mount=mount,mount.root=mountRoot,root?FS.root=mountRoot:node&&(node.mounted=mount,node.mount&&node.mount.mounts.push(mount)),mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:!1});if(!FS.isMountpoint(lookup.node))throw new FS.ErrnoError(28);var node=lookup.node,mount=node.mounted,mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((hash=>{for(var current=FS.nameTable[hash];current;){var next=current.name_next;mounts.includes(current.mount)&&FS.destroyNode(current),current=next}})),node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(-1!==idx),node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>parent.node_ops.lookup(parent,name),mknod(path,mode,dev){var parent=FS.lookupPath(path,{parent:!0}).node,name=PATH.basename(path);if(!name||"."===name||".."===name)throw new FS.ErrnoError(28);var errCode=FS.mayCreate(parent,name);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.mknod)throw new FS.ErrnoError(63);return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>(mode=void 0!==mode?mode:438,mode&=4095,mode|=32768,FS.mknod(path,mode,0)),mkdir:(path,mode)=>(mode=void 0!==mode?mode:511,mode&=1023,mode|=16384,FS.mknod(path,mode,0)),mkdirTree(path,mode){for(var dirs=path.split("/"),d="",i=0;i<dirs.length;++i)if(dirs[i]){d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(20!=e.errno)throw e}}},mkdev:(path,mode,dev)=>(void 0===dev&&(dev=mode,mode=438),mode|=8192,FS.mknod(path,mode,dev)),symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath))throw new FS.ErrnoError(44);var parent=FS.lookupPath(newpath,{parent:!0}).node;if(!parent)throw new FS.ErrnoError(44);var newname=PATH.basename(newpath),errCode=FS.mayCreate(parent,newname);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.symlink)throw new FS.ErrnoError(63);return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dir,new_dir,old_dirname=PATH.dirname(old_path),new_dirname=PATH.dirname(new_path),old_name=PATH.basename(old_path),new_name=PATH.basename(new_path);if(old_dir=FS.lookupPath(old_path,{parent:!0}).node,new_dir=FS.lookupPath(new_path,{parent:!0}).node,!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount)throw new FS.ErrnoError(75);var new_node,old_node=FS.lookupNode(old_dir,old_name),relative=PATH_FS.relative(old_path,new_dirname);if("."!==relative.charAt(0))throw new FS.ErrnoError(28);if("."!==(relative=PATH_FS.relative(new_path,old_dirname)).charAt(0))throw new FS.ErrnoError(55);try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node!==new_node){var isdir=FS.isDir(old_node.mode),errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode)throw new FS.ErrnoError(errCode);if(errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name))throw new FS.ErrnoError(errCode);if(!old_dir.node_ops.rename)throw new FS.ErrnoError(63);if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node))throw new FS.ErrnoError(10);if(new_dir!==old_dir&&(errCode=FS.nodePermissions(old_dir,"w")))throw new FS.ErrnoError(errCode);FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name),old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}}},rmdir(path){var parent=FS.lookupPath(path,{parent:!0}).node,name=PATH.basename(path),node=FS.lookupNode(parent,name),errCode=FS.mayDelete(parent,name,!0);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.rmdir)throw new FS.ErrnoError(63);if(FS.isMountpoint(node))throw new FS.ErrnoError(10);parent.node_ops.rmdir(parent,name),FS.destroyNode(node)},readdir(path){var node=FS.lookupPath(path,{follow:!0}).node;if(!node.node_ops.readdir)throw new FS.ErrnoError(54);return node.node_ops.readdir(node)},unlink(path){var parent=FS.lookupPath(path,{parent:!0}).node;if(!parent)throw new FS.ErrnoError(44);var name=PATH.basename(path),node=FS.lookupNode(parent,name),errCode=FS.mayDelete(parent,name,!1);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.unlink)throw new FS.ErrnoError(63);if(FS.isMountpoint(node))throw new FS.ErrnoError(10);parent.node_ops.unlink(parent,name),FS.destroyNode(node)},readlink(path){var link=FS.lookupPath(path).node;if(!link)throw new FS.ErrnoError(44);if(!link.node_ops.readlink)throw new FS.ErrnoError(28);return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat(path,dontFollow){var node=FS.lookupPath(path,{follow:!dontFollow}).node;if(!node)throw new FS.ErrnoError(44);if(!node.node_ops.getattr)throw new FS.ErrnoError(63);return node.node_ops.getattr(node)},lstat:path=>FS.stat(path,!0),chmod(path,mode,dontFollow){var node;if(!(node="string"==typeof path?FS.lookupPath(path,{follow:!dontFollow}).node:path).node_ops.setattr)throw new FS.ErrnoError(63);node.node_ops.setattr(node,{mode:4095&mode|-4096&node.mode,timestamp:Date.now()})},lchmod(path,mode){FS.chmod(path,mode,!0)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.chmod(stream.node,mode)},chown(path,uid,gid,dontFollow){var node;if(!(node="string"==typeof path?FS.lookupPath(path,{follow:!dontFollow}).node:path).node_ops.setattr)throw new FS.ErrnoError(63);node.node_ops.setattr(node,{timestamp:Date.now()})},lchown(path,uid,gid){FS.chown(path,uid,gid,!0)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.chown(stream.node,uid,gid)},truncate(path,len){if(len<0)throw new FS.ErrnoError(28);var node;if(!(node="string"==typeof path?FS.lookupPath(path,{follow:!0}).node:path).node_ops.setattr)throw new FS.ErrnoError(63);if(FS.isDir(node.mode))throw new FS.ErrnoError(31);if(!FS.isFile(node.mode))throw new FS.ErrnoError(28);var errCode=FS.nodePermissions(node,"w");if(errCode)throw new FS.ErrnoError(errCode);node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(!(2097155&stream.flags))throw new FS.ErrnoError(28);FS.truncate(stream.node,len)},utime(path,atime,mtime){var node=FS.lookupPath(path,{follow:!0}).node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open(path,flags,mode){if(""===path)throw new FS.ErrnoError(44);var node;if(mode=64&(flags="string"==typeof flags?(str=>{var flags={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[str];if(void 0===flags)throw new Error(`Unknown file open mode: ${str}`);return flags})(flags):flags)?4095&(mode=void 0===mode?438:mode)|32768:0,"object"==typeof path)node=path;else{path=PATH.normalize(path);try{node=FS.lookupPath(path,{follow:!(131072&flags)}).node}catch(e){}}var created=!1;if(64&flags)if(node){if(128&flags)throw new FS.ErrnoError(20)}else node=FS.mknod(path,mode,0),created=!0;if(!node)throw new FS.ErrnoError(44);if(FS.isChrdev(node.mode)&&(flags&=-513),65536&flags&&!FS.isDir(node.mode))throw new FS.ErrnoError(54);if(!created){var errCode=FS.mayOpen(node,flags);if(errCode)throw new FS.ErrnoError(errCode)}512&flags&&!created&&FS.truncate(node,0),flags&=-131713;var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:!0,position:0,stream_ops:node.stream_ops,ungotten:[],error:!1});return stream.stream_ops.open&&stream.stream_ops.open(stream),!Module.logReadFiles||1&flags||(FS.readFiles||(FS.readFiles={}),path in FS.readFiles||(FS.readFiles[path]=1)),stream},close(stream){if(FS.isClosed(stream))throw new FS.ErrnoError(8);stream.getdents&&(stream.getdents=null);try{stream.stream_ops.close&&stream.stream_ops.close(stream)}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>null===stream.fd,llseek(stream,offset,whence){if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(!stream.seekable||!stream.stream_ops.llseek)throw new FS.ErrnoError(70);if(0!=whence&&1!=whence&&2!=whence)throw new FS.ErrnoError(28);return stream.position=stream.stream_ops.llseek(stream,offset,whence),stream.ungotten=[],stream.position},read(stream,buffer,offset,length,position){if(assert(offset>=0),length<0||position<0)throw new FS.ErrnoError(28);if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(1==(2097155&stream.flags))throw new FS.ErrnoError(8);if(FS.isDir(stream.node.mode))throw new FS.ErrnoError(31);if(!stream.stream_ops.read)throw new FS.ErrnoError(28);var seeking=void 0!==position;if(seeking){if(!stream.seekable)throw new FS.ErrnoError(70)}else position=stream.position;var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);return seeking||(stream.position+=bytesRead),bytesRead},write(stream,buffer,offset,length,position,canOwn){if(assert(offset>=0),length<0||position<0)throw new FS.ErrnoError(28);if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(!(2097155&stream.flags))throw new FS.ErrnoError(8);if(FS.isDir(stream.node.mode))throw new FS.ErrnoError(31);if(!stream.stream_ops.write)throw new FS.ErrnoError(28);stream.seekable&&1024&stream.flags&&FS.llseek(stream,0,2);var seeking=void 0!==position;if(seeking){if(!stream.seekable)throw new FS.ErrnoError(70)}else position=stream.position;var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);return seeking||(stream.position+=bytesWritten),bytesWritten},allocate(stream,offset,length){if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(offset<0||length<=0)throw new FS.ErrnoError(28);if(!(2097155&stream.flags))throw new FS.ErrnoError(8);if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode))throw new FS.ErrnoError(43);if(!stream.stream_ops.allocate)throw new FS.ErrnoError(138);stream.stream_ops.allocate(stream,offset,length)},mmap(stream,length,position,prot,flags){if(2&prot&&!(2&flags)&&2!=(2097155&stream.flags))throw new FS.ErrnoError(2);if(1==(2097155&stream.flags))throw new FS.ErrnoError(2);if(!stream.stream_ops.mmap)throw new FS.ErrnoError(43);return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>(assert(offset>=0),stream.stream_ops.msync?stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags):0),ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl)throw new FS.ErrnoError(59);return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){if(opts.flags=opts.flags||0,opts.encoding=opts.encoding||"binary","utf8"!==opts.encoding&&"binary"!==opts.encoding)throw new Error(`Invalid encoding type "${opts.encoding}"`);var ret,stream=FS.open(path,opts.flags),length=FS.stat(path).size,buf=new Uint8Array(length);return FS.read(stream,buf,0,length,0),"utf8"===opts.encoding?ret=UTF8ArrayToString(buf,0):"binary"===opts.encoding&&(ret=buf),FS.close(stream),ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if("string"==typeof data){var buf=new Uint8Array(lengthBytesUTF8(data)+1),actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,void 0,opts.canOwn)}else{if(!ArrayBuffer.isView(data))throw new Error("Unsupported data type");FS.write(stream,data,0,data.byteLength,void 0,opts.canOwn)}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:!0});if(null===lookup.node)throw new FS.ErrnoError(44);if(!FS.isDir(lookup.node.mode))throw new FS.ErrnoError(54);var errCode=FS.nodePermissions(lookup.node,"x");if(errCode)throw new FS.ErrnoError(errCode);FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp"),FS.mkdir("/home"),FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev"),FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length}),FS.mkdev("/dev/null",FS.makedev(1,3)),TTY.register(FS.makedev(5,0),TTY.default_tty_ops),TTY.register(FS.makedev(6,0),TTY.default_tty1_ops),FS.mkdev("/dev/tty",FS.makedev(5,0)),FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0,randomByte=()=>(0===randomLeft&&(randomLeft=randomFill(randomBuffer).byteLength),randomBuffer[--randomLeft]);FS.createDevice("/dev","random",randomByte),FS.createDevice("/dev","urandom",randomByte),FS.mkdir("/dev/shm"),FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd"),FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);return node.node_ops={lookup(parent,name){var fd=+name,stream=FS.getStreamChecked(fd),ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};return ret.parent=ret,ret}},node}},{},"/proc/self/fd")},createStandardStreams(){Module.stdin?FS.createDevice("/dev","stdin",Module.stdin):FS.symlink("/dev/tty","/dev/stdin"),Module.stdout?FS.createDevice("/dev","stdout",null,Module.stdout):FS.symlink("/dev/tty","/dev/stdout"),Module.stderr?FS.createDevice("/dev","stderr",null,Module.stderr):FS.symlink("/dev/tty1","/dev/stderr");var stdin=FS.open("/dev/stdin",0),stdout=FS.open("/dev/stdout",1),stderr=FS.open("/dev/stderr",1);assert(0===stdin.fd,`invalid handle for stdin (${stdin.fd})`),assert(1===stdout.fd,`invalid handle for stdout (${stdout.fd})`),assert(2===stderr.fd,`invalid handle for stderr (${stderr.fd})`)},staticInit(){[44].forEach((code=>{FS.genericErrors[code]=new FS.ErrnoError(code),FS.genericErrors[code].stack="<generic error, no stack>"})),FS.nameTable=new Array(4096),FS.mount(MEMFS,{},"/"),FS.createDefaultDirectories(),FS.createDefaultDevices(),FS.createSpecialDirectories(),FS.filesystems={MEMFS:MEMFS}},init(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),FS.init.initialized=!0,Module.stdin=input||Module.stdin,Module.stdout=output||Module.stdout,Module.stderr=error||Module.stderr,FS.createStandardStreams()},quit(){FS.init.initialized=!1,_fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];stream&&FS.close(stream)}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);return ret.exists?ret.object:null},analyzePath(path,dontResolveLastLink){try{path=(lookup=FS.lookupPath(path,{follow:!dontResolveLastLink})).path}catch(e){}var ret={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:!0});ret.parentExists=!0,ret.parentPath=lookup.path,ret.parentObject=lookup.node,ret.name=PATH.basename(path),lookup=FS.lookupPath(path,{follow:!dontResolveLastLink}),ret.exists=!0,ret.path=lookup.path,ret.object=lookup.node,ret.name=lookup.node.name,ret.isRoot="/"===lookup.path}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent="string"==typeof parent?parent:FS.getPath(parent);for(var parts=path.split("/").reverse();parts.length;){var part=parts.pop();if(part){var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2("string"==typeof parent?parent:FS.getPath(parent),name),mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;parent&&(parent="string"==typeof parent?parent:FS.getPath(parent),path=name?PATH.join2(parent,name):parent);var mode=FS_getMode(canRead,canWrite),node=FS.create(path,mode);if(data){if("string"==typeof data){for(var arr=new Array(data.length),i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,146|mode);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn),FS.close(stream),FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2("string"==typeof parent?parent:FS.getPath(parent),name),mode=FS_getMode(!!input,!!output);FS.createDevice.major||(FS.createDevice.major=64);var dev=FS.makedev(FS.createDevice.major++,0);return FS.registerDevice(dev,{open(stream){stream.seekable=!1},close(stream){output?.buffer?.length&&output(10)},read(stream,buffer,offset,length,pos){for(var bytesRead=0,i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(void 0===result&&0===bytesRead)throw new FS.ErrnoError(6);if(null==result)break;bytesRead++,buffer[offset+i]=result}return bytesRead&&(stream.node.timestamp=Date.now()),bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++)try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}return length&&(stream.node.timestamp=Date.now()),i}}),FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");try{obj.contents=readBinary(obj.url),obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{constructor(){this.lengthKnown=!1,this.chunks=[]}get(idx){if(!(idx>this.length-1||idx<0)){var chunkOffset=idx%this.chunkSize,chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;if(xhr.open("HEAD",url,!1),xhr.send(null),!(xhr.status>=200&&xhr.status<300||304===xhr.status))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var header,datalength=Number(xhr.getResponseHeader("Content-length")),hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&"bytes"===header,usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&"gzip"===header,chunkSize=1048576;hasByteServing||(chunkSize=datalength);var lazyArray=this;lazyArray.setDataGetter((chunkNum=>{var start=chunkNum*chunkSize,end=(chunkNum+1)*chunkSize-1;if(end=Math.min(end,datalength-1),void 0===lazyArray.chunks[chunkNum]&&(lazyArray.chunks[chunkNum]=((from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;if(xhr.open("GET",url,!1),datalength!==chunkSize&&xhr.setRequestHeader("Range","bytes="+from+"-"+to),xhr.responseType="arraybuffer",xhr.overrideMimeType&&xhr.overrideMimeType("text/plain; charset=x-user-defined"),xhr.send(null),!(xhr.status>=200&&xhr.status<300||304===xhr.status))throw new Error("Couldn't load "+url+". Status: "+xhr.status);return void 0!==xhr.response?new Uint8Array(xhr.response||[]):intArrayFromString(xhr.responseText||"",!0)})(start,end)),void 0===lazyArray.chunks[chunkNum])throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]})),!usesGzip&&datalength||(chunkSize=datalength=1,datalength=this.getter(0).length,chunkSize=datalength,out("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=datalength,this._chunkSize=chunkSize,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if("undefined"!=typeof XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var properties={isDevice:!1,contents:new LazyUint8Array}}else properties={isDevice:!1,url:url};var node=FS.createFile(parent,name,properties,canRead,canWrite);properties.contents?node.contents=properties.contents:properties.url&&(node.contents=null,node.url=properties.url),Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(assert(size>=0),contents.slice)for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i];else for(i=0;i<size;i++)buffer[offset+i]=contents.get(position+i);return size}return Object.keys(node.stream_ops).forEach((key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>(FS.forceLoadFile(node),fn(...args))})),stream_ops.read=(stream,buffer,offset,length,position)=>(FS.forceLoadFile(node),writeChunks(stream,buffer,offset,length,position)),stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc();if(!ptr)throw new FS.ErrnoError(48);return writeChunks(stream,HEAP8,ptr,length,position),{ptr:ptr,allocated:!0}},node.stream_ops=stream_ops,node},absolutePath(){abort("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder(){abort("FS.createFolder has been removed; use FS.mkdir instead")},createLink(){abort("FS.createLink has been removed; use FS.symlink instead")},joinPath(){abort("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc(){abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath(){abort("FS.standardizePath has been removed; use PATH.normalize instead")}},SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path))return path;var dir;if(dir=-100===dirfd?FS.cwd():SYSCALLS.getStreamFromFD(dirfd).path,0==path.length){if(!allowEmpty)throw new FS.ErrnoError(44);return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev,HEAP32[buf+4>>2]=stat.mode,HEAPU32[buf+8>>2]=stat.nlink,HEAP32[buf+12>>2]=stat.uid,HEAP32[buf+16>>2]=stat.gid,HEAP32[buf+20>>2]=stat.rdev,tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1],HEAP32[buf+32>>2]=4096,HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime(),mtime=stat.mtime.getTime(),ctime=stat.ctime.getTime();return tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1],HEAPU32[buf+48>>2]=atime%1e3*1e3,tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1],HEAPU32[buf+64>>2]=mtime%1e3*1e3,tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1],HEAPU32[buf+80>>2]=ctime%1e3*1e3,tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1],0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);if(2&flags)return 0;var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD:fd=>FS.getStreamChecked(fd),varargs:void 0,getStr:ptr=>UTF8ToString(ptr)},stringToUTF8=(str,outPtr,maxBytesToWrite)=>(assert("number"==typeof maxBytesToWrite,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)),handleException=e=>{if(e instanceof ExitStatus||"unwind"==e)return EXITSTATUS;checkStackCookie(),e instanceof WebAssembly.RuntimeError&&_emscripten_stack_get_current()<=0&&err("Stack overflow detected.  You can try increasing -sSTACK_SIZE (currently set to 65536)"),quit_(1,e)},runtimeKeepaliveCounter=0,keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0,_exit=(status,implicit)=>{if(EXITSTATUS=status,function(){var oldOut=out,oldErr=err,has=!1;out=err=x=>{has=!0};try{_fflush(0),["stdout","stderr"].forEach((function(name){var info=FS.analyzePath("/dev/"+name);if(info){var rdev=info.object.rdev,tty=TTY.ttys[rdev];tty?.output?.length&&(has=!0)}}))}catch(e){}out=oldOut,err=oldErr,has&&warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.")}(),keepRuntimeAlive()&&!implicit){var msg=`program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`;readyPromiseReject(msg),err(msg)}var code;EXITSTATUS=code=status,keepRuntimeAlive()||(Module.onExit?.(code),ABORT=!0),quit_(code,new ExitStatus(code))},callUserCallback=func=>{if(ABORT)err("user callback triggered after runtime exited or application aborted.  Ignoring.");else try{func(),(()=>{if(!keepRuntimeAlive())try{_exit(EXITSTATUS)}catch(e){handleException(e)}})()}catch(e){handleException(e)}},_emscripten_scan_registers=func=>Asyncify.handleSleep((wakeUp=>{((func,timeout)=>{setTimeout((()=>{callUserCallback(func)}),timeout)})((()=>{var stackBegin=Asyncify.currData+12,stackEnd=HEAPU32[Asyncify.currData>>2];dynCall_vii(func,stackBegin,stackEnd),wakeUp()}),0)}));_emscripten_scan_registers.isAsync=!0;var _fd_sync=function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return Asyncify.handleSleep((wakeUp=>{var mount=stream.node.mount;mount.type.syncfs?mount.type.syncfs(mount,!1,(err=>{wakeUp(err?29:0)})):wakeUp(0)}))}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}};_fd_sync.isAsync=!0;var runAndAbortIfError=func=>{try{return func()}catch(e){abort(e)}},Asyncify={instrumentWasmImports(imports){var importPattern=/^(invoke_.*|__asyncjs__.*)$/;for(let[x,original]of Object.entries(imports))if("function"==typeof original){let isAsyncifyImport=original.isAsync||importPattern.test(x);imports[x]=(...args)=>{var originalAsyncifyState=Asyncify.state;try{return original(...args)}finally{var changedToDisabled=originalAsyncifyState===Asyncify.State.Normal&&Asyncify.state===Asyncify.State.Disabled,ignoredInvoke=x.startsWith("invoke_")&&!0;if(Asyncify.state!==originalAsyncifyState&&!isAsyncifyImport&&!changedToDisabled&&!ignoredInvoke)throw new Error(`import ${x} was not in ASYNCIFY_IMPORTS, but changed the state`)}}}},instrumentWasmExports(exports){var ret={};for(let[x,original]of Object.entries(exports))ret[x]="function"==typeof original?(...args)=>{Asyncify.exportCallStack.push(x);try{return original(...args)}finally{ABORT||(assert(Asyncify.exportCallStack.pop()===x),Asyncify.maybeStopUnwind())}}:original;return ret},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId(funcName){var id=Asyncify.callStackNameToId[funcName];return void 0===id&&(id=Asyncify.callStackId++,Asyncify.callStackNameToId[funcName]=id,Asyncify.callStackIdToName[id]=funcName),id},maybeStopUnwind(){Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&0===Asyncify.exportCallStack.length&&(Asyncify.state=Asyncify.State.Normal,runAndAbortIfError(_asyncify_stop_unwind),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:()=>(assert(Asyncify.currData,"Tried to wait for an async operation when none is in progress."),assert(!Asyncify.asyncPromiseHandlers,"Cannot have multiple async operations in flight at once"),new Promise(((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}}))),allocateData(){var ptr=_malloc(12+Asyncify.StackSize);return Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize),Asyncify.setDataRewindFunc(ptr),ptr},setDataHeader(ptr,stack,stackSize){HEAPU32[ptr>>2]=stack,HEAPU32[ptr+4>>2]=stack+stackSize},setDataRewindFunc(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0],rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFuncName(ptr){var id=HEAP32[ptr+8>>2];return Asyncify.callStackIdToName[id]},getDataRewindFunc:name=>wasmExports[name],doRewind(ptr){var name=Asyncify.getDataRewindFuncName(ptr);return Asyncify.getDataRewindFunc(name)()},handleSleep(startAsync){if(assert(Asyncify.state!==Asyncify.State.Disabled,"Asyncify cannot be done during or after the runtime exits"),!ABORT){if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=!1,reachedAfterCallback=!1;startAsync(((handleSleepReturnValue=0)=>{if(assert(!handleSleepReturnValue||"number"==typeof handleSleepReturnValue||"boolean"==typeof handleSleepReturnValue),!ABORT&&(Asyncify.handleSleepReturnValue=handleSleepReturnValue,reachedCallback=!0,reachedAfterCallback)){assert(!Asyncify.exportCallStack.length,"Waking up (starting to rewind) must be done from JS, without compiled code on the stack."),Asyncify.state=Asyncify.State.Rewinding,runAndAbortIfError((()=>_asyncify_start_rewind(Asyncify.currData))),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var asyncWasmReturnValue,isError=!1;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err,isError=!0}var handled=!1;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;asyncPromiseHandlers&&(Asyncify.asyncPromiseHandlers=null,(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue),handled=!0)}if(isError&&!handled)throw asyncWasmReturnValue}})),reachedAfterCallback=!0,reachedCallback||(Asyncify.state=Asyncify.State.Unwinding,Asyncify.currData=Asyncify.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),runAndAbortIfError((()=>_asyncify_start_unwind(Asyncify.currData))))}else Asyncify.state===Asyncify.State.Rewinding?(Asyncify.state=Asyncify.State.Normal,runAndAbortIfError(_asyncify_stop_rewind),_free(Asyncify.currData),Asyncify.currData=null,Asyncify.sleepCallbacks.forEach(callUserCallback)):abort(`invalid state: ${Asyncify.state}`);return Asyncify.handleSleepReturnValue}},handleAsync:startAsync=>Asyncify.handleSleep((wakeUp=>{startAsync().then(wakeUp)}))},stackAlloc=sz=>__emscripten_stack_alloc(sz),ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;return null!=str&&0!==str&&(ret=(str=>{var size=lengthBytesUTF8(str)+1,ret=stackAlloc(size);return stringToUTF8(str,ret,size),ret})(str)),ret},array:arr=>{var array,buffer,ret=stackAlloc(arr.length);return buffer=ret,assert((array=arr).length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),HEAP8.set(array,buffer),ret}},func=(ident=>{var func=Module["_"+ident];return assert(func,"Cannot call unknown function "+ident+", make sure it is exported"),func})(ident),cArgs=[],stack=0;if(assert("array"!==returnType,'Return type should not be "array".'),args)for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];converter?(0===stack&&(stack=stackSave()),cArgs[i]=converter(args[i])):cArgs[i]=args[i]}var previousAsync=Asyncify.currData,ret=func(...cArgs);function onDone(ret){return assert(runtimeKeepaliveCounter>0),runtimeKeepaliveCounter-=1,0!==stack&&stackRestore(stack),function(ret){return"string"===returnType?UTF8ToString(ret):"boolean"===returnType?Boolean(ret):ret}(ret)}var asyncMode=opts?.async;return runtimeKeepaliveCounter+=1,Asyncify.currData!=previousAsync?(assert(!(previousAsync&&Asyncify.currData),"We cannot start an async operation when one is already flight"),assert(!(previousAsync&&!Asyncify.currData),"We cannot stop an async operation in flight"),assert(asyncMode,"The call to "+ident+" is running asynchronously. If this was intended, add the async option to the ccall/cwrap call."),Asyncify.whenDone().then(onDone)):(ret=onDone(ret),asyncMode?Promise.resolve(ret):ret)};FS.createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent,dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.(),dontCreateFile||((parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)})(parent,name,byteArray,canRead,canWrite,canOwn),onload?.(),removeRunDependency(dep)}((byteArray,fullname,finish,onerror)=>{"undefined"!=typeof Browser&&Browser.init();var handled=!1;return preloadPlugins.forEach((plugin=>{handled||plugin.canHandle(fullname)&&(plugin.handle(byteArray,fullname,finish,onerror),handled=!0)})),handled})(byteArray,fullname,finish,(()=>{onerror?.(),removeRunDependency(dep)}))||finish(byteArray)}addRunDependency(dep),"string"==typeof url?((url,onload,onerror,noRunDep)=>{var dep=noRunDep?"":getUniqueRunDependency(`al ${url}`);readAsync(url).then((arrayBuffer=>{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`),onload(new Uint8Array(arrayBuffer)),dep&&removeRunDependency(dep)}),(err=>{if(!onerror)throw`Loading data file "${url}" failed.`;onerror()})),dep&&addRunDependency(dep)})(url,processData,onerror):processData(url)},FS.staticInit(),void 0===globalThis.crypto&&(globalThis.crypto=require("crypto"));var calledRun,MP_JS_EPOCH=Date.now(),wasmImports={__syscall_chdir:function(path){try{return path=SYSCALLS.getStr(path),FS.chdir(path),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_fstat64:function(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_getcwd:function(buf,size){try{if(0===size)return-28;var cwd=FS.cwd(),cwdLengthInBytes=lengthBytesUTF8(cwd)+1;return size<cwdLengthInBytes?-68:(stringToUTF8(cwd,buf,size),cwdLengthInBytes)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_getdents64:function(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);stream.getdents||=FS.readdir(stream.path);for(var pos=0,off=FS.llseek(stream,0,1),idx=Math.floor(off/280);idx<stream.getdents.length&&pos+280<=count;){var id,type,name=stream.getdents[idx];if("."===name)id=stream.node.id,type=4;else if(".."===name)id=FS.lookupPath(stream.path,{parent:!0}).node.id,type=4;else{var child=FS.lookupNode(stream.node,name);id=child.id,type=FS.isChrdev(child.mode)?2:FS.isDir(child.mode)?4:FS.isLink(child.mode)?10:8}assert(id),tempI64=[id>>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1],tempI64=[280*(idx+1)>>>0,(tempDouble=280*(idx+1),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1],HEAP16[dirp+pos+16>>1]=280,HEAP8[dirp+pos+18]=type,stringToUTF8(name,dirp+pos+19,256),pos+=280,idx+=1}return FS.llseek(stream,280*idx,0),pos}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_lstat64:function(path,buf){try{return path=SYSCALLS.getStr(path),SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_mkdirat:function(dirfd,path,mode){try{return path=SYSCALLS.getStr(path),path=SYSCALLS.calculateAt(dirfd,path),"/"===(path=PATH.normalize(path))[path.length-1]&&(path=path.substr(0,path.length-1)),FS.mkdir(path,mode,0),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_newfstatat:function(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=256&flags,allowEmpty=4096&flags;return assert(!(flags&=-6401),`unknown flags in __syscall_newfstatat: ${flags}`),path=SYSCALLS.calculateAt(dirfd,path,allowEmpty),SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_openat:function(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path),path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?function(){assert(null!=SYSCALLS.varargs);var ret=HEAP32[+SYSCALLS.varargs>>2];return SYSCALLS.varargs+=4,ret}():0;return FS.open(path,flags,mode).fd}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_poll:function(fds,nfds,timeout){try{for(var nonzero=0,i=0;i<nfds;i++){var pollfd=fds+8*i,fd=HEAP32[pollfd>>2],events=HEAP16[pollfd+4>>1],mask=32,stream=FS.getStream(fd);stream&&(mask=SYSCALLS.DEFAULT_POLLMASK,stream.stream_ops.poll&&(mask=stream.stream_ops.poll(stream,-1))),(mask&=24|events)&&nonzero++,HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_renameat:function(olddirfd,oldpath,newdirfd,newpath){try{return oldpath=SYSCALLS.getStr(oldpath),newpath=SYSCALLS.getStr(newpath),oldpath=SYSCALLS.calculateAt(olddirfd,oldpath),newpath=SYSCALLS.calculateAt(newdirfd,newpath),FS.rename(oldpath,newpath),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_rmdir:function(path){try{return path=SYSCALLS.getStr(path),FS.rmdir(path),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_stat64:function(path,buf){try{return path=SYSCALLS.getStr(path),SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_statfs64:function(path,size,buf){try{return path=SYSCALLS.getStr(path),assert(64===size),HEAP32[buf+4>>2]=4096,HEAP32[buf+40>>2]=4096,HEAP32[buf+8>>2]=1e6,HEAP32[buf+12>>2]=5e5,HEAP32[buf+16>>2]=5e5,HEAP32[buf+20>>2]=FS.nextInode,HEAP32[buf+24>>2]=1e6,HEAP32[buf+28>>2]=42,HEAP32[buf+44>>2]=2,HEAP32[buf+36>>2]=255,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_unlinkat:function(dirfd,path,flags){try{return path=SYSCALLS.getStr(path),path=SYSCALLS.calculateAt(dirfd,path),0===flags?FS.unlink(path):512===flags?FS.rmdir(path):abort("Invalid flags passed to unlinkat"),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},_emscripten_memcpy_js:(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num),_emscripten_throw_longjmp:()=>{throw 1/0},call0:function(f_ref,out){proxy_convert_js_to_mp_obj_jsside((0,proxy_js_ref[f_ref])(),out)},call0_kwarg:function(f_ref,n_kw,key,value,out){const f=proxy_js_ref[f_ref],a={};for(let i=0;i<n_kw;++i){const k=UTF8ToString(getValue(key+4*i,"i32")),v=proxy_convert_mp_to_js_obj_jsside(value+3*i*4);a[k]=v}proxy_convert_js_to_mp_obj_jsside(f(a),out)},call1:function(f_ref,a0,out){const a0_js=proxy_convert_mp_to_js_obj_jsside(a0);proxy_convert_js_to_mp_obj_jsside((0,proxy_js_ref[f_ref])(a0_js),out)},call1_kwarg:function(f_ref,arg0,n_kw,key,value,out){const f=proxy_js_ref[f_ref],a0=proxy_convert_mp_to_js_obj_jsside(arg0),a={};for(let i=0;i<n_kw;++i){const k=UTF8ToString(getValue(key+4*i,"i32")),v=proxy_convert_mp_to_js_obj_jsside(value+3*i*4);a[k]=v}proxy_convert_js_to_mp_obj_jsside(f(a0,a),out)},call2:function(f_ref,a0,a1,out){const a0_js=proxy_convert_mp_to_js_obj_jsside(a0),a1_js=proxy_convert_mp_to_js_obj_jsside(a1);proxy_convert_js_to_mp_obj_jsside((0,proxy_js_ref[f_ref])(a0_js,a1_js),out)},calln:function(f_ref,n_args,value,out){const f=proxy_js_ref[f_ref],a=[];for(let i=0;i<n_args;++i){const v=proxy_convert_mp_to_js_obj_jsside(value+3*i*4);a.push(v)}proxy_convert_js_to_mp_obj_jsside(f(...a),out)},create_promise:function(out_set,out_promise){const out_set_js=proxy_convert_mp_to_js_obj_jsside(out_set);proxy_convert_js_to_mp_obj_jsside(new Promise(out_set_js),out_promise)},emscripten_resize_heap:requestedSize=>{HEAPU8.length,(requestedSize=>{abort(`Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`)})(requestedSize>>>=0)},emscripten_scan_registers:_emscripten_scan_registers,fd_close:function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return FS.close(stream),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},fd_read:function(fd,iov,iovcnt,pnum){try{var num=((stream,iov,iovcnt,offset)=>{for(var ret=0,i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2],len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;if(ret+=curr,curr<len)break;void 0!==offset&&(offset+=curr)}return ret})(SYSCALLS.getStreamFromFD(fd),iov,iovcnt);return HEAPU32[pnum>>2]=num,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},fd_seek:function(fd,offset_low,offset_high,whence,newOffset){var lo,hi,offset=(hi=offset_high,assert((lo=offset_low)==lo>>>0||lo==(0|lo)),assert(hi===(0|hi)),hi+2097152>>>0<4194305-!!lo?(lo>>>0)+4294967296*hi:NaN);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);return FS.llseek(stream,offset,whence),tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1],stream.getdents&&0===offset&&0===whence&&(stream.getdents=null),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},fd_sync:_fd_sync,fd_write:function(fd,iov,iovcnt,pnum){try{var num=((stream,iov,iovcnt,offset)=>{for(var ret=0,i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2],len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr,void 0!==offset&&(offset+=curr)}return ret})(SYSCALLS.getStreamFromFD(fd),iov,iovcnt);return HEAPU32[pnum>>2]=num,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},has_attr:function(jsref,str){const base=proxy_js_ref[jsref];return UTF8ToString(str)in base},invoke_i:function(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_ii:function(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_iii:function(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_iiii:function(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_iiiii:function(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_iiiiii:function(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_v:function(index){var sp=stackSave();try{dynCall_v(index)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_vi:function(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_vii:function(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_viii:function(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_viiii:function(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},js_get_error_info:function(jsref,out_name,out_message){const error=proxy_js_ref[jsref];proxy_convert_js_to_mp_obj_jsside(error.name,out_name),proxy_convert_js_to_mp_obj_jsside(error.message,out_message)},js_get_iter:function(f_ref,out){proxy_convert_js_to_mp_obj_jsside(proxy_js_ref[f_ref][Symbol.iterator](),out)},js_get_proxy_js_ref_info:function(out){let used=0;for(const elem of proxy_js_ref)void 0!==elem&&++used;Module.setValue(out,proxy_js_ref.length,"i32"),Module.setValue(out+4,used,"i32")},js_iter_next:function(f_ref,out){const ret=proxy_js_ref[f_ref].next();return!ret.done&&(proxy_convert_js_to_mp_obj_jsside(ret.value,out),!0)},js_reflect_construct:function(f_ref,n_args,args,out){const f=proxy_js_ref[f_ref],as=[];for(let i=0;i<n_args;++i)as.push(proxy_convert_mp_to_js_obj_jsside(args+3*i*4));proxy_convert_js_to_mp_obj_jsside(Reflect.construct(f,as),out)},js_subscr_load:function(f_ref,index_ref,out){const target=proxy_js_ref[f_ref],index=function(target,index_in){let index=index_in;if("number"==typeof index&&(index<0&&(index+=target.length),index<0||index>=target.length))throw new PythonError("IndexError","index out of range");return index}(target,proxy_convert_mp_to_js_obj_jsside(index_ref));proxy_convert_js_to_mp_obj_jsside(target[index],out)},js_subscr_store:function(f_ref,idx,value){proxy_js_ref[f_ref][proxy_convert_mp_to_js_obj_jsside(idx)]=proxy_convert_mp_to_js_obj_jsside(value)},js_then_continue:function(jsref,py_resume,resolve,reject,out){const py_resume_js=proxy_convert_mp_to_js_obj_jsside(py_resume),resolve_js=proxy_convert_mp_to_js_obj_jsside(resolve),reject_js=proxy_convert_mp_to_js_obj_jsside(reject);proxy_convert_js_to_mp_obj_jsside(proxy_js_ref[jsref].then((result=>{py_resume_js(result,null,resolve_js,reject_js)}),(reason=>{py_resume_js(null,reason,resolve_js,reject_js)})),out)},js_then_reject:function(ret_value,reject){let ret_value_js;try{ret_value_js=proxy_convert_mp_to_js_obj_jsside(ret_value)}catch(error){ret_value_js=error}proxy_convert_mp_to_js_obj_jsside(reject)(ret_value_js)},js_then_resolve:function(ret_value,resolve){const ret_value_js=proxy_convert_mp_to_js_obj_jsside(ret_value);proxy_convert_mp_to_js_obj_jsside(resolve)(ret_value_js)},lookup_attr:function(jsref,str,out){const base=proxy_js_ref[jsref],attr=UTF8ToString(str);let value=base[attr];return(void 0!==value||attr in base)&&("function"==typeof value&&base!==globalThis&&("_ref"in value||(value=value.bind(base))),proxy_convert_js_to_mp_obj_jsside(value,out),!0)},mp_js_hook:()=>{if(ENVIRONMENT_IS_NODE){const mp_interrupt_char=Module.ccall("mp_hal_get_interrupt_char","number",["number"],["null"]),fs=require("fs"),buf=Buffer.alloc(1);try{fs.readSync(process.stdin.fd,buf,0,1)>0&&(buf[0]===mp_interrupt_char?Module.ccall("mp_sched_keyboard_interrupt","null",["null"],["null"]):process.stdout.write(String.fromCharCode(buf[0])))}catch(e){if("EAGAIN"!==e.code)throw e}}},mp_js_random_u32:()=>globalThis.crypto.getRandomValues(new Uint32Array(1))[0],mp_js_ticks_ms:()=>Date.now()-MP_JS_EPOCH,mp_js_time_ms:()=>Date.now(),proxy_convert_mp_to_js_then_js_to_js_then_js_to_mp_obj_jsside:function(out){const ret=proxy_convert_mp_to_js_obj_jsside(out);proxy_convert_js_to_mp_obj_jsside(PyProxy.toJs(ret),out)},proxy_convert_mp_to_js_then_js_to_mp_obj_jsside:function(out){proxy_convert_js_to_mp_obj_jsside_force_double_proxy(proxy_convert_mp_to_js_obj_jsside(out),out)},proxy_js_free_obj:function(js_ref){js_ref>=PROXY_JS_REF_NUM_STATIC&&(proxy_js_ref[js_ref]=void 0,js_ref<proxy_js_ref_next&&(proxy_js_ref_next=js_ref))},store_attr:function(jsref,attr_ptr,value_ref){const attr=UTF8ToString(attr_ptr),value=proxy_convert_mp_to_js_obj_jsside(value_ref);proxy_js_ref[jsref][attr]=value}},wasmExports=function(){var info=(Asyncify.instrumentWasmImports(wasmImports),{env:wasmImports,wasi_snapshot_preview1:wasmImports});function receiveInstance(instance,module){var b,cb;return wasmExports=instance.exports,wasmExports=Asyncify.instrumentWasmExports(wasmExports),assert(wasmMemory=wasmExports.memory,"memory not found in wasm exports"),b=wasmMemory.buffer,Module.HEAP8=HEAP8=new Int8Array(b),Module.HEAP16=HEAP16=new Int16Array(b),Module.HEAPU8=HEAPU8=new Uint8Array(b),Module.HEAPU16=new Uint16Array(b),Module.HEAP32=HEAP32=new Int32Array(b),Module.HEAPU32=HEAPU32=new Uint32Array(b),Module.HEAPF32=HEAPF32=new Float32Array(b),Module.HEAPF64=HEAPF64=new Float64Array(b),assert(wasmExports.__indirect_function_table,"table not found in wasm exports"),cb=wasmExports.__wasm_call_ctors,__ATINIT__.unshift(cb),removeRunDependency("wasm-instantiate"),wasmExports}addRunDependency("wasm-instantiate");var binary,binaryFile,imports,callback,trueModule=Module;if(Module.instantiateWasm)try{return Module.instantiateWasm(info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`),readyPromiseReject(e)}return wasmBinaryFile||(wasmBinaryFile=findWasmBinary()),(binary=wasmBinary,binaryFile=wasmBinaryFile,imports=info,callback=function(result){assert(Module===trueModule,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),trueModule=null,receiveInstance(result.instance)},binary||"function"!=typeof WebAssembly.instantiateStreaming||isDataURI(binaryFile)||isFileURI(binaryFile)||ENVIRONMENT_IS_NODE||"function"!=typeof fetch?instantiateArrayBuffer(binaryFile,imports,callback):fetch(binaryFile,{credentials:"same-origin"}).then((response=>WebAssembly.instantiateStreaming(response,imports).then(callback,(function(reason){return err(`wasm streaming compile failed: ${reason}`),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(binaryFile,imports,callback)}))))).catch(readyPromiseReject),{}}(),_malloc=(createExportWrapper("__wasm_call_ctors",0),Module._mp_sched_keyboard_interrupt=createExportWrapper("mp_sched_keyboard_interrupt",0),Module._mp_js_init=createExportWrapper("mp_js_init",2),Module._malloc=createExportWrapper("malloc",1)),_free=(Module._mp_js_register_js_module=createExportWrapper("mp_js_register_js_module",2),Module._mp_js_do_import=createExportWrapper("mp_js_do_import",2),Module._proxy_convert_mp_to_js_obj_cside=createExportWrapper("proxy_convert_mp_to_js_obj_cside",2),Module._mp_js_do_exec=createExportWrapper("mp_js_do_exec",3),Module._mp_js_do_exec_async=createExportWrapper("mp_js_do_exec_async",3),Module._mp_js_repl_init=createExportWrapper("mp_js_repl_init",0),Module._mp_js_repl_process_char=createExportWrapper("mp_js_repl_process_char",1),Module._mp_hal_get_interrupt_char=createExportWrapper("mp_hal_get_interrupt_char",0),Module._proxy_c_init=createExportWrapper("proxy_c_init",0),Module._proxy_c_free_obj=createExportWrapper("proxy_c_free_obj",1),Module._free=createExportWrapper("free",1)),_emscripten_stack_get_current=(Module._proxy_c_to_js_call=createExportWrapper("proxy_c_to_js_call",4),Module._proxy_c_to_js_dir=createExportWrapper("proxy_c_to_js_dir",2),Module._proxy_c_to_js_has_attr=createExportWrapper("proxy_c_to_js_has_attr",2),Module._proxy_c_to_js_lookup_attr=createExportWrapper("proxy_c_to_js_lookup_attr",3),Module._proxy_c_to_js_store_attr=createExportWrapper("proxy_c_to_js_store_attr",3),Module._proxy_c_to_js_delete_attr=createExportWrapper("proxy_c_to_js_delete_attr",2),Module._proxy_c_to_js_get_type=createExportWrapper("proxy_c_to_js_get_type",1),Module._proxy_c_to_js_get_array=createExportWrapper("proxy_c_to_js_get_array",2),Module._proxy_c_to_js_get_dict=createExportWrapper("proxy_c_to_js_get_dict",2),Module._proxy_c_to_js_get_iter=createExportWrapper("proxy_c_to_js_get_iter",1),Module._proxy_c_to_js_iternext=createExportWrapper("proxy_c_to_js_iternext",2),Module._proxy_c_to_js_resume=createExportWrapper("proxy_c_to_js_resume",2),()=>(_emscripten_stack_get_current=wasmExports.emscripten_stack_get_current)()),_fflush=createExportWrapper("fflush",1),_strerror=createExportWrapper("strerror",1),_setThrew=createExportWrapper("setThrew",2),_emscripten_stack_init=()=>(_emscripten_stack_init=wasmExports.emscripten_stack_init)(),_emscripten_stack_get_end=()=>(_emscripten_stack_get_end=wasmExports.emscripten_stack_get_end)(),__emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports._emscripten_stack_restore)(a0),__emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports._emscripten_stack_alloc)(a0),dynCall_viii=Module.dynCall_viii=createExportWrapper("dynCall_viii",4),dynCall_vi=Module.dynCall_vi=createExportWrapper("dynCall_vi",2),dynCall_ii=Module.dynCall_ii=createExportWrapper("dynCall_ii",2),dynCall_vii=Module.dynCall_vii=createExportWrapper("dynCall_vii",3),dynCall_iii=Module.dynCall_iii=createExportWrapper("dynCall_iii",3),dynCall_viiii=Module.dynCall_viiii=createExportWrapper("dynCall_viiii",5),dynCall_iiii=Module.dynCall_iiii=createExportWrapper("dynCall_iiii",4),dynCall_iiiii=Module.dynCall_iiiii=createExportWrapper("dynCall_iiiii",5),dynCall_v=Module.dynCall_v=createExportWrapper("dynCall_v",1),dynCall_i=Module.dynCall_i=createExportWrapper("dynCall_i",1),dynCall_iiiiii=(Module.dynCall_dd=createExportWrapper("dynCall_dd",2),Module.dynCall_ddd=createExportWrapper("dynCall_ddd",3),Module.dynCall_viiiiii=createExportWrapper("dynCall_viiiiii",7),Module.dynCall_iiiiii=createExportWrapper("dynCall_iiiiii",6)),_asyncify_start_unwind=(Module.dynCall_iidiiii=createExportWrapper("dynCall_iidiiii",7),createExportWrapper("asyncify_start_unwind",1)),_asyncify_stop_unwind=createExportWrapper("asyncify_stop_unwind",0),_asyncify_start_rewind=createExportWrapper("asyncify_start_rewind",1),_asyncify_stop_rewind=createExportWrapper("asyncify_stop_rewind",0);function stackCheckInit(){var max;_emscripten_stack_init(),assert(!(3&(max=_emscripten_stack_get_end()))),0==max&&(max+=4),HEAPU32[max>>2]=34821223,HEAPU32[max+4>>2]=2310721022,HEAPU32[0]=1668509029}function run(){function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(assert(!runtimeInitialized),runtimeInitialized=!0,checkStackCookie(),Module.noFSInit||FS.init.initialized||FS.init(),FS.ignorePermissions=!1,TTY.init(),callRuntimeCallbacks(__ATINIT__),readyPromiseResolve(Module),Module.onRuntimeInitialized?.(),assert(!Module._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(checkStackCookie(),Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)cb=Module.postRun.shift(),__ATPOSTRUN__.unshift(cb);var cb;callRuntimeCallbacks(__ATPOSTRUN__)}()))}runDependencies>0||(stackCheckInit(),function(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)cb=Module.preRun.shift(),__ATPRERUN__.unshift(cb);var cb;callRuntimeCallbacks(__ATPRERUN__)}(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),doRun()}),1)):doRun(),checkStackCookie()))}if(Module.ccall=ccall,Module.cwrap=(ident,returnType,argTypes,opts)=>(...args)=>ccall(ident,returnType,argTypes,args,opts),Module.setValue=function(ptr,value,type="i8"){switch(type.endsWith("*")&&(type="*"),type){case"i1":case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}},Module.getValue=getValue,Module.PATH=PATH,Module.PATH_FS=PATH_FS,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8,Module.FS=FS,["writeI53ToI64","writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","readI53FromI64","readI53FromU64","convertI32PairToI53","convertU32PairToI53","getTempRet0","setTempRet0","growMemory","isLeapYear","ydayFromDate","arraySum","addDays","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","emscriptenLog","readEmAsmArgs","jstoi_q","getExecutableName","listenOnce","autoResumeAudioContext","dynCallLegacy","getDynCaller","dynCall","asmjsMangle","HandleAllocator","getNativeTypeSize","STACK_SIZE","STACK_ALIGN","POINTER_SIZE","ASSERTIONS","uleb128Encode","generateFuncType","convertJsFunctionToWasm","getEmptyTableSlot","updateTableMap","getFunctionAddress","addFunction","removeFunction","reallyNegative","unSign","strLen","reSign","formatString","intArrayToString","AsciiToString","stringToAscii","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","stringToNewUTF8","registerKeyEventCallback","maybeCStringToJsString","findEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","hideEverythingExceptGivenElement","restoreHiddenElements","setLetterbox","softFullscreenResizeWebGLRenderTarget","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","registerPointerlockErrorEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","fillBatteryEventData","battery","registerBatteryEventCallback","setCanvasElementSize","getCanvasElementSize","jsStackTrace","getCallstack","convertPCtoSourceLocation","getEnvStrings","checkWasiClock","wasiRightsToMuslOFlags","wasiOFlagsToMuslOFlags","createDyncallWrapper","setImmediateWrapped","clearImmediateWrapped","polyfillSetImmediate","getPromise","makePromise","idsToPromises","makePromiseCallback","ExceptionInfo","findMatchingCatch","Browser_asyncPrepareDataCounter","setMainLoop","getSocketFromFD","getSocketAddress","FS_unlink","FS_mkdirTree","_setNetworkCallback","heapObjectForWebGLType","toTypedArrayIndex","webgl_enable_ANGLE_instanced_arrays","webgl_enable_OES_vertex_array_object","webgl_enable_WEBGL_draw_buffers","webgl_enable_WEBGL_multi_draw","emscriptenWebGLGet","computeUnpackAlignedImageSize","colorChannelsInGlTextureFormat","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","__glGetActiveAttribOrUniform","writeGLArray","registerWebGlEventCallback","ALLOC_NORMAL","ALLOC_STACK","allocate","writeStringToMemory","writeAsciiToMemory","setErrNo","demangle","stackTrace"].forEach((function(sym){"undefined"==typeof globalThis||Object.getOwnPropertyDescriptor(globalThis,sym)||Object.defineProperty(globalThis,sym,{configurable:!0,get(){var msg=`\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`,librarySymbol=sym;librarySymbol.startsWith("_")||(librarySymbol="$"+sym),msg+=` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`,isExportedByForceFilesystem(sym)&&(msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),warnOnce(msg)}}),unexportedRuntimeSymbol(sym)})),["run","addOnPreRun","addOnInit","addOnPreMain","addOnExit","addOnPostRun","addRunDependency","removeRunDependency","out","err","callMain","abort","wasmMemory","wasmExports","writeStackCookie","checkStackCookie","convertI32PairToI53Checked","stackSave","stackRestore","stackAlloc","ptrToString","zeroMemory","exitJS","getHeapMax","abortOnCannotGrowMemory","ENV","MONTH_DAYS_REGULAR","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR_CUMULATIVE","MONTH_DAYS_LEAP_CUMULATIVE","ERRNO_CODES","strError","DNS","Protocols","Sockets","initRandomFill","randomFill","timers","warnOnce","readEmAsmArgsArray","jstoi_s","handleException","keepRuntimeAlive","runtimeKeepalivePush","runtimeKeepalivePop","callUserCallback","maybeExit","asyncLoad","alignMemory","mmapAlloc","wasmTable","noExitRuntime","getCFunc","sigToWasmTypes","freeTableIndexes","functionsInTableMap","UTF8Decoder","UTF8ArrayToString","stringToUTF8Array","intArrayFromString","UTF16Decoder","stringToUTF8OnStack","writeArrayToMemory","JSEvents","specialHTMLTargets","findCanvasEventTarget","currentFullscreenStrategy","restoreOldWindowedStyle","UNWIND_CACHE","ExitStatus","doReadv","doWritev","safeSetTimeout","promiseMap","uncaughtExceptionCount","exceptionLast","exceptionCaught","Browser","getPreloadedImageData__data","wget","SYSCALLS","preloadPlugins","FS_createPreloadedFile","FS_modeStringToFlags","FS_getMode","FS_stdin_getChar_buffer","FS_stdin_getChar","FS_createPath","FS_createDevice","FS_readFile","FS_createDataFile","FS_createLazyFile","MEMFS","TTY","PIPEFS","SOCKFS","tempFixedLengthArray","miniTempWebGLFloatBuffers","miniTempWebGLIntBuffers","GL","AL","GLUT","EGL","GLEW","IDBStore","runAndAbortIfError","Asyncify","Fibers","SDL","SDL_gfx","allocateUTF8","allocateUTF8OnStack","print","printErr"].forEach(unexportedRuntimeSymbol),dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)},Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();run(),moduleRtn=readyPromise;for(const prop of Object.keys(Module))prop in moduleArg||Object.defineProperty(moduleArg,prop,{configurable:!0,get(){abort(`Access to module property ('${prop}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return moduleRtn});export default _createMicroPythonModule;export async function loadMicroPython(options){const{pystack:pystack,heapsize:heapsize,url:url,stdin:stdin,stdout:stdout,stderr:stderr,linebuffer:linebuffer}=Object.assign({pystack:2048,heapsize:1048576,linebuffer:!0},options);let Module={locateFile:(path,scriptDirectory)=>url||scriptDirectory+path};Module._textDecoder=new TextDecoder,void 0!==stdin&&(Module.stdin=stdin),void 0!==stdout&&(linebuffer?(Module._stdoutBuffer=[],Module.stdout=c=>{10===c?(stdout(Module._textDecoder.decode(new Uint8Array(Module._stdoutBuffer))),Module._stdoutBuffer=[]):Module._stdoutBuffer.push(c)}):Module.stdout=c=>stdout(new Uint8Array([c]))),void 0!==stderr&&(linebuffer?(Module._stderrBuffer=[],Module.stderr=c=>{10===c?(stderr(Module._textDecoder.decode(new Uint8Array(Module._stderrBuffer))),Module._stderrBuffer=[]):Module._stderrBuffer.push(c)}):Module.stderr=c=>stderr(new Uint8Array([c]))),Module=await _createMicroPythonModule(Module),globalThis.Module=Module,proxy_js_init();const pyimport=name=>{const value=Module._malloc(12);return Module.ccall("mp_js_do_import","null",["string","pointer"],[name,value]),proxy_convert_mp_to_js_obj_jsside_with_free(value)};return Module.ccall("mp_js_init","null",["number","number"],[pystack,heapsize]),Module.ccall("proxy_c_init","null",[],[]),{_module:Module,PyProxy:PyProxy,FS:Module.FS,globals:{__dict__:pyimport("__main__").__dict__,get(key){return this.__dict__[key]},set(key,value){this.__dict__[key]=value},delete(key){delete this.__dict__[key]}},registerJsModule(name,module){const value=Module._malloc(12);proxy_convert_js_to_mp_obj_jsside(module,value),Module.ccall("mp_js_register_js_module","null",["string","pointer"],[name,value]),Module._free(value)},pyimport:pyimport,runPython(code){const len=Module.lengthBytesUTF8(code),buf=Module._malloc(len+1);Module.stringToUTF8(code,buf,len+1);const value=Module._malloc(12);return Module.ccall("mp_js_do_exec","number",["pointer","number","pointer"],[buf,len,value]),Module._free(buf),proxy_convert_mp_to_js_obj_jsside_with_free(value)},async runPythonAsync(code){const len=Module.lengthBytesUTF8(code),buf=Module._malloc(len+1);Module.stringToUTF8(code,buf,len+1);const value=Module._malloc(12);Module.ccall("mp_js_do_exec_async","number",["pointer","number","pointer"],[buf,len,value],{async:!0}),Module._free(buf);const ret=proxy_convert_mp_to_js_obj_jsside_with_free(value);return ret instanceof PyProxyThenable?Promise.resolve(ret):ret},replInit(){Module.ccall("mp_js_repl_init","null",["null"])},replProcessChar:chr=>Module.ccall("mp_js_repl_process_char","number",["number"],[chr]),replProcessCharWithAsyncify:async chr=>Module.ccall("mp_js_repl_process_char","number",["number"],[chr],{async:!0})}}if(globalThis.loadMicroPython=loadMicroPython,"object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node&&process.argv.length>1){const path=await import("path"),url=await import("url"),pathToThisFile=path.resolve(url.fileURLToPath(import.meta.url)),pathPassedToNode=path.resolve(process.argv[1]);pathToThisFile.includes(pathPassedToNode)&&async function(){const fs=await import("fs");let heap_size=131072,contents="",repl=!0;for(let i=2;i<process.argv.length;i++)if("-X"===process.argv[i]&&i<process.argv.length-1){if(process.argv[i+1].includes("heapsize=")){heap_size=parseInt(process.argv[i+1].split("heapsize=")[1]);const suffix=process.argv[i+1].substr(-1).toLowerCase();"k"===suffix?heap_size*=1024:"m"===suffix&&(heap_size*=1048576),++i}}else contents+=fs.readFileSync(process.argv[i],"utf8"),repl=!1;!1===process.stdin.isTTY&&(contents=fs.readFileSync(0,"utf8"),repl=!1);const mp=await loadMicroPython({heapsize:heap_size,stdout:data=>process.stdout.write(data),linebuffer:!1});if(repl)mp.replInit(),process.stdin.setRawMode(!0),process.stdin.on("data",(data=>{for(let i=0;i<data.length;i++)mp.replProcessCharWithAsyncify(data[i]).then((result=>{result&&process.exit()}))}));else{if(contents.endsWith("asyncio.run(main())\n")){const asyncio=mp.pyimport("asyncio");asyncio.run=async task=>{await asyncio.create_task(task)}}try{mp.runPython(contents)}catch(error){if("PythonError"!==error.name)throw error;"SystemExit"===error.type||console.error(error.message)}}}()}class PyProxy{constructor(ref){this._ref=ref}static toJs(js_obj){if(!(js_obj instanceof PyProxy))return js_obj;const type=Module.ccall("proxy_c_to_js_get_type","number",["number"],[js_obj._ref]);if(1===type||2===type){const array_ref=Module._malloc(8),item=Module._malloc(12);Module.ccall("proxy_c_to_js_get_array","null",["number","pointer"],[js_obj._ref,array_ref]);const len=Module.getValue(array_ref,"i32"),items_ptr=Module.getValue(array_ref+4,"i32"),js_array=[];for(let i=0;i<len;++i){Module.ccall("proxy_convert_mp_to_js_obj_cside","null",["pointer","pointer"],[Module.getValue(items_ptr+4*i,"i32"),item]);const js_item=proxy_convert_mp_to_js_obj_jsside(item);js_array.push(PyProxy.toJs(js_item))}return Module._free(array_ref),Module._free(item),js_array}if(3===type){const map_ref=Module._malloc(8),item=Module._malloc(12);Module.ccall("proxy_c_to_js_get_dict","null",["number","pointer"],[js_obj._ref,map_ref]);const alloc=Module.getValue(map_ref,"i32"),table_ptr=Module.getValue(map_ref+4,"i32"),js_dict={};for(let i=0;i<alloc;++i){const mp_key=Module.getValue(table_ptr+8*i,"i32");if(mp_key>8){Module.ccall("proxy_convert_mp_to_js_obj_cside","null",["pointer","pointer"],[mp_key,item]);const js_key=proxy_convert_mp_to_js_obj_jsside(item),mp_value=Module.getValue(table_ptr+8*i+4,"i32");Module.ccall("proxy_convert_mp_to_js_obj_cside","null",["pointer","pointer"],[mp_value,item]);const js_value=proxy_convert_mp_to_js_obj_jsside(item);js_dict[js_key]=PyProxy.toJs(js_value)}}return Module._free(map_ref),Module._free(item),js_dict}return js_obj}}const py_proxy_handler={isExtensible:()=>!0,ownKeys(target){const value=Module._malloc(12);Module.ccall("proxy_c_to_js_dir","null",["number","pointer"],[target._ref,value]);const dir=proxy_convert_mp_to_js_obj_jsside_with_free(value);return PyProxy.toJs(dir).filter((attr=>!attr.startsWith("__")))},getOwnPropertyDescriptor:(target,prop)=>({value:target[prop],enumerable:!0,writable:!0,configurable:!0}),has:(target,prop)=>Module.ccall("proxy_c_to_js_has_attr","number",["number","string"],[target._ref,prop]),get(target,prop){if("_ref"===prop)return target._ref;if("then"===prop)return null;if(prop===Symbol.iterator){const iter_ref=Module.ccall("proxy_c_to_js_get_iter","number",["number"],[target._ref]);return function*(){const value=Module._malloc(12);for(;;){if(!Module.ccall("proxy_c_to_js_iternext","number",["number","pointer"],[iter_ref,value]))break;yield proxy_convert_mp_to_js_obj_jsside(value)}Module._free(value)}}const value=Module._malloc(12);return Module.ccall("proxy_c_to_js_lookup_attr","null",["number","string","pointer"],[target._ref,prop,value]),proxy_convert_mp_to_js_obj_jsside_with_free(value)},set(target,prop,value){const value_conv=Module._malloc(12);proxy_convert_js_to_mp_obj_jsside(value,value_conv);const ret=Module.ccall("proxy_c_to_js_store_attr","number",["number","string","number"],[target._ref,prop,value_conv]);return Module._free(value_conv),ret},deleteProperty:(target,prop)=>Module.ccall("proxy_c_to_js_delete_attr","number",["number","string"],[target._ref,prop])};class PyProxyThenable{constructor(ref){this._ref=ref}then(resolve,reject){const values=Module._malloc(36);return proxy_convert_js_to_mp_obj_jsside(resolve,values+12),proxy_convert_js_to_mp_obj_jsside(reject,values+24),Module.ccall("proxy_c_to_js_resume","null",["number","pointer"],[this._ref,values]),proxy_convert_mp_to_js_obj_jsside_with_free(values)}}const PROXY_JS_REF_NUM_STATIC=2,PROXY_KIND_MP_EXCEPTION=-1,PROXY_KIND_MP_NULL=0,PROXY_KIND_MP_NONE=1,PROXY_KIND_MP_BOOL=2,PROXY_KIND_MP_INT=3,PROXY_KIND_MP_FLOAT=4,PROXY_KIND_MP_STR=5,PROXY_KIND_MP_CALLABLE=6,PROXY_KIND_MP_GENERATOR=7,PROXY_KIND_MP_JSPROXY=9,PROXY_KIND_JS_UNDEFINED=0,PROXY_KIND_JS_NULL=1,PROXY_KIND_JS_BOOLEAN=2,PROXY_KIND_JS_INTEGER=3,PROXY_KIND_JS_DOUBLE=4,PROXY_KIND_JS_STRING=5,PROXY_KIND_JS_OBJECT=6,PROXY_KIND_JS_PYPROXY=7;class PythonError extends Error{constructor(exc_type,exc_details){super(exc_details),this.name="PythonError",this.type=exc_type}}function proxy_js_init(){globalThis.proxy_js_ref=[globalThis,void 0],globalThis.proxy_js_ref_next=PROXY_JS_REF_NUM_STATIC,globalThis.pyProxyFinalizationRegistry=new FinalizationRegistry((cRef=>{Module.ccall("proxy_c_free_obj","null",["number"],[cRef])}))}function proxy_js_add_obj(js_obj){for(;proxy_js_ref_next<proxy_js_ref.length;){if(void 0===proxy_js_ref[proxy_js_ref_next]){const id=proxy_js_ref_next;return++proxy_js_ref_next,proxy_js_ref[id]=js_obj,id}++proxy_js_ref_next}const id=proxy_js_ref.length;return proxy_js_ref[id]=js_obj,proxy_js_ref_next=proxy_js_ref.length,id}function proxy_convert_js_to_mp_obj_jsside(js_obj,out){let kind;if(void 0===js_obj)kind=PROXY_KIND_JS_UNDEFINED;else if(null===js_obj)kind=PROXY_KIND_JS_NULL;else if("boolean"==typeof js_obj)kind=PROXY_KIND_JS_BOOLEAN,Module.setValue(out+4,js_obj,"i32");else if("number"==typeof js_obj)if(Number.isInteger(js_obj))kind=PROXY_KIND_JS_INTEGER,Module.setValue(out+4,js_obj,"i32");else{kind=PROXY_KIND_JS_DOUBLE;const temp=out+4&-8;Module.setValue(temp,js_obj,"double");const double_lo=Module.getValue(temp,"i32"),double_hi=Module.getValue(temp+4,"i32");Module.setValue(out+4,double_lo,"i32"),Module.setValue(out+8,double_hi,"i32")}else if("string"==typeof js_obj){kind=PROXY_KIND_JS_STRING;const len=Module.lengthBytesUTF8(js_obj),buf=Module._malloc(len+1);Module.stringToUTF8(js_obj,buf,len+1),Module.setValue(out+4,len,"i32"),Module.setValue(out+8,buf,"i32")}else if(js_obj instanceof PyProxy||"function"==typeof js_obj&&"_ref"in js_obj||js_obj instanceof PyProxyThenable)kind=PROXY_KIND_JS_PYPROXY,Module.setValue(out+4,js_obj._ref,"i32");else{kind=PROXY_KIND_JS_OBJECT;const id=proxy_js_add_obj(js_obj);Module.setValue(out+4,id,"i32")}Module.setValue(out+0,kind,"i32")}function proxy_convert_js_to_mp_obj_jsside_force_double_proxy(js_obj,out){if(js_obj instanceof PyProxy||"function"==typeof js_obj&&"_ref"in js_obj||js_obj instanceof PyProxyThenable){const kind=PROXY_KIND_JS_OBJECT,id=proxy_js_add_obj(js_obj);Module.setValue(out+4,id,"i32"),Module.setValue(out+0,kind,"i32")}else proxy_convert_js_to_mp_obj_jsside(js_obj,out)}function proxy_convert_mp_to_js_obj_jsside(value){const kind=Module.getValue(value,"i32");let obj;if(kind===PROXY_KIND_MP_EXCEPTION){const str_len=Module.getValue(value+4,"i32"),str_ptr=Module.getValue(value+8,"i32"),str=Module.UTF8ToString(str_ptr,str_len);Module._free(str_ptr);const str_split=str.split("");throw new PythonError(str_split[0],str_split[1])}if(kind===PROXY_KIND_MP_NULL)throw new Error("NULL object");if(kind===PROXY_KIND_MP_NONE)obj=null;else if(kind===PROXY_KIND_MP_BOOL)obj=!!Module.getValue(value+4,"i32");else if(kind===PROXY_KIND_MP_INT)obj=Module.getValue(value+4,"i32");else if(kind===PROXY_KIND_MP_FLOAT){const temp=value+4&-8,double_lo=Module.getValue(value+4,"i32"),double_hi=Module.getValue(value+8,"i32");Module.setValue(temp,double_lo,"i32"),Module.setValue(temp+4,double_hi,"i32"),obj=Module.getValue(temp,"double")}else if(kind===PROXY_KIND_MP_STR){const str_len=Module.getValue(value+4,"i32"),str_ptr=Module.getValue(value+8,"i32");obj=Module.UTF8ToString(str_ptr,str_len)}else if(kind===PROXY_KIND_MP_JSPROXY){const id=Module.getValue(value+4,"i32");obj=proxy_js_ref[id]}else{const id=Module.getValue(value+4,"i32");if(kind===PROXY_KIND_MP_CALLABLE)obj=(...args)=>function(target,argumentsList){let args=0;for(;argumentsList.length>0&&void 0===argumentsList[argumentsList.length-1];)argumentsList.pop();if(argumentsList.length>0){args=Module._malloc(3*argumentsList.length*4);for(const i in argumentsList)proxy_convert_js_to_mp_obj_jsside(argumentsList[i],args+3*i*4)}const value=Module._malloc(12);Module.ccall("proxy_c_to_js_call","null",["number","number","number","pointer"],[target,argumentsList.length,args,value]),argumentsList.length>0&&Module._free(args);const ret=proxy_convert_mp_to_js_obj_jsside_with_free(value);return ret instanceof PyProxyThenable?Promise.resolve(ret):ret}(id,args),obj._ref=id;else if(kind===PROXY_KIND_MP_GENERATOR)obj=new PyProxyThenable(id);else{const target=new PyProxy(id);obj=new Proxy(target,py_proxy_handler)}globalThis.pyProxyFinalizationRegistry.register(obj,id)}return obj}function proxy_convert_mp_to_js_obj_jsside_with_free(value){const ret=proxy_convert_mp_to_js_obj_jsside(value);return Module._free(value),ret}
\ No newline at end of file
diff --git a/assets/blog/micropython/micropython.wasm b/assets/blog/micropython/micropython.wasm
new file mode 100755
index 0000000..333f897
Binary files /dev/null and b/assets/blog/micropython/micropython.wasm differ
diff --git a/assets/blog/micropython/simulator.js b/assets/blog/micropython/simulator.js
new file mode 100644
index 0000000..796b903
--- /dev/null
+++ b/assets/blog/micropython/simulator.js
@@ -0,0 +1,117 @@
+class USBCPowerSupplySimulator extends HTMLElement {
+  async init_mp(ctx, stdoutWriter) {
+    let mp = await loadMicroPython({
+      stdout: stdoutWriter,
+      stderr: stdoutWriter,
+    });
+
+    mp.registerJsModule("console", { log: (s) => console.log(s) });
+    mp.registerJsModule("time", {
+      sleep: async (s) => await new Promise((r) => setTimeout(r, s * 1000)),
+    });
+    mp.registerJsModule("display", {
+      draw: (buf) => {
+        let bytes = [...buf].flatMap((x) => [x, x, x, 255]);
+        let image = new ImageData(new Uint8ClampedArray(bytes), 240, 240);
+        ctx.putImageData(image, 0, 0);
+      },
+    });
+
+    return mp;
+  }
+
+  async init_editor() {
+    const resp = await fetch("/assets/blog/micropython/example_micropython.py");
+    const program = await resp.text();
+
+    // Create an initial state for the view
+    const initialState = cm6.createEditorState(program);
+    let view = cm6.createEditorView(
+      initialState,
+      this.shadow.getElementById("editor")
+    );
+    return view;
+  }
+
+  async setup() {
+    this.render();
+
+    const canvas = this.shadow.querySelector("canvas");
+    const ctx = canvas.getContext("2d");
+
+    const mp_console = this.shadow.getElementById("micropython-stdout");
+    const stdoutWriter = (line) => {
+      mp_console.innerText += line + "\n";
+      mp_console.scrollTo(0, mp_console.scrollHeight);
+    };
+
+    const [mp, view] = await Promise.all([
+      this.init_mp(ctx, stdoutWriter),
+      this.init_editor(),
+    ]);
+
+    const runPython = async () => {
+      mp_console.innerText = "";
+      let mp = await this.init_mp(ctx, stdoutWriter);
+      try {
+        await mp.runPythonAsync(view.state.doc.toString());
+      } catch (e) {
+        stdoutWriter(e);
+      }
+    };
+
+    const run_button = this.shadow.getElementById("run");
+    run_button.onclick = runPython;
+    runPython();
+  }
+
+  constructor() {
+    super();
+    this.shadow = this.attachShadow({ mode: "open" });
+  }
+
+  connectedCallback() {
+    this.setup().catch(console.error);
+  }
+
+  render() {
+    this.shadow.innerHTML = `
+        <style>
+            //The shadow root can be styled like a container
+            :host {
+                display: flex;
+                flex-direction: column;
+                align-items: center;
+            }
+            pre#micropython-stdout {
+                overflow-y: auto;
+                width: 80%;
+                white-space: pre-wrap;
+                height: 5em;
+                background-color: #d1d1d136;
+                border: 1px black solid;
+                border-radius: 5px;
+                padding: 5px;
+            }
+            button {
+                width: 5em;
+                align-self: flex-start;
+            }
+
+            .screen {
+            width: 240px;
+            height: 240px;
+            border-radius: 50%;
+            border: solid 1px black;
+            align-self: center;
+            }
+        </style>
+        <div id="editor"></div>
+        <button id=run title="Run code (Ctrl-Enter)" aria-title="Run code (Ctrl-Enter)">Run</button>
+        <canvas height="240" width="240" class = screen></canvas>
+        <pre id="micropython-stdout"></pre>
+        `;
+  }
+}
+
+customElements.define("usbc-power-supply-simulator", USBCPowerSupplySimulator);
diff --git a/assets/blog/micropython/thumbnail.png b/assets/blog/micropython/thumbnail.png
new file mode 100644
index 0000000..a10c294
Binary files /dev/null and b/assets/blog/micropython/thumbnail.png differ
diff --git a/assets/blog/micropython/xkcd.png b/assets/blog/micropython/xkcd.png
new file mode 100644
index 0000000..0ff54f1
Binary files /dev/null and b/assets/blog/micropython/xkcd.png differ